]> git.ipfire.org Git - thirdparty/man-pages.git/blob - man7/namespaces.7
namespaces.7: Rewrite EPERM rules for writing to user namespace map file
[thirdparty/man-pages.git] / man7 / namespaces.7
1 .\" Copyright (c) 2013 by Michael Kerrisk <mtk.manpages@gmail.com>
2 .\" and Copyright (c) 2012 by Eric W. Biederman <ebiederm@xmission.com>
3 .\"
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
7 .\"
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
12 .\"
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date. The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein. The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
19 .\" professionally.
20 .\"
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
23 .\"
24 .\"
25 .TH NAMESPACES 7 2013-01-14 "Linux" "Linux Programmer's Manual"
26 .SH NAME
27 namespaces \- overview of Linux namespaces
28 .SH DESCRIPTION
29 A namespace wraps a global system resource in an abstraction that
30 makes it appear to the processes within the namespace that they
31 have their own isolated instance of the global resource.
32 Changes to the global resource are visible to other processes
33 that are members of the namespace, but are invisible to other processes.
34 One use of namespaces is to implement containers.
35
36 This page describes the various namespaces and the associated
37 .I /proc
38 files, and summarizes the APIs for working with namespaces.
39 .SS The namespaces API
40 As well as various
41 .I /proc
42 files described below,
43 the namespaces API includes the following system calls:
44 .TP
45 .BR clone (2)
46 The
47 .BR clone (2)
48 system call creates a new process.
49 If the
50 .I flags
51 argument of the call specifies one or more of the
52 .B CLONE_NEW*
53 flags listed below, then new namespaces are created for each flag,
54 and the child process is made a member of those namespaces.
55 (This system call also implements a number of features
56 unrelated to namespaces.)
57 .TP
58 .BR setns (2)
59 The
60 .BR setns (2)
61 system call allows the calling process to join an existing namespace.
62 The namespace to join is specified via a file descriptor that refers to
63 one of the
64 .IR /proc/[pid]/ns
65 files described below.
66 .TP
67 .BR unshare (2)
68 The
69 .BR unshare (2)
70 system call moves the calling process to a new namespace.
71 If the
72 .I flags
73 argument of the call specifies one or more of the
74 .B CLONE_NEW*
75 flags listed below, then new namespaces are created for each flag,
76 and the calling process is made a member of those namespaces.
77 (This system call also implements a number of features
78 unrelated to namespaces.)
79 .PP
80 Creation of new namespaces using
81 .BR clone (2)
82 and
83 .BR unshare (2)
84 in most cases requires the
85 .BR CAP_SYS_ADMIN
86 capability.
87 User namespaces are the exception: since Linux 3.8,
88 no privilege is required to create a user namespace.
89 .SS The /proc/[pid]/ns/ directory
90 Each process has a
91 .IR /proc/[pid]/ns/
92 .\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
93 subdirectory containing one entry for each namespace that
94 supports being manipulated by
95 .BR setns (2):
96
97 .in +4n
98 .nf
99 $ \fBls -l /proc/$$/ns\fP
100 total 0
101 lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc -> ipc:[4026531839]
102 lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt -> mnt:[4026531840]
103 lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net -> net:[4026531956]
104 lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid -> pid:[4026531836]
105 lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user -> user:[4026531837]
106 lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts -> uts:[4026531838]
107 .fi
108 .in
109
110 Bind mounting (see
111 .BR mount (2))
112 one of the files in this directory
113 to somewhere else in the file system keeps
114 the corresponding namespace of the process specified by
115 .I pid
116 alive even if all processes currently in the namespace terminate.
117
118 Opening one of the files in this directory
119 (or a file that is bind mounted to one of these files)
120 returns a file handle for
121 the corresponding namespace of the process specified by
122 .IR pid .
123 As long as this file descriptor remains open,
124 the namespace will remain alive,
125 even if all processes in the namespace terminate.
126 The file descriptor can be passed to
127 .BR setns (2).
128
129 In Linux 3.7 and earlier, these files were visible as hard links.
130 Since Linux 3.8, they appear as symbolic links.
131 If two processes are in the same namespace, then the inode numbers of their
132 .IR /proc/[pid]/ns/xxx
133 symbolic links will be the same; an application can check this using the
134 .I stat.st_ino
135 field returned by
136 .BR stat (2).
137 The content of this symbolic link is a string containing
138 the namespace type and inode number as in the following example:
139
140 .in +4n
141 .nf
142 $ \fBreadlink /proc/$$/ns/uts\fP
143 uts:[4026531838]
144 .fi
145 .in
146
147 The files in this subdirectory are as follows:
148 .TP
149 .IR /proc/[pid]/ns/ipc " (since Linux 3.0)"
150 This file is a handle for the IPC namespace of the process.
151 .TP
152 .IR /proc/[pid]/ns/mnt " (since Linux 3.8)"
153 This file is a handle for the mount namespace of the process.
154 .TP
155 .IR /proc/[pid]/ns/net " (since Linux 3.0)"
156 This file is a handle for the network namespace of the process.
157 .TP
158 .IR /proc/[pid]/ns/pid " (since Linux 3.8)"
159 This file is a handle for the PID namespace of the process.
160 .TP
161 .IR /proc/[pid]/ns/user " (since Linux 3.8)"
162 This file is a handle for the user namespace of the process.
163 .TP
164 .IR /proc/[pid]/ns/uts " (since Linux 3.0)"
165 This file is a handle for the IPC namespace of the process.
166 .SS IPC namespaces (CLONE_NEWIPC)
167 IPC namespaces isolate certain IPC resources,
168 namely, System V IPC objects (see
169 .BR svipc (7))
170 and (since Linux 2.6.30)
171 .\" commit 7eafd7c74c3f2e67c27621b987b28397110d643f
172 .\" https://lwn.net/Articles/312232/
173 POSIX message queues (see
174 .BR mq_overview (7).
175 The common characteristic of these IPC mechanisms is that IPC
176 objects are identified by mechanisms other than file system
177 pathnames.
178
179 Each IPC namespace has its own set of System V IPC identifiers and
180 its own POSIX message queue file system.
181 Objects created in an IPC namespace are visible to all other processes
182 that are members of that namespace,
183 but are not visible to processes in other IPC namespaces.
184
185 When an IPC namespace is destroyed
186 (i.e., when the last process that is a member of the namespace terminates),
187 all IPC objects in the namespace are automatically destroyed.
188
189 Use of IPC namespaces requires a kernel that is configured with the
190 .B CONFIG_IPC_NS
191 option.
192 .SS Network namespaces (CLONE_NEWNET)
193 Network namespaces provide isolation of the system resources associated
194 with networking: network devices, IP addresses, IP routing tables,
195 .I /proc/net
196 directory,
197 .I /sys/class/net
198 directory, port numbers, and so on.
199
200 A network namespace provides an isolated view of the networking stack
201 (network device interfaces, IPv4 and IPv6 protocol stacks,
202 IP routing tables, firewall rules, the
203 .I /proc/net
204 and
205 .I /sys/class/net
206 directory trees, sockets, etc.).
207 A physical network device can live in exactly one
208 network namespace.
209 A virtual network device ("veth") pair provides a pipe-like abstraction
210 .\" FIXME Add pointer to veth(4) page when it is eventually completed
211 that can be used to create tunnels between network namespaces,
212 and can be used to create a bridge to a physical network device
213 in another namespace.
214
215 When a network namespace is freed
216 (i.e., when the last process in the namespace terminates),
217 its physical network devices are moved back to the
218 initial network namespace (not to the parent of the process).
219
220 Use of network namespaces requires a kernel that is configured with the
221 .B CONFIG_NET_NS
222 option.
223 .SS Mount namespaces (CLONE_NEWNS)
224 Mount namespaces isolate the set of file system mount points,
225 meaning that processes in different mount namespaces can
226 have different views of the file system hierarchy.
227 The set of mounts in a mount namespace is modified using
228 .BR mount (2)
229 and
230 .BR umount (2).
231
232 The
233 .IR /proc/[pid]/mounts
234 file (present since Linux 2.4.19)
235 lists all the file systems currently mounted in the
236 process's mount namespace.
237 The format of this file is documented in
238 .BR fstab (5).
239 Since kernel version 2.6.15, this file is pollable:
240 after opening the file for reading, a change in this file
241 (i.e., a file system mount or unmount) causes
242 .BR select (2)
243 to mark the file descriptor as readable, and
244 .BR poll (2)
245 and
246 .BR epoll_wait (2)
247 mark the file as having an error condition.
248
249 The
250 .IR /proc/[pid]/mountstats
251 file (present since Linux 2.6.17)
252 exports information (statistics, configuration information)
253 about the mount points in the process's mount namespace.
254 This file is only readable by the owner of the process.
255 Lines in this file have the form:
256 .RS
257 .in 12
258 .nf
259
260 device /dev/sda7 mounted on /home with fstype ext3 [statistics]
261 ( 1 ) ( 2 ) (3 ) (4)
262 .fi
263 .in
264
265 The fields in each line are:
266 .TP 5
267 (1)
268 The name of the mounted device
269 (or "nodevice" if there is no corresponding device).
270 .TP
271 (2)
272 The mount point within the file system tree.
273 .TP
274 (3)
275 The file system type.
276 .TP
277 (4)
278 Optional statistics and configuration information.
279 Currently (as at Linux 2.6.26), only NFS file systems export
280 information via this field.
281 .RE
282 .SS PID namespaces (CLONE_NEWPID)
283 PID namespaces isolate the process ID number space,
284 meaning that processes in different PID namespaces can have the same PID.
285 PID namespaces allow containers to migrate to a new host
286 while the processes inside the container maintain the same PIDs.
287
288 PIDs in a new PID namespace start at 1,
289 somewhat like a standalone system, and calls to
290 .BR fork (2),
291 .BR vfork (2),
292 or
293 .BR clone (2)
294 will produce processes with PIDs that are unique within the namespace.
295
296 The first process created in a new namespace
297 (i.e., the process created using
298 .BR clone (2)
299 with the
300 .BR CLONE_NEWPID
301 flag, or the first child created by a process after a call to
302 .BR unshare (2)
303 using the
304 .BR CLONE_NEWPID
305 flag) has the PID 1, and is the "init" process for the namespace (see
306 .BR init (1)).
307 Children that are orphaned within the namespace will be reparented
308 to this process rather than
309 .BR init (1).
310
311 If the "init" process of a PID namespace terminates,
312 the kernel terminates all of the processes in the namespace via a
313 .BR SIGKILL
314 signal.
315 This behavior reflects the fact that the "init" process
316 is essential for the correct operation of a PID namespace.
317 In this case, a subsequent
318 .BR fork (2)
319 into this PID namespace (e.g., from a process that has done a
320 .BR setns (2)
321 into the namespace using an open file descriptor for a
322 .I /proc/[pid]/ns/pid
323 file corresponding to a process that was in the namespace)
324 will fail with the error
325 .BR ENOMEM ;
326 it is not possible to create a new processes in a PID namespace whose "init"
327 process has terminated.
328
329 Only signals for which the "init" process has established a signal handler
330 can be sent to the "init" process by other members of the PID namespace.
331 This restriction applies even to privileged processes,
332 and prevents other members of the PID namespace from
333 accidentally killing the "init" process.
334
335 Likewise, a process in an ancestor namespace
336 can\(emsubject to the usual permission checks described in
337 .BR kill (2)\(emsend
338 signals to the "init" process of a child PID namespace only
339 if the "init" process has established a handler for that signal.
340 (Within the handler, the
341 .I siginfo_t
342 .I si_pid
343 field described in
344 .BR sigaction (2)
345 will be zero.)
346 .B SIGKILL
347 or
348 .B SIGSTOP
349 are treated exceptionally:
350 these signals are forcibly delivered when sent from an ancestor PID namespace.
351 Neither of these signals can be caught by the "init" process,
352 and so will result in the usual actions associated with those signals
353 (respectively, terminating and stopping the process).
354
355 PID namespaces can be nested.
356 When a new PID namespace is created,
357 the processes in that namespace are visible
358 in the PID namespace of the process that created the new namespace;
359 analogously, if the parent PID namespace is itself
360 the child of another PID namespace,
361 then processes in the child and parent PID namespaces will both be
362 visible in the grandparent PID namespace.
363 Conversely, the processes in the "child" PID namespace do not see
364 the processes in the parent namespace.
365 More succinctly: a process can see (e.g., send signals with
366 .BR kill(2))
367 only processes contained in its own PID namespace
368 and the namespaces nested below that PID namespace.
369
370 A process will have one PID for each of the layers of the hierarchy
371 starting from the PID namespace in which it resides
372 through to the root PID namespace.
373 A call to
374 .BR getpid (2)
375 always returns the PID associated with the namespace in which
376 the process resides.
377
378 Some processes in a PID namespace may have parents
379 that are outside of the namespace.
380 For example, the parent of the initial process in the namespace
381 (i.e.,
382 the
383 .BR init (1)
384 process with PID 1) is necessarily in another namespace.
385 Likewise, the direct children of a process that uses
386 .BR setns (2)
387 to cause its children to join a PID namespace are in a different
388 PID namespace from the caller of
389 .BR setns (2).
390 Calls to
391 .BR getppid (2)
392 for such processes return 0.
393
394 After creating a new PID namespace,
395 it is useful for the child to change its root directory
396 and mount a new procfs instance at
397 .I /proc
398 so that tools such as
399 .BR ps (1)
400 work correctly.
401 .\" mount -t proc proc /proc
402 (If
403 .BR CLONE_NEWNS
404 is also included in the
405 .IR flags
406 argument of
407 .BR clone (2)
408 or
409 .BR unshare (2)),
410 then it isn't necessary to change the root directory:
411 a new procfs instance can be mounted directly over
412 .IR /proc .)
413
414 Calls to
415 .BR setns (2)
416 that specify a PID namespace file descriptor
417 and calls to
418 .BR unshare (2)
419 with the
420 .BR CLONE_NEWPID
421 flag cause children subsequently created
422 by the caller to be placed in a different PID namespace from the caller.
423 These calls do not, however,
424 change the PID namespace of the calling process,
425 because doing so would change the caller's idea of its own PID
426 (as reported by
427 .BR getpid ()),
428 which would break many applications and libraries.
429 To put things another way:
430 a process's PID namespace membership is determined when the process is created
431 and cannot be changed thereafter.
432
433 Every thread in a process must be in the same PID namespace.
434 For this reason, the two following call sequences will fail:
435
436 .in +4n
437 .nf
438 unshare(CLONE_NEWPID);
439 clone(..., CLONE_VM, ...); /* Fails */
440
441 setns(fd, CLONE_NEWPID);
442 clone(..., CLONE_VM, ...); /* Fails */
443 .fi
444 .in
445
446 Because the above
447 .BR unshare (2)
448 and
449 .BR setns (2)
450 calls only change the PID namespace for created children, the
451 .BR clone (2)
452 calls necessarily put the new thread in a different PID namespace from
453 the calling thread.
454
455 When a process ID is passed over a UNIX domain socket to a
456 process in a different PID namespace (see the description of
457 .B SCM_CREDENTIALS
458 in
459 .BR unix (7)),
460 it is translated into the corresponding PID value in
461 the receiving process's PID namespace.
462 .\" FIXME Presumably, a similar thing happens with the UID and GID passed
463 .\" via a UNIX domain socket. That needs to be confirmed and documented
464 .\" under the "User namespaces" section.
465
466 Use of PID namespaces requires a kernel that is configured with the
467 .B CONFIG_PID_NS
468 option.
469 .SS User namespaces (CLONE_NEWUSER)
470 User namespaces isolate security-related identifiers, in particular,
471 user IDs, group IDs, keys (see
472 .BR keyctl (2)),
473 and capabilities.
474 A process's user and group IDs can be different
475 inside and outside a user namespace.
476 In particular,
477 a process can have a normal unprivileged user ID outside a user namespace
478 while at the same time having a user ID of 0 inside the namespace;
479 in other words,
480 the process has full privileges for operations inside the user namespace,
481 but is unprivileged for operations outside the namespace.
482
483 When a user namespace is created,
484 it starts out without a mapping of user IDs (group IDs)
485 to the parent user namespace.
486 The desired mapping of user IDs (group IDs) to the parent user namespace
487 may be set by writing into
488 .IR /proc/[pid]/uid_map
489 .RI ( /proc/[pid]/gid_map );
490 see below.
491
492 The first process in a user namespace starts out with a complete set
493 of capabilities with respect to the new user namespace.
494
495 System calls that return user IDs (group IDs) will return
496 either the user ID (group ID) mapped into the current
497 user namespace if there is a mapping, or the overflow user ID (group ID);
498 the default value for the overflow user ID (group ID) is 65534.
499 See the descriptions of
500 .IR /proc/sys/kernel/overflowuid
501 and
502 .IR /proc/sys/kernel/overflowgid
503 in
504 .BR proc (5).
505
506 Starting in Linux 3.8, unprivileged processes can create user namespaces,
507 and mount, PID, IPC, network, and UTS namespaces can be created with just the
508 .B CAP_SYS_ADMIN
509 capability in the caller's user namespace.
510
511 If
512 .BR CLONE_NEWUSER
513 is specified along with other
514 .B CLONE_NEW*
515 flags in a single
516 .BR clone (2)
517 or
518 .BR unshare (2)
519 call, the user namespace is guaranteed to be created first,
520 giving the caller privileges over the remaining
521 namespaces created by the call.
522 Thus, it is possible for an unprivileged caller to specify this combination
523 of flags.
524
525 Use of user namespaces requires a kernel that is configured with the
526 .B CONFIG_USER_NS
527 option.
528
529 Over the years, there have been a lot of features that have been added
530 to the Linux kernel that are only available to privileged users
531 because of their potential to confuse set-user-ID-root applications.
532 In general, it becomes safe to allow the root user in a user namespace to
533 use those features because it is impossible, while in a user namespace,
534 to gain more privilege than the root user of a user namespace has.
535
536 The
537 .IR /proc/[pid]/uid_map
538 and
539 .IR /proc/[pid]/gid_map
540 files (available since Linux 3.5)
541 .\" commit 22d917d80e842829d0ca0a561967d728eb1d6303
542 expose the mappings for user and group IDs
543 inside the user namespace for the process
544 .IR pid .
545 The description here explains the details for
546 .IR uid_map ;
547 .IR gid_map
548 is exactly the same,
549 but each instance of "user ID" is replaced by "group ID".
550
551 The
552 .I uid_map
553 file exposes the mapping of user IDs from the user namespace
554 of the process
555 .IR pid
556 to the user namespace of the process that opened
557 .IR uid_map
558 (but see a qualification to this point below).
559 In other words, processes that are in different user namespaces
560 will potentially see different values when reading from a particular
561 .I uid_map
562 file, depending on the user ID mappings for the user namespaces
563 of the reading processes.
564
565 Each line in the
566 .I uid_map
567 file specifies a 1-to-1 mapping of a range of contiguous
568 user IDs between two user namespaces.
569 The specification in each line takes the form of
570 three numbers delimited by white space.
571 The first two numbers specify the starting user ID in
572 each user namespace.
573 The third number specifies the length of the mapped range.
574 In detail, the fields are interpreted as follows:
575 .IP (1) 4
576 The start of the range of user IDs in
577 the user namespace of the process
578 .IR pid .
579 .IP (2)
580 The start of the range of user
581 IDs to which the user IDs specified by field one map.
582 How field two is interpreted depends on whether the process that opened
583 .I uid_map
584 and the process
585 .IR pid
586 are in the same user namespace, as follows:
587 .RS
588 .IP a) 3
589 If the two processes are in different user namespaces:
590 field two is the start of a range of
591 user IDs in the user namespace of the process that opened
592 .IR uid_map .
593 .IP b)
594 If the two processes are in the same user namespace:
595 field two is the start of the range of
596 user IDs in the parent user namespace of the process
597 .IR pid .
598 (The "parent user namespace"
599 is the user namespace of the process that created a user namespace
600 via a call to
601 .BR unshare (2)
602 or
603 .BR clone (2)
604 with the
605 .BR CLONE_NEWUSER
606 flag.)
607 This case enables the opener of
608 .I uid_map
609 (the common case here is opening
610 .IR /proc/self/uid_map )
611 to see the mapping of user IDs into the user namespace of the process
612 that created this user namespace.
613 .RE
614 .IP (3)
615 The length of the range of user IDs that is mapped between the two
616 user namespaces.
617 .PP
618 After the creation of a new user namespace, the
619 .I uid_map
620 file may be written to exactly once to specify
621 the mapping of user IDs in the new user namespace.
622 (An attempt to write more than once to the file fails with the error
623 .BR EPERM .)
624
625 The lines written to
626 .IR uid_map
627 must conform to the following rules:
628 .IP * 3
629 The three fields must be valid numbers,
630 and the last field must be greater than 0.
631 .IP *
632 Lines are terminated by newline characters.
633 .IP *
634 There is an (arbitrary) limit on the number of lines in the file.
635 As at Linux 3.8, the limit is five lines.
636 In addition,
637 the number of bytes written to the file cannot exceed the system page size,
638 and the write must be performed at the start of the file (i.e.,
639 .BR lseek (2)
640 and
641 .BR pwrite (2)
642 can't be used to write to nonzero offsets in the file).
643 .IP *
644 The range of user IDs specified in each line cannot overlap with the ranges
645 in any other lines.
646 In the current implementation (Linux 3.8), this requirement is
647 satisfied by a simplistic implementation that imposes the further
648 requirement that
649 the values in both field 1 and field 2 of successive lines must be
650 in ascending numerical order.
651 .IP *
652 At least one line must be written to the file.
653 .PP
654 Writes that violate the above rules fail with the error
655 .BR EINVAL .
656
657 In order for a process to write to the
658 .I /proc/[pid]/uid_map
659 .RI ( /proc/[pid]/gid_map )
660 file, all of the following requirements must be met:
661 .IP 1. 3
662 The writing process must have the
663 .BR CAP_SETUID
664 .RB ( CAP_SETGID )
665 capability in the user namespace of the process
666 .IR pid .
667 .IP 2.
668 The writing process must be in either the user namespace of the process
669 .I pid
670 or inside the parent user namespace of the process
671 .IR pid .
672 .IP 3.
673 One of the following is true:
674 .RS
675 .IP * 3
676 The data written to
677 .I uid_map
678 .RI ( gid_map )
679 consists of a single line that maps the writing process's file system user ID
680 (group ID) in the parent user namespace to a user ID (group ID)
681 in the user namespace.
682 .IP * 3
683 The process has the
684 .BR CAP_SETUID
685 .RB ( CAP_SETGID )
686 capability in the parent user namespace.
687 Thus, a privileged process can make mappings to arbitrary user ID (group ID)
688 in the parent user namespace.
689 .RE
690 .PP
691 Writes that violate the above rules fail with the error
692 .BR EPERM .
693 .SS UTS namespaces (CLONE_NEWUTS)
694 UTS namespaces provide isolation of two system identifiers:
695 the hostname and the NIS domain name.
696 These identifiers are set using
697 .BR sethostname (2)
698 and
699 .BR setdomainname (2),
700 and can be retrieved using
701 .BR uname (2),
702 .BR gethostname (2),
703 and
704 .BR getdomainname (2).
705
706 Use of UTS namespaces requires a kernel that is configured with the
707 .B CONFIG_UTS_NS
708 option.
709 .SH CONFORMING TO
710 Namespaces are a Linux-specific feature.
711 .SH SEE ALSO
712 .BR nsenter (1),
713 .BR readlink (1),
714 .BR unshare (1),
715 .BR clone (2),
716 .BR setns (2),
717 .BR unshare (2),
718 .BR proc (5),
719 .BR credentials (7),
720 .BR capabilities (7),
721 .BR switch_root (8)