.\" -*- coding: UTF-8 -*- .\" Copyright 2006, Janak Desai .\" Copyright 2006-2012, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\" Patch Justification: .\" unshare system call is needed to implement, using PAM, .\" per-security_context and/or per-user namespace to provide .\" polyinstantiated directories. Using unshare and bind mounts, a .\" PAM module can create private namespace with appropriate .\" directories(based on user's security context) bind mounted on .\" public directories such as /tmp, thus providing an instance of .\" /tmp that is based on user's security context. Without the .\" unshare system call, namespace separation can only be achieved .\" by clone, which would require porting and maintaining all commands .\" such as login, and su, that establish a user session. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH unshare 2 "8. februar 2026" "Linux man\-pages 6.17" .SH NAVN unshare \- adskille dele af procesudførelseskonteksten .SH BIBLIOTEK Standard C library (\fIlibc\fP,\ \fI\-lc\fP) .SH SYNOPSIS .nf \fB#define _GNU_SOURCE\fP \fB#include \fP .P \fBint unshare(int \fP\fIflag\fP\fB);\fP .fi .SH BESKRIVELSE \fBunshare\fP() tillader at en proces (eller tråd) adskiller dele af dens afviklingskontekst, der aktuelt deles med andre processer (eller tråde). Dele af afviklingskonteksten, såsom monteringsnavnerummet, er delt implicit når en ny proces oprettes via \fBfork\fP(2) eller \fBvfork\fP(2), mens andre dele, såsom virtuel hukommelse, kan deles ved eksplicit anmodning, når en proces eller tråd oprettes via \fBclone\fP(2). .P Hovedbrugen af \fBunshare\fP() er at tillade en proces at kontrollere sin delte afviklingskontekst uden at oprette en ny proces. .P Argumentet \fIflag\fP er en bit\-maske, der angiver hvilke dele af afviklingskonteksten, der ikke skal deles. Dette argument er angivet af ORing together zero eller flere af de følgende konstanter: .TP \fBCLONE_FILES\fP Vend effekten om for \fBclone\fP(2) \fBCLONE_FILES\fP\-flaget. Fjern deling for fildeskriptortabellen, så at den kaldende proces ikke længere deler sine fildeskriptorer med enhver anden proces. .TP \fBCLONE_FS\fP Vend effekten om for \fBclone\fP(2) \fBCLONE_FS\fP\-flaget. Fjern deling for filsystemattributter, så at den kaldende proces ikke længere deler sin rodmappe (\fBchroot\fP(2)), nuværende mappe (\fBchdir\fP(2)), eller umask\-attributter (\fBumask\fP(2)) med enhver anden proces. .TP \fBCLONE_NEWCGROUP\fP (siden Linux 4.6) Dette flag har den samme effekt som \fBclone\fP(2) \fBCLONE_NEWCGROUP\fP\-flaget. Fjern deling for cgroup\-navnerummet. Brug af \fBCLONE_NEWCGROUP\fP kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. .TP \fBCLONE_NEWIPC\fP (siden Linux 2.6.19) Dette flag har den samme effekt som \fBclone\fP(2) \fBCLONE_NEWIPC\fP\-flaget. Fjern deling af IPC\-navnerummet, så at den kaldende proces har en privat kopi af IPC\-navnerummet, der ikke er delt med nogen anden proces. Angivelse af dette flag forudsætter automatisk også \fBCLONE_SYSVSEM\fP. Brug af \fBCLONE_NEWIPC\fP kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. .TP \fBCLONE_NEWNET\fP (siden Linux 2.6.24) Dette flag har den samme effekt som \fBclone\fP(2) \fBCLONE_NEWNET\fP\-flaget. Fjern deling for netværksnavnerummet, så den kaldende proces flyttes til et nyt netværksnavnerum, der ikke er delg med en eventuel tidligere proces. Brug af \fBCLONE_NEWNET\fP kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. .TP \fBCLONE_NEWNS\fP .\" 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. Dette flag har den samme effekt som \fBclone\fP(2) \fBCLONE_NEWNS\fP\-flaget. Fjern deling for monteringsnavnerummet, så den kaldende proces har en privat kopi af sit navnerum, der ikke deles med nogen anden proces. Angivelse af dette flag fortudsætter automatisk også \fBCLONE_FS\fP. Brug af \fBCLONE_NEWNS\fP kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. For yderligere information se \fBmount_namespaces\fP(7). .TP \fBCLONE_NEWPID\fP (siden Linux 3.8) Dette flag har den samme effekt som \fBclone\fP(2) \fBCLONE_NEWPID\fP\-flaget. Fjern deling for PID\-navnerummet, så at den kaldende proces har et nyt PID\-navnerum for sine underprocesser, der ikke deles med en eventuel tidligere proces. Den kaldende proces bliver \fIikke\fP flyttet ind i det nye navnerum. Den første underproces oprettet af den kaldende proces vil have proces\-id nr 1 og vil antage rollen af \fBinit\fP(1) i det nye navnerum. \fBCLONE_NEWPID\fP forudsætter automatisk også \fBCLONE_THREAD\fP. Brug af \fBCLONE_NEWPID\fP kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. For yderligere information, se \fBpid_namespaces\fP(7). .TP \fBCLONE_NEWTIME\fP (siden Linux 5.6) Fjern deling for tidsnavnerummet, så at den kaldende proces har et nyt tidsnavnerum for sine underprocesser, der ikke deles med en eventuel tidligere proces. Den kaldende proces flyttes \fIikke\fP ind i det nye navnerum. Brug af \fBCLONE_NEWTIME\fP kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. For yderligere information, se \fBtime_namespaces\fP(7). .TP \fBCLONE_NEWUSER\fP (siden Linux 3.8) Dette flag har den samme effekt som \fBclone\fP(2) \fBCLONE_NEWUSER\fP\-flaget. Fjern deling for brugernavnerummet, så at den kaldende proces flyttes ind i et nyt brugernavnerum, der ikke deles med en eventuel tidligere proces. Som med underprocessen oprettet af \fBclone\fP(2) med \fBCLONE_NEWUSER\fP\-flaget får kalderen et fuldt sæt af funktionaliteter i det nye navnerum. .IP .\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 .\" https://lwn.net/Articles/543273/ \fBCLONE_NEWUSER\fP kræver at den kaldende proces ikke er trådet; angivelse af \fBCLONE_NEWUSER\fP forudsætter automatisk \fBCLONE_THREAD\fP. Da Linux 3.9, \fBCLONE_NEWUSER\fP også automatisk forudsætter \fBCLONE_FS\fP. \fBCLONE_NEWUSER\fP kræver at bruger\-id'et og gruppe\-id'et for den kaldende proces oversættes til bruger\-id'erne og gruppe\-id'erne i brugerens navnerum for den kaldende proces på tidspunktet for kaldet. .IP For yderligere information om brugernavnerum, se \fBuser_namespaces\fP(7). .TP \fBCLONE_NEWUTS\fP (siden Linux 2.6.19) Dette flag har den samme effekt som \fBclone\fP(2) \fBCLONE_NEWUTS\fP\-flaget. Fjern deling af UTS IPC\-navnerummet, så at den kaldende proces har en privat kopi af UTS\-navnerummet, der ikke deles med nogen anden proces. Brug af \fBCLONE_NEWUTS\fP kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. .TP \fBCLONE_SYSVSEM\fP (siden Linux 2.6.26) .\" commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7 .\" CLONE_NEWNS If CLONE_SIGHAND is set and signals are also being shared .\" (i.e., current->signal->count > 1), force CLONE_THREAD. Dette flag vender effekten af \fBclone\fP(2) \fBCLONE_SYSVSEM\fP\-flaget om. Fjern deling for System\ V sempahore\-justeringsværdier (\fIsemadj\fP), så at den kaldende proces har en ny tom \fIsemadj\fP\-liste, der ikke deles med nogen anden proces. Hvis dette er den sidste proces, der har en refernece til processens nuværende \fIsemadj\fP\-liste, så anvendes justeringerne i den liste til de tilsvarende semaforer, som beskrevet i \fBsemop\fP(2). .P .\" 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() Derudover kan \fBCLONE_THREAD\fP, \fBCLONE_SIGHAND\fP og \fBCLONE_VM\fP angives i \fIflag\fP hvis kalderen er en enkelt tråd (dvs. deler ikke sit adresserum med en anden proces eller tråd). I dette tilfælde har disse flag ingen effekt. (Bemærk også at angivelse af \fBCLONE_THREAD\fP automatisk forudsætter \fBCLONE_VM\fP, og angivelse af \fBCLONE_VM\fP automatisk forudsætter \fBCLONE_SIGHAND\fP). Hvis processen har flere tråde så medfører brug af disse flag en fejl. .P Hvis \fIflag\fP er angivet som nul, så er \fBunshare\fP() en no\-op; ingen ændringer laves til den kaldende proces afviklingskontekst. .SH RETURVÆRDI Ved succes returneres nul. Ved fejl returneres \-1 og \fIerrno\fP er angivet for at indikere fejlen. .SH FEJL .TP \fBEINVAL\fP En ugyldig bit var angivet i \fIflag\fP. .TP \fBEINVAL\fP \fBCLONE_THREAD\fP, \fBCLONE_SIGHAND\fP eller \fBCLONE_VM\fP var angivet i \fIflag\fP, og kalderen er flertrådet. .TP \fBEINVAL\fP \fBCLONE_NEWIPC\fP var angivet i \fIflag\fP, men kernen var ikke konfigureret med tilvalgene \fBCONFIG_SYSVIPC\fP og \fBCONFIG_IPC_NS\fP. .TP \fBEINVAL\fP \fBCLONE_NEWNET\fP var angivet i \fIflag\fP, men kernen var ikke konfigureret med tilvalget \fBCONFIG_NET_NS\fP. .TP \fBEINVAL\fP \fBCLONE_NEWPID\fP var angivet i \fIflag\fP, men kernen var ikke konfigureret med tilvalget \fBCONFIG_PID_NS\fP. .TP \fBEINVAL\fP \fBCLONE_NEWUSER\fP var angivet i \fIflag\fP, men kernen var ikke konfigureret med tilvalget \fBCONFIG_USER_NS\fP. .TP \fBEINVAL\fP \fBCLONE_NEWUTS\fP var angivet i \fIflag\fP, men kernen var ikke konfigureret med tilvalget \fBCONFIG_UTS_NS\fP. .TP \fBEINVAL\fP \fBCLONE_NEWPID\fP var angivet i \fIflag\fP, men processen har tidligere kaldt \fBunshare\fP() med flaget \fBCLONE_NEWPID\fP. .TP \fBENOMEM\fP Kan ikke allokere tilstrækkelig hukommelse til at kopiere dele af kalderens kontekst, der ikke længere skal deles. .TP \fBENOSPC\fP (siden Linux 3.7) .\" commit f2302505775fd13ba93f034206f1e2a587017929 \fBCLONE_NEWPID\fP var angivet i flag, men begrænsningen på indlejringsdybden for PID\-navnerum ville være overskredet; se \fBpid_namespaces\fP(7). .TP \fBENOSPC\fP (siden Linux 4.9; tidligere \fBEUSERS\fP) \fBCLONE_NEWUSER\fP var angivet i \fIflag\fP, og kaldet ville medføre at begrænsningen på antallet af indlejrede brugernavnerum ville blive overskredt. Se \fBuser_namespaces\fP(7). .IP Fra Linux 3.11 til Linux 4.8, var fejlen diagnosticeret i dette tilfælde \fBEUSERS\fP. .TP \fBENOSPC\fP (siden Linux 4.9) En af værdierne i \fIflag\fP angav oprettelsen af et nyt brugernavnerum, men dette ville have medført at begrænsningen defineret af den tilsvarende fil i \fI/proc/sys/user\fP ville blive overskredet. For yderligere information, se \fBnamespaces\fP(7). .TP \fBEPERM\fP Den kaldende proces havde ikke de krævede privilegier for denne operation. .TP \fBEPERM\fP \fBCLONE_NEWUSER\fP var angivet i \fIflag\fP, men enten har det effektive bruger\-id eller det effektive gruppe\-id for kalderen ikke en oversættelse i overnavnerummet (se \fBuser_namespaces\fP(7)). .TP \fBEPERM\fP (siden Linux 3.9) .\" commit 3151527ee007b73a0ebd296010f1c0454a919c7d .\" FIXME What is the rationale for this restriction? \fBCLONE_NEWUSER\fP var angivet i \fIflag\fP og kalderen er i et chroot\-miljø (dvs. kalderens rodmappe matcher ikke rodmappen for monteringsnavnerummet hvor det befinder sig). .TP \fBEUSERS\fP (fra Linux 3.11 til Linux 4.8) \fBCLONE_NEWUSER\fP var angivet i \fIflag\fP, og begrænsningen på antallet af indlejrede brugernavnerum er for højt. Se diskussionen for \fBENOSPC\fP\-fejlen ovenfor. .SH STANDARDER Linux. .SH HISTORIK Linux 2.6.16. .SH NOTER .\" 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. .\" Ikke alle af processens attributter, der kan deles når en ny proces oprettes via \fBclone\fP(2), kan få fjernet deling via \fBunshare\fP(). Specielt fra og med kernen 3.8 implementerer \fBunshare\fP() ikke flag, der vender effekten af \fBCLONE_SIGHAND\fP, \fBCLONE_THREAD\fP eller \fBCLONE_VM\fP om. Sådan funktionalitet kan blive tilføjet i fremtiden, hvis krævet. .P Oprettelse af alle slags navnerume, undtagen brugernavnerum, kræver funktionaliteten \fBCAP_SYS_ADMIN\fP. Da oprettelsen af et brugernavnerum automatisk giver et fuld sæt af funktionalitet, kræver oprettelse af både et brugernavnerum og andre typer af navnerum i det samme \fBunshare\fP()\-kald ikke \fBCAP_SYS_ADMIN\fP\-funktionalitet i det oprindelige navnerum. .SH EKSEMPLER Programmet nedenfor tilbyder en simpel implementering af kommandoen \fBunshare\fP(1), der fjerner deling for et eller flere navnerum og afvikler kommandoen angivet i sine kommandolinjeargumenter. Her er et eksempel på brug af dette program, der afvikles i en skal i et nyt monteringsnavnerum, og verificerer at den oprindelige skal og den nye skal er i separate monteringsnavnerum: .P .in +4n .EX $\fB readlink /proc/$$/ns/mnt\fP; mnt:[4026531840] $\fB sudo ./unshare \-m /bin/bash\fP; #\fB readlink /proc/$$/ns/mnt\fP; mnt:[4026532325] .EE .in .P De forskellige resultater for de to \fBreadlink\fP(1)\-kommandoer viser, at de to skaller er i forskellige monteringsnavnerum. .SS Programkilde .\" SRC BEGIN (unshare.c) \& .EX /* unshare.c \& En simpel implementering af kommandoen unshare(1): unshare navnerum og afvikl en kommando. */ #define _GNU_SOURCE #include #include #include #include #include \& static void usage(char *pname) { fprintf(stderr, "Brug: %s [tilvalg] program [arg...]\[rs]n", pnavn); fprintf(stderr, "Tilvalg kan være:\[rs]n"); fprintf(stderr, " \-C unshare cgroup\-navnerum\[rs]n"); fprintf(stderr, " \-i unshare IPC\-navnerum\[rs]n"); fprintf(stderr, " \-m unshare mount\-navnerum\[rs]n"); fprintf(stderr, " \-n unshare network\-navnerum\[rs]n"); fprintf(stderr, " \-p unshare PID\-navnerum\[rs]n"); fprintf(stderr, " \-t unshare time\-navnerum\[rs]n"); fprintf(stderr, " \-u unshare UTS\-navnerum\[rs]n"); fprintf(stderr, " \-U unshare user\-navnerum\[rs]n"); exit(EXIT_FAILURE); } \& int main(int argc, char *argv[]) { int flags, opt; \& flags = 0; \& while ((opt = getopt(argc, argv, "CimnptuU")) != \-1) { switch (opt) { case \[aq]C\[aq]: flags |= CLONE_NEWCGROUP; break; case \[aq]i\[aq]: flags |= CLONE_NEWIPC; break; case \[aq]m\[aq]: flags |= CLONE_NEWNS; break; case \[aq]n\[aq]: flags |= CLONE_NEWNET; break; case \[aq]p\[aq]: flags |= CLONE_NEWPID; break; case \[aq]t\[aq]: flags |= CLONE_NEWTIME; break; case \[aq]u\[aq]: flags |= CLONE_NEWUTS; break; case \[aq]U\[aq]: flags |= CLONE_NEWUSER; break; default: usage(argv[0]); } } \& if (optind >= argc) usage(argv[0]); \& if (unshare(flags) == \-1) err(EXIT_FAILURE, "unshare"); \& execvp(argv[optind], &argv[optind]); err(EXIT_FAILURE, "execvp"); } .EE .\" SRC END .SH "SE OGSÅ" \fBunshare\fP(1), \fBclone\fP(2), \fBfork\fP(2), \fBkcmp\fP(2), \fBsetns\fP(2), \fBvfork\fP(2), \fBnamespaces\fP(7) .P \fIDocumentation/userspace\-api/unshare.rst\fP i Linuxkernens kildetræ .PP .SH OVERSÆTTELSE Oversættere af denne manual til dansk Joe Hansen . .PP Denne oversættelse er gratis dokumentation; læs .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. .PP Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til .MT debian-l10n-danish@lists.debian.org .ME .