]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - sys-utils/unshare.1.adoc
Merge branch 'symver' of https://github.com/nekopsykose/util-linux
[thirdparty/util-linux.git] / sys-utils / unshare.1.adoc
index f3367a806140e795345709282b7185c27252eb16..e6201e28fffd46052648654f43ffac76a7dd7b06 100644 (file)
@@ -93,14 +93,18 @@ Just before running the program, mount the proc filesystem at _mountpoint_ (defa
 **--map-user=**__uid|name__::
 Run the program only after the current effective user ID has been mapped to _uid_. If this option is specified multiple times, the last occurrence takes precedence. This option implies *--user*.
 
-**--map-users=**__outeruid,inneruid,count__|**auto**::
-Run the program only after the block of user IDs of size _count_ beginning at _outeruid_ has been mapped to the block of user IDs beginning at _inneruid_. This mapping is created with **newuidmap**(1). If the range of user IDs overlaps with the mapping specified by *--map-user*, then a "hole" will be removed from the mapping. This may result in the highest user ID of the mapping not being mapped. The special value *auto* will map the first block of user IDs owned by the effective user from _/etc/subuid_ to a block starting at user ID 0. If this option is specified multiple times, the last occurrence takes precedence. This option implies *--user*.
+**--map-users=**__inneruid:outeruid:count__|**auto**|**all**::
+Run the program only after the block of user IDs of size _count_ beginning at _outeruid_ has been mapped to the block of user IDs beginning at _inneruid_. This mapping is created with **newuidmap**(1) if *unshare* was run unprivileged. If the range of user IDs overlaps with the mapping specified by *--map-user*, then a "hole" will be removed from the mapping. This may result in the highest user ID of the mapping not being mapped. Use *--map-users* multiple times to map more than one block of user IDs. The special value *auto* will map the first block of user IDs owned by the effective user from _/etc/subuid_ to a block starting at user ID 0. The special value *all* will create a pass-through map for every user ID available in the parent namespace. This option implies *--user*.
++
+Before util-linux version 2.39, this option expected a comma-separated argument of the form _outeruid,inneruid,count_ but that format is now deprecated for consistency with the ordering used in _/proc/[pid]/uid_map_ and the _X-mount.idmap_ mount option.
 
 **--map-group=**__gid|name__::
 Run the program only after the current effective group ID has been mapped to _gid_. If this option is specified multiple times, the last occurrence takes precedence. This option implies *--setgroups=deny* and *--user*.
 
-**--map-groups=**__outergid,innergid,count__|**auto**::
-Run the program only after the block of group IDs of size _count_ beginning at _outergid_ has been mapped to the block of group IDs beginning at _innergid_. This mapping is created with **newgidmap**(1). If the range of group IDs overlaps with the mapping specified by *--map-group*, then a "hole" will be removed from the mapping. This may result in the highest group ID of the mapping not being mapped. The special value *auto* will map the first block of user IDs owned by the effective user from _/etc/subgid_ to a block starting at group ID 0. If this option is specified multiple times, the last occurrence takes precedence. This option implies *--user*.
+**--map-groups=**__innergid:outergid:count__|**auto**|**all**::
+Run the program only after the block of group IDs of size _count_ beginning at _outergid_ has been mapped to the block of group IDs beginning at _innergid_. This mapping is created with **newgidmap**(1) if *unshare* was run unprivileged. If the range of group IDs overlaps with the mapping specified by *--map-group*, then a "hole" will be removed from the mapping. This may result in the highest group ID of the mapping not being mapped. Use *--map-groups* multiple times to map more than one block of group IDs. The special value *auto* will map the first block of user IDs owned by the effective user from _/etc/subgid_ to a block starting at group ID 0. The special value *all* will create a pass-through map for every group ID available in the parent namespace. This option implies *--user*.
++
+Before util-linux version 2.39, this option expected a comma-separated argument of the form _outergid,innergid,count_ but that format is now deprecated for consistency with the ordering used in _/proc/[pid]/gid_map_ and the _X-mount.idmap_ mount option.
 
 **--map-auto**::
 Map the first block of user IDs owned by the effective user from _/etc/subuid_ to a block starting at user ID 0. In the same manner, also map the first block of group IDs owned by the effective group from _/etc/subgid_ to a block starting at group ID 0. This option is intended to handle the common case where the first block of subordinate user and group IDs can map the whole user and group ID space. This option is equivalent to specifying *--map-users=auto* and *--map-groups=auto*.
@@ -141,11 +145,11 @@ include::man-common/help-version.adoc[]
 
 == NOTES
 
-The proc and sysfs filesystems mounting as root in a user namespace have to be restricted so that a less privileged user can not get more access to sensitive files that a more privileged user made unavailable. In short the rule for proc and sysfs is as close to a bind mount as possible.
+The proc and sysfs filesystems mounting as root in a user namespace have to be restricted so that a less privileged user cannot get more access to sensitive files that a more privileged user made unavailable. In short the rule for proc and sysfs is as close to a bind mount as possible.
 
 == EXAMPLES
 
-The following command creates a PID namespace, using *--fork* to ensure that the executed command is performed in a child process that (being the first process in the namespace) has PID 1. The *--mount-proc* option ensures that a new mount namespace is also simultaneously created and that a new *proc*(5) filesystem is mounted that contains information corresponding to the new PID namespace. When the *readlink* command terminates, the new namespaces are automatically torn down.
+The following command creates a PID namespace, using *--fork* to ensure that the executed command is performed in a child process that (being the first process in the namespace) has PID 1. The *--mount-proc* option ensures that a new mount namespace is also simultaneously created and that a new *proc*(5) filesystem is mounted that contains information corresponding to the new PID namespace. When the *readlink*(1) command terminates, the new namespaces are automatically torn down.
 
 ....
 # unshare --fork --pid --mount-proc readlink /proc/self
@@ -159,7 +163,7 @@ $ id -u; id -g
 1000
 1000
 $ unshare --user --map-root-user \
-        sh -c ''whoami; cat /proc/self/uid_map /proc/self/gid_map''
+        sh -c 'whoami; cat /proc/self/uid_map /proc/self/gid_map'
 root
          0       1000          1
          0       1000          1
@@ -210,11 +214,8 @@ The following commands demonstrate the use of the *--kill-child* option when cre
 ....
 # set +m                # Don't print job status messages
 
-
 # unshare --pid --fork --mount-proc --kill-child -- \
-
-
-       bash --norc -c ''(sleep 555 &) && (ps a &) && sleep 999'' &
+       bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' &
 [1] 53456
 #     PID TTY      STAT   TIME COMMAND
       1 pts/3    S+     0:00 sleep 999
@@ -231,9 +232,7 @@ The *pidof*(1) command prints no output, because the *sleep* processes have been
 
 ....
 # unshare --pid --fork --mount-proc -- \
-
-
-       bash --norc -c ''(sleep 555 &) && (ps a &) && sleep 999'' &
+       bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' &
 [1] 53479
 #     PID TTY      STAT   TIME COMMAND
       1 pts/3    S+     0:00 sleep 999
@@ -261,8 +260,8 @@ mailto:kzak@redhat.com[Karel Zak]
 
 == SEE ALSO
 
-*newuidmap*(1)
-*newgidmap*(1)
+*newuidmap*(1),
+*newgidmap*(1),
 *clone*(2),
 *unshare*(2),
 *namespaces*(7),