'\" t .\" Title: unshare .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.20 .\" Date: 2024-04-27 .\" Manual: Корисничке наредбе .\" Source: util-linux 2.40 .\" Language: English .\" .TH "UNSHARE" "1" "2024-04-27" "util\-linux 2.40" "Корисничке наредбе" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "НАЗИВ" unshare \- извршава програм у новим називним просторима .SH "УВОД" .sp \fBunshare\fP [options] [\fIprogram\fP [\fIarguments\fP]] .SH "ОПИС" .sp Наредба \fBunshare\fP ствара нови називни простор (као што је наведено опцијама линије наредби описаним испод) и затим извршава наведени \fIпрограм\fP. Ако \fIпрограм\fP није дат, тад се покреће „${SHELL}“ (основно: \fI/bin/sh\fP). .sp По основи, нови називни простор постоји само све док има процесе чланове. Нови називни простор се може учинити постојаним чак и када нема процеса чланова тако што ћете повезати качење „/proc/\fIpid\fP/ns/\fIврста\fP датотеке“ на путању система датотека. Називни простор који је на овај начин постао постојан може се накнадно унети са \fBnsenter\fP(1) чак и након окончања \fIпрограма\fP (осим ПИД називних простора где је потребан трајно покренут процес покретања). Једном када трајни називни простор више није потребан, може се опозвати коришћењем \fBumount\fP(8) за уклањање повезаног качења. Погледајте одељак \fBПРИМЕРИ\fP за више о томе. .sp \fBunshare\fP since util\-linux version 2.36 uses \fI/proc/[pid]/ns/pid_for_children\fP and \fI/proc/[pid]/ns/time_for_children\fP files for persistent PID and TIME namespaces. This change requires Linux kernel 4.17 or newer. .sp Следеће врсте називних простора се могу направити са \fBunshare\fP: .sp \fBmount namespace\fP .RS 4 Качење и откачињање система датотека неће деловати на остатак система, изузев за системе датотека који су изричито означени као дељени (са \fBmount \-\-make\-shared\fP; видите \fI/proc/self/mountinfo\fP или \fBfindmnt \-o+ПРОСТИРАЊЕ\fP за опције \fBshared\fP). За више о томе, видите \fBmount_namespaces\fP(7). .sp \fBunshare\fP since util\-linux version 2.27 automatically sets propagation to \fBprivate\fP in a new mount namespace to make sure that the new namespace is really unshared. It\(cqs possible to disable this feature with option \fB\-\-propagation unchanged\fP. Note that \fBprivate\fP is the kernel default. .RE .sp \fBUTS namespace\fP .RS 4 Постављање назива домаћина или назива домена неће утицати на остатак система. За више о томе, видите \fButs_namespaces\fP(7). .RE .sp \fBIPC namespace\fP .RS 4 Процес ће имати независтан називни простор за редове POSIX порука као и за редове порука System V, поставке семафора и сегменте дељене меморије. За више о томе, видите \fBipc_namespaces\fP(7). .RE .sp \fBnetwork namespace\fP .RS 4 Процес ће имати независне IPv4 и IPv6 спремнике, табеле IP рутине, правила мрежне баријере, сзабла \fI/proc/net\fP и \fI/sys/class/net\fP директоријума, прикључница, итд. За више о томе, видите \fBnetwork_namespaces\fP(7). .RE .sp \fBPID namespace\fP .RS 4 Пород ће имати посебан скуп мапирања ПИД\-у\-процес од свог родитеља. За више детаља, погледајте \fBpid_namespaces\fP(7). .RE .sp \fBcgroup namespace\fP .RS 4 Процес ће имати виртуелизовани преглед \fI/proc/self/cgroup\fP\-е, а нова „cgroup“ качења биће укорењена у „cgroup“ корен називног простора. За више о томе, видите \fBcgroup_namespaces\fP(7). .RE .sp \fBuser namespace\fP .RS 4 Процес ће имати различити скуп УИД\-ова, ГИД\-ова и могућности. За више о томе, видите \fBuser_namespaces\fP(7). .RE .sp \fBtime namespace\fP .RS 4 Процес може имати другачији преглед \fBCLOCK_MONOTONIC\fP\-а и/или \fBCLOCK_BOOTTIME\fP\-а који се могу изменити коришћењем \fI/proc/self/timens_offsets\fP. За више о томе, видите \fBtime_namespaces\fP(7). .RE .SH "ОПЦИЈЕ" .sp \fB\-i\fP, \fB\-\-ipc\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови „IPC“ називни простор. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP. .RE .sp \fB\-m\fP, \fB\-\-mount\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови називни простор качења. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP. Знајте да \fIдатотека\fP мора да се налази на качењу чија врста простирања није \fBдељена\fP (или је резултат грешке). Користите наредбу \fBfindmnt \-o+ПРОСТИРАЊЕ\fP када нисте сигурни у тренутну поставку. Погледајте и примере у наставку. .RE .sp \fB\-n\fP, \fB\-\-net\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови називни простор мреже. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP. .RE .sp \fB\-p\fP, \fB\-\-pid\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови називни простор ПИД\-а. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP. (Стварање трајног ПИД називног простора неће успети ако се и \fB\-\-fork\fP опција такође не наведе.) .sp Видите такође опцију \fB\-\-fork\fP и \fB\-\-mount\-proc\fP. .RE .sp \fB\-u\fP, \fB\-\-uts\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови простор времена УТС\-а. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP .RE .sp \fB\-U\fP, \fB\-\-user\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови називни простор корисника. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP .RE .sp \fB\-C\fP, \fB\-\-cgroup\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови „cgroup“ називни простор. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP. .RE .sp \fB\-T\fP, \fB\-\-time\fP[\fB=\fP\fIдатотека\fP] .RS 4 Ствара нови називни простор времена. Ако је \fIдатотека\fP наведена, тада се називни простор чини трајним стварањем свезе качења на \fIдатотеци\fP. Опције \fB\-\-monotonic\fP и \fB\-\-boottime\fP се могу користити за навођење одговарајућег помераја у временском називном простору. .RE .sp \fB\-f\fP, \fB\-\-fork\fP .RS 4 Клонира наведени \fIпрограм\fP као подређени процес \fBunshare\fP\-а уместо да га покрене непосредно. Ово је корисно када правите нови ПИД називни простор. Знајте да када \fBunshare\fP чека на процес порода, тада занемарује \fBSIGINT\fP и \fBSIGTERM\fP и не прослеђује никакве сигнале породу. Неопходно је слати сигнале процесу порода. .RE .sp \fB\-\-keep\-caps\fP .RS 4 Када је опција \fB\-\-user\fP дата, осигурава да су могућности гарантоване у корисничком називном простору очуване у проистеклом процесу. .RE .sp \fB\-\-kill\-child\fP[\fB=\fP\fIназив\-сигнала\fP] .RS 4 Када се \fBunshare\fP оконча, чини да се \fIназив\-сигнала\fP пошаље клонираном процесу порода. У комбинацији са \fB\-\-pid\fP ово омогућава лако и поуздано убијање читавог стабла процеса испод \fBunshare\fP. Ако није дато, \fIназив\-сигнала\fP се по основи пребацује на \fBSIGKILL\fP. Ова опција подразумева \fB\-\-fork\fP. .RE .sp \fB\-\-mount\-proc\fP[\fB=\fP\fIтачка\-качења\fP] .RS 4 Непосредно пре покретања програма, качи „proc“ систем датотека на \fIтачку\-качења\fP (основно је \fI/proc\fP). Ово је корисно када правите нови називни простор ПИД\-а. Такође подразумева стварање новог називног простора качења јер би \fI/proc\fP качење иначе покварило постојеће програме на систему. Нови „proc“ систем датотека је изричито прикачен као приватни (са \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-map\-user=\fP\fIуид|назив\fP .RS 4 Покреће програм само након што је текући ефективни ИД корисника мапиран на \fIуид\fP. Ако је ова опција наведена више пута, последње појављивање има предност. Ова опција подразумева \fB\-\-user\fP. .RE .sp \fB\-\-map\-users=\fP\fIinneruid:outeruid:count\fP|\fBauto\fP|\fBall\fP .RS 4 Run the program only after the block of user IDs of size \fIcount\fP beginning at \fIouteruid\fP has been mapped to the block of user IDs beginning at \fIinneruid\fP. This mapping is created with \fBnewuidmap\fP(1) if \fBunshare\fP was run unprivileged. If the range of user IDs overlaps with the mapping specified by \fB\-\-map\-user\fP, then a "hole" will be removed from the mapping. This may result in the highest user ID of the mapping not being mapped. Use \fB\-\-map\-users\fP multiple times to map more than one block of user IDs. The special value \fBauto\fP will map the first block of user IDs owned by the effective user from \fI/etc/subuid\fP to a block starting at user ID 0. The special value \fBall\fP will create a pass\-through map for every user ID available in the parent namespace. This option implies \fB\-\-user\fP. .sp Пре „util\-linux“ издања 2.39, ова опција је очекивала аргумент раздвојен зарезима у облику \fIouteruid,inneruid,count\fP, али је тај формат сада застарео због доследности са редоследом који се користи у \fI/proc/[пид]/уид_мап\fP и \fIX\-mount.idmap\fP опција качења. .RE .sp \fB\-\-map\-group=\fP\fIгид|назив\fP .RS 4 Покреће програм само након што је текући ефективни ИД корисника мапиран на \fIгид\fP. Ако је ова опција наведена више пута, последње појављивање има предност. Ова опција подразумева \fB\-\-setgroups=deny\fP и \fB\-\-user\fP. .RE .sp \fB\-\-map\-groups=\fP\fIinnergid:outergid:count\fP|\fBauto\fP|\fBall\fP .RS 4 Run the program only after the block of group IDs of size \fIcount\fP beginning at \fIoutergid\fP has been mapped to the block of group IDs beginning at \fIinnergid\fP. This mapping is created with \fBnewgidmap\fP(1) if \fBunshare\fP was run unprivileged. If the range of group IDs overlaps with the mapping specified by \fB\-\-map\-group\fP, then a "hole" will be removed from the mapping. This may result in the highest group ID of the mapping not being mapped. Use \fB\-\-map\-groups\fP multiple times to map more than one block of group IDs. The special value \fBauto\fP will map the first block of user IDs owned by the effective user from \fI/etc/subgid\fP to a block starting at group ID 0. The special value \fBall\fP will create a pass\-through map for every group ID available in the parent namespace. This option implies \fB\-\-user\fP. .sp Пре „util\-linux“ издања 2.39, ова опција је очекивала аргумент раздвојен зарезима у облику \fIoutergid,innergid,count\fP, али је тај формат сада застарео због доследности са редоследом који се користи у \fI/proc/[пид]/гид_мап\fP и \fIX\-mount.idmap\fP опцији качења. .RE .sp \fB\-\-map\-auto\fP .RS 4 Мапира први блок корисникових ИД\-ова у власништву ефективног корисника из \fI/etc/subuid\fP на блок који почиње на корисниковом ИД\-у 0. На исти начин, такође мапира први блок ИД\-ова групе у власништву ефективне групе из \fI/etc/subgid\fP на блок који почиње на ИД\-у групе 0. Ова опција је замишљена да ради са општим случајем где први блок подређених ИД\-ова корисника и групе може да мапира читав простор ИД\-а корисника и групе. Ова опција је еквивалент за навођење \fB\-\-map\-users=auto\fP и \fB\-\-map\-groups=auto\fP. .RE .sp \fB\-r\fP, \fB\-\-map\-root\-user\fP .RS 4 Покреће програм тек након што се тренутни стварни ИД\-ови корисника и групе мапирају у УИД и ГИД суперкорисника у новоствореном корисничком називном простору. Ово омогућава пригодно добијање могућности потребних за управљање различитим аспектима новостворених наменских простора (као што је подешавање сучеља у мрежном називном простору или качење система датотека у називном простору качења) чак и када се покрену као непривилеговани. Као само функција погодности, не подржава софистицираније случајеве употребе, као што је мапирање више опсега УИД\-а и ГИД\-ова. Ова опција подразумева \fB\-\-setgroups=deny\fP и \fB\-\-user\fP. Ова опција је еквивалентна са \fB\-\-map\-user=0 \-\-map\-group=0\fP. .RE .sp \fB\-c\fP, \fB\-\-map\-current\-user\fP .RS 4 Покреће програм тек након што се тренутни стварни ИД\-ови корисника и групе мапирају на исти УИД и ГИД у новоствореном корисничком наменском простору. Ова опција подразумева \fB\-\-setgroups=deny\fP и \fB\-\-user\fP. Ова опција је еквивалентна са \fB\-\-map\-user=$(id \-ru) \-\-map\-group=$(id \-rg)\fP. .RE .sp \fB\-\-propagation private\fP|\fBshared\fP|\fBslave\fP|\fBunchanged\fP .RS 4 Дубински поставља опцију простирања качења у новом називном простору качења. Основно је постављање простирања на \fIprivate\fP. Могуће је онемогућити ову функцију аргументом \fBunchanged\fP. Опција се тихо занемарује када се називни простор качења (\fB\-\-mount\fP) не захтева. .RE .sp \fB\-\-setgroups allow\fP|\fBdeny\fP .RS 4 Допушта или забрањује \fBsetgroups\fP(2) системски позив у корисничком називном простору. .sp Да би био у могућности да позове \fBsetgroups\fP(2), процес позивања мора да има барем \fBCAP_SETGID\fP. Али од Линукса 3.19 примењује се још једно ограничење: кернел даје дозволу за позивање \fBsetgroups\fP(2) само након што је ГИД мапа (\fB/proc/\fP\fIпид\fP*/гид_мапа*) постављена. У ГИД мапу може да пише администратор када је \fBsetgroups\fP(2) омогућено (тј. \fBallow\fP, подразумевано), а ГИД мапа постаје уписива непривилегованим процесима када је \fBsetgroups\fP(2) трајно онемогућено (са \fBdeny\fP). .RE .sp \fB\-R\fP, \fB\-\-root=\fP\fIдир\fP .RS 4 извршава наредбу са кореним директоријумом постављеним на \fIдир\fP. .RE .sp \fB\-w\fP, \fB\-\-wd=\fP\fIдир\fP .RS 4 мења радни директоријум у \fIдир\fP. .RE .sp \fB\-S\fP, \fB\-\-setuid\fP \fIуиб\fP .RS 4 Поставља ИД корисника који ће се користити у унесеном називном простору. .RE .sp \fB\-G\fP, \fB\-\-setgid\fP \fIГИБ\fP .RS 4 Поставља ИД групе који ће се користити у унесеном називном простору и одбацује додатне групе. .RE .sp \fB\-\-monotonic\fP \fIпомерај\fP .RS 4 Поставља померај \fBCLOCK_MONOTONIC\fP који ће се користити у унесеном временском називном простору. Ова опција захтева поништавање дељења временског називног простора са \fB\-\-time\fP. .RE .sp \fB\-\-boottime\fP \fIпомерај\fP .RS 4 Поставља померај \fBCLOCK_BOOTTIME\fP који ће се користити у унесеном временском називном простору. Ова опција захтева поништавање дељења временског називног простора са \fB\-\-time\fP. .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 Приказује текст помоћи и излази. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 Исписује издање и излази. .RE .SH "БЕЛЕШКЕ" .sp Системи датотека „proc“ и „sysfs“ који се каче као корени у корисничком називном простору морају бити ограничени тако да мање привилеговани корисник не може да добије већи приступ осетљивим датотекама које је привилегованији корисник учинио недоступним. Укратко, правило за „proc“ и „sysfs“ је што је могуће ближе свезивању качења. .SH "ПРИМЕРИ" .sp Следећа наредба ствара ПИД називни простор, користећи \fB\-\-fork\fP да би се осигурало да се извршена наредба обавља у подређеном процесу који (као први процес у називном простору) има ПИД 1. Опција \fB\-\-mount\-proc\fP обезбеђује да се нови називни простор качења истовремено прави и да се качи нови \fBproc\fP(5) систем датотека који садржи информације које одговарају новом ПИД називном простору. Када се наредба \fBreadlink\fP(1) заврши, нови називни простори се самостално руше. .sp .if n .RS 4 .nf .fam C # unshare \-\-fork \-\-pid \-\-mount\-proc readlink /proc/self 1 .fam .fi .if n .RE .sp Као непривилеговани корисник, ствара нови кориснички називни простор где су корисничка уверења мапирана на ИД\-ове корена унутар називног простора: .sp .if n .RS 4 .nf .fam C $ id \-u; id \-g 1000 1000 $ unshare \-\-user \-\-map\-root\-user \(rs sh \-c \*(Aqwhoami; cat /proc/self/uid_map /proc/self/gid_map\*(Aq root 0 1000 1 0 1000 1 .fam .fi .if n .RE .sp Као непривилеговани корисник, ствара кориснички називни простор где су првих 65536 ИД\-ова сви мапирани, а креденцијали корисника су мапирани на корене ИД\-ове унутар називног простора. Мапа је одређена подређеним ИД\-овима додељеним у \fBsubuid\fP(5) и \fBsubgid\fP(5). Приказује ово мапирање стварањем датотеке са ИД\-ом 1 корисника и ИД\-ом 1 групе. Укратко, приказана су само мапирања ИД\-а корисника: .sp .if n .RS 4 .nf .fam C $ id \-u 1000 $ cat /etc/subuid 1000:100000:65536 $ unshare \-\-user \-\-map\-auto \-\-map\-root\-user # id \-u 0 # cat /proc/self/uid_map 0 1000 1 1 100000 65535 # touch file; chown 1:1 file # ls \-ln \-\-time\-style=+ file \-rw\-r\-\-r\-\- 1 1 1 0 file # exit $ ls \-ln \-\-time\-style=+ file \-rw\-r\-\-r\-\- 1 100000 100000 0 file .fam .fi .if n .RE .sp Прва од следећих наредби ствара нови трајни UTS називни простор и мења назив домаћина како се види у том називном простору. Називни простор се затим уноси са \fBnsenter\fP(1) да би се приказао измењен назив домаћина; овај корак показује да UTS називни простор наставља да постоји иако називни простор није имао процесе чланове након што се окончала наредба \fBunshare\fP. Називни простор се затим уништава уклањањем свезног качења. .sp .if n .RS 4 .nf .fam C # touch /root/uts\-ns # unshare \-\-uts=/root/uts\-ns hostname FOO # nsenter \-\-uts=/root/uts\-ns hostname FOO # umount /root/uts\-ns .fam .fi .if n .RE .sp Следеће наредбе успостављају постојан називни простор качења на који упућује свеза качења \fI/root/namespace/mnt\fP. Да би се осигурало да стварање тог свезивања качења буде успешно, родитељски директоријум (\fI/root/namespaces\fP) је учињен свезом качења чија врста простирања није \fBshared\fP. .sp .if n .RS 4 .nf .fam C # mount \-\-bind /root/namespaces /root/namespaces # mount \-\-make\-private /root/namespaces # touch /root/namespaces/mnt # unshare \-\-mount=/root/namespaces/mnt .fam .fi .if n .RE .sp Следеће наредбе показују коришћење опције \fB\-\-kill\-child\fP приликом стварања ПИД називног пропстора, да би се осигурало да када је \fBunshare\fP убијено, сви процеси у ПИД називном простору су убијени. .sp .if n .RS 4 .nf .fam C # set +m # Не исписује поруке стања посла # unshare \-\-pid \-\-fork \-\-mount\-proc \-\-kill\-child \-\- \(rs bash \-\-norc \-c \*(Aq(sleep 555 &) && (ps a &) && sleep 999\*(Aq & [1] 53456 # ПИД КОНЗ СТАЊЕ ВРЕМЕ НАРЕДБА 1 pts/3 S+ 0:00 sleep 999 3 pts/3 S+ 0:00 sleep 555 5 pts/3 R+ 0:00 ps a # ps h \-o \*(Aqcomm\*(Aq $! # Показује да је позадински посао „unshare(1)“ unshare # kill $! # Убија „unshare(1)“ # pidof sleep .fam .fi .if n .RE .sp Наредба \fBpidof\fP(1) не исписује никакав излаз, јер су \fBsleep\fP процеси убијени. Тачније, када је процес \fBsleep\fP који има ПИД 1 у називном простору (тј. покретачки процес називног простора) био убијен, то је довело до тога да сви остали процеси у називном простору буду убијени. Насупрот томе, слична серија наредби где се опција \fB\-\-kill\-child\fP не користи показује да када се \fBunshare\fP оконча, процеси у ПИД називном простору нису убијени: .sp .if n .RS 4 .nf .fam C # unshare \-\-pid \-\-fork \-\-mount\-proc \-\- \(rs bash \-\-norc \-c \*(Aq(sleep 555 &) && (ps a &) && sleep 999\*(Aq & [1] 53479 # ПИД КОНЗ СТАЊЕ ВРЕМЕ НАРЕДБА 1 pts/3 S+ 0:00 sleep 999 3 pts/3 S+ 0:00 sleep 555 5 pts/3 R+ 0:00 ps a # kill $! # pidof sleep 53482 53480 .fam .fi .if n .RE .sp Следећи пример показује стварање временског називног простора где је сат времена подизања система постављен да показује неколико година у прошлости: .sp .if n .RS 4 .nf .fam C # uptime \-p # Приказује „uptime“ у почетном временском називном простору up 21 сат, 30 минута # unshare \-\-time \-\-fork \-\-boottime 300000000 uptime \-p up 9 година, 28 седмице, 1 дан, 2 сата, 50 минута .fam .fi .if n .RE .SH "АУТОРИ" .sp .MTO "dottedmag\(atdottedmag.net" "Mikhail Gusarov" "," .MTO "kzak\(atredhat.com" "Karel Zak" "" .SH "ПОГЛЕДАЈТЕ ТАКОЂЕ" .sp \fBnewuidmap\fP(1), \fBnewgidmap\fP(1), \fBclone\fP(2), \fBunshare\fP(2), \fBnamespaces\fP(7), \fBmount\fP(8) .SH "ПРИЈАВЉИВАЊЕ ГРЕШАКА" .sp За пријављивање грешака, користите пратиоца грешака на \c .URL "https://github.com/util\-linux/util\-linux/issues" "" "." .SH "ДОСТУПНОСТ" .sp Наредба \fBunshare\fP је део пакета „util\-linux“ који се може преузети са \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Архиве Линукс кернела" "."