# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 06:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "unshare" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "unshare - disassociate parts of the process execution context" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "B<#define _GNU_SOURCE>\n" "B<#include Esched.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<);>\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() allows a process (or thread) to disassociate parts of its " "execution context that are currently being shared with other processes (or " "threads). Part of the execution context, such as the mount namespace, is " "shared implicitly when a new process is created using B(2) or " "B(2), while other parts, such as virtual memory, may be shared by " "explicit request when creating a process or thread using B(2)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The main use of B() is to allow a process to control its shared " "execution context without creating a new process." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I argument is a bit mask that specifies which parts of the " "execution context should be unshared. This argument is specified by ORing " "together zero or more of the following constants:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Reverse the effect of the B(2) B flag. Unshare the " "file descriptor table, so that the calling process no longer shares its file " "descriptors with any other process." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Reverse the effect of the B(2) B flag. Unshare filesystem " "attributes, so that the calling process no longer shares its root directory " "(B(2)), current directory (B(2)), or umask (B(2)) " "attributes with any other process." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.6)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the cgroup namespace. Use of B requires the " "B capability." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.19)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the IPC namespace, so that the calling process has a private copy of " "the IPC namespace which is not shared with any other process. Specifying " "this flag automatically implies B as well. Use of " "B requires the B capability." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.24)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the network namespace, so that the calling process is moved into a " "new network namespace which is not shared with any previously existing " "process. Use of B requires the B capability." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. These flag name are inconsistent: #. CLONE_NEWNS does the same thing in clone(), but CLONE_VM, #. CLONE_FS, and CLONE_FILES reverse the action of the clone() #. flags of the same name. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the mount namespace, so that the calling process has a private copy " "of its namespace which is not shared with any other process. Specifying " "this flag automatically implies B as well. Use of B " "requires the B capability. For further information, see " "B(7)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.8)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the PID namespace, so that the calling process has a new PID " "namespace for its children which is not shared with any previously existing " "process. The calling process is I moved into the new namespace. The " "first child created by the calling process will have the process ID 1 and " "will assume the role of B(1) in the new namespace. B " "automatically implies B as well. Use of B " "requires the B capability. For further information, see " "B(7)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 5.6)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Unshare the time namespace, so that the calling process has a new time " "namespace for its children which is not shared with any previously existing " "process. The calling process is I moved into the new namespace. Use " "of B requires the B capability. For further " "information, see B(7)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.8)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the user namespace, so that the calling process is moved into a new " "user namespace which is not shared with any previously existing process. As " "with the child process created by B(2) with the B " "flag, the caller obtains a full set of capabilities in the new namespace." msgstr "" #. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 #. https://lwn.net/Articles/543273/ #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B requires that the calling process is not threaded; " "specifying B automatically implies B. Since " "Linux 3.9, B also automatically implies B. " "B requires that the user ID and group ID of the calling " "process are mapped to user IDs and group IDs in the user namespace of the " "calling process at the time of the call." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "For further information on user namespaces, see B(7)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.19)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag has the same effect as the B(2) B flag. " "Unshare the UTS IPC namespace, so that the calling process has a private " "copy of the UTS namespace which is not shared with any other process. Use " "of B requires the B capability." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.26)" msgstr "" #. commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7 #. CLONE_NEWNS If CLONE_SIGHAND is set and signals are also being shared #. (i.e., current->signal->count > 1), force CLONE_THREAD. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag reverses the effect of the B(2) B flag. " "Unshare System\\ V semaphore adjustment (I) values, so that the " "calling process has a new empty I list that is not shared with any " "other process. If this is the last process that has a reference to the " "process's current I list, then the adjustments in that list are " "applied to the corresponding semaphores, as described in B(2)." msgstr "" # #. As at 3.9, the following forced implications also apply, #. although the relevant flags are not yet implemented. #. If CLONE_THREAD is set force CLONE_VM. #. If CLONE_VM is set, force CLONE_SIGHAND. #. See kernel/fork.c::check_unshare_flags() #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In addition, B, B, and B can be " "specified in I if the caller is single threaded (i.e., it is not " "sharing its address space with another process or thread). In this case, " "these flags have no effect. (Note also that specifying B " "automatically implies B, and specifying B automatically " "implies B.) If the process is multithreaded, then the use of " "these flags results in an error." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If I is specified as zero, then B() is a no-op; no changes " "are made to the calling process's execution context." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, zero returned. On failure, -1 is returned and I is set " "to indicate the error." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "An invalid bit was specified in I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B, B, or B was specified in I, " "and the caller is multithreaded." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, but the kernel was not configured " "with the B and B options." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, but the kernel was not configured " "with the B option." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, but the kernel was not configured " "with the B option." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, but the kernel was not " "configured with the B option." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, but the kernel was not configured " "with the B option." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, but the process has previously " "called B() with the B flag." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Cannot allocate sufficient memory to copy parts of caller's context that " "need to be unshared." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.7)" msgstr "" #. commit f2302505775fd13ba93f034206f1e2a587017929 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in flags, but the limit on the nesting depth " "of PID namespaces would have been exceeded; see B(7)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.9; beforehand B)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, and the call would cause the " "limit on the number of nested user namespaces to be exceeded. See " "B(7)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "From Linux 3.11 to Linux 4.8, the error diagnosed in this case was B." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.9)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "One of the values in I specified the creation of a new user " "namespace, but doing so would have caused the limit defined by the " "corresponding file in I to be exceeded. For further " "details, see B(7)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The calling process did not have the required privileges for this operation." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, but either the effective user ID " "or the effective group ID of the caller does not have a mapping in the " "parent namespace (see B(7))." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.9)" msgstr "" #. commit 3151527ee007b73a0ebd296010f1c0454a919c7d #. FIXME What is the rationale for this restriction? #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I and the caller is in a chroot " "environment (i.e., the caller's root directory does not match the root " "directory of the mount namespace in which it resides)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (from Linux 3.11 to Linux 4.8)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B was specified in I, and the limit on the number of " "nested user namespaces would be exceeded. See the discussion of the " "B error above." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux 2.6.16." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" # #. FIXME all of the following needs to be reviewed for the current kernel #. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND #. was not specified when doing clone(); i.e., unsharing #. signal handlers is permitted if we are not actually #. sharing signal handlers. mtk #. However, we can do unshare(CLONE_VM) if CLONE_VM #. was not specified when doing clone(); i.e., unsharing #. virtual memory is permitted if we are not actually #. sharing virtual memory. mtk #. 9) Future Work #. -------------- #. The current implementation of unshare does not allow unsharing of #. signals and signal handlers. Signals are complex to begin with and #. to unshare signals and/or signal handlers of a currently running #. process is even more complex. If in the future there is a specific #. need to allow unsharing of signals and/or signal handlers, it can #. be incrementally added to unshare without affecting legacy #. applications using unshare. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Not all of the process attributes that can be shared when a new process is " "created using B(2) can be unshared using B(). In " "particular, as at kernel 3.8, B() does not implement flags that " "reverse the effects of B, B, or B. " "Such functionality may be added in the future, if required." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Creating all kinds of namespace, except user namespaces, requires the " "B capability. However, since creating a user namespace " "automatically confers a full set of capabilities, creating both a user " "namespace and any other type of namespace in the same B() call " "does not require the B capability in the original namespace." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The program below provides a simple implementation of the B(1) " "command, which unshares one or more namespaces and executes the command " "supplied in its command-line arguments. Here's an example of the use of " "this program, running a shell in a new mount namespace, and verifying that " "the original shell and the new shell are in separate mount namespaces:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$ B\n" "mnt:[4026531840]\n" "$ B\n" "# B\n" "mnt:[4026532325]\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The differing output of the two B(1) commands shows that the two " "shells are in different mount namespaces." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "/* unshare.c\n" "\\&\n" " A simple implementation of the unshare(1) command: unshare\n" " namespaces and execute a command.\n" "*/\n" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Esched.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Eunistd.hE\n" "\\&\n" "static void\n" "usage(char *pname)\n" "{\n" " fprintf(stderr, \"Usage: %s [options] program [arg...]\\en\", pname);\n" " fprintf(stderr, \"Options can be:\\en\");\n" " fprintf(stderr, \" -C unshare cgroup namespace\\en\");\n" " fprintf(stderr, \" -i unshare IPC namespace\\en\");\n" " fprintf(stderr, \" -m unshare mount namespace\\en\");\n" " fprintf(stderr, \" -n unshare network namespace\\en\");\n" " fprintf(stderr, \" -p unshare PID namespace\\en\");\n" " fprintf(stderr, \" -t unshare time namespace\\en\");\n" " fprintf(stderr, \" -u unshare UTS namespace\\en\");\n" " fprintf(stderr, \" -U unshare user namespace\\en\");\n" " exit(EXIT_FAILURE);\n" "}\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int flags, opt;\n" "\\&\n" " flags = 0;\n" "\\&\n" " while ((opt = getopt(argc, argv, \"CimnptuU\")) != -1) {\n" " switch (opt) {\n" " case \\[aq]C\\[aq]: flags |= CLONE_NEWCGROUP; break;\n" " case \\[aq]i\\[aq]: flags |= CLONE_NEWIPC; break;\n" " case \\[aq]m\\[aq]: flags |= CLONE_NEWNS; break;\n" " case \\[aq]n\\[aq]: flags |= CLONE_NEWNET; break;\n" " case \\[aq]p\\[aq]: flags |= CLONE_NEWPID; break;\n" " case \\[aq]t\\[aq]: flags |= CLONE_NEWTIME; break;\n" " case \\[aq]u\\[aq]: flags |= CLONE_NEWUTS; break;\n" " case \\[aq]U\\[aq]: flags |= CLONE_NEWUSER; break;\n" " default: usage(argv[0]);\n" " }\n" " }\n" "\\&\n" " if (optind E= argc)\n" " usage(argv[0]);\n" "\\&\n" " if (unshare(flags) == -1)\n" " err(EXIT_FAILURE, \"unshare\");\n" "\\&\n" " execvp(argv[optind], &argv[optind]);\n" " err(EXIT_FAILURE, \"execvp\");\n" "}\n" msgstr "" #. SRC END #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(1), B(2), B(2), B(2), B(2), " "B(2), B(7)" msgstr "" #. commit f504d47be5e8fa7ecf2bf660b18b42e6960c0eb2 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I in the Linux kernel source tree " "(or I before Linux 4.12)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: SH #: debian-bookworm #, no-wrap msgid "VERSIONS" msgstr "" #. type: Plain text #: debian-bookworm msgid "The B() system call was added in Linux 2.6.16." msgstr "" #. type: Plain text #: debian-bookworm msgid "The B() system call is Linux-specific." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "/* unshare.c\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " A simple implementation of the unshare(1) command: unshare\n" " namespaces and execute a command.\n" "*/\n" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Esched.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Eunistd.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static void\n" "usage(char *pname)\n" "{\n" " fprintf(stderr, \"Usage: %s [options] program [arg...]\\en\", pname);\n" " fprintf(stderr, \"Options can be:\\en\");\n" " fprintf(stderr, \" -C unshare cgroup namespace\\en\");\n" " fprintf(stderr, \" -i unshare IPC namespace\\en\");\n" " fprintf(stderr, \" -m unshare mount namespace\\en\");\n" " fprintf(stderr, \" -n unshare network namespace\\en\");\n" " fprintf(stderr, \" -p unshare PID namespace\\en\");\n" " fprintf(stderr, \" -t unshare time namespace\\en\");\n" " fprintf(stderr, \" -u unshare UTS namespace\\en\");\n" " fprintf(stderr, \" -U unshare user namespace\\en\");\n" " exit(EXIT_FAILURE);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int flags, opt;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " flags = 0;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " while ((opt = getopt(argc, argv, \"CimnptuU\")) != -1) {\n" " switch (opt) {\n" " case \\[aq]C\\[aq]: flags |= CLONE_NEWCGROUP; break;\n" " case \\[aq]i\\[aq]: flags |= CLONE_NEWIPC; break;\n" " case \\[aq]m\\[aq]: flags |= CLONE_NEWNS; break;\n" " case \\[aq]n\\[aq]: flags |= CLONE_NEWNET; break;\n" " case \\[aq]p\\[aq]: flags |= CLONE_NEWPID; break;\n" " case \\[aq]t\\[aq]: flags |= CLONE_NEWTIME; break;\n" " case \\[aq]u\\[aq]: flags |= CLONE_NEWUTS; break;\n" " case \\[aq]U\\[aq]: flags |= CLONE_NEWUSER; break;\n" " default: usage(argv[0]);\n" " }\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (optind E= argc)\n" " usage(argv[0]);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (unshare(flags) == -1)\n" " err(EXIT_FAILURE, \"unshare\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " execvp(argv[optind], &argv[optind]);\n" " err(EXIT_FAILURE, \"execvp\");\n" "}\n" msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""