diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /po/sv/man7/user_namespaces.7.po | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'po/sv/man7/user_namespaces.7.po')
-rw-r--r-- | po/sv/man7/user_namespaces.7.po | 3391 |
1 files changed, 3391 insertions, 0 deletions
diff --git a/po/sv/man7/user_namespaces.7.po b/po/sv/man7/user_namespaces.7.po new file mode 100644 index 00000000..74aafbbe --- /dev/null +++ b/po/sv/man7/user_namespaces.7.po @@ -0,0 +1,3391 @@ +# Swedish translation of manpages +# This file is distributed under the same license as the manpages-l10n package. +# Copyright © of this file: +# Göran Uddeborg <goeran@uddeborg.se>, 2023. +msgid "" +msgstr "" +"Project-Id-Version: manpages-l10n 4.19.0\n" +"POT-Creation-Date: 2024-03-01 17:13+0100\n" +"PO-Revision-Date: 2023-08-26 20:08+0200\n" +"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" +"Language-Team: Swedish <Tp-sv@listor.tp-sv.se>\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. type: TH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "user_namespaces" +msgstr "user_namespaces" + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "2023-10-31" +msgstr "31 oktober 2023" + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "Linux man-pages 6.06" +msgstr "Linux man-pages 6.06" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NAME" +msgstr "NAMN" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "user_namespaces - overview of Linux user namespaces" +msgstr "user_namespaces — översikt över Linux användarnamnrymder" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "DESCRIPTION" +msgstr "BESKRIVNING" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "For an overview of namespaces, see B<namespaces>(7)." +msgstr "För en översikt över namnrymder, se B<namespaces>(7)." + +# +#. FIXME: This page says very little about the interaction +#. of user namespaces and keys. Add something on this topic. +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"User namespaces isolate security-related identifiers and attributes, in " +"particular, user IDs and group IDs (see B<credentials>(7)), the root " +"directory, keys (see B<keyrings>(7)), and capabilities (see " +"B<capabilities>(7)). A process's user and group IDs can be different inside " +"and outside a user namespace. In particular, a process can have a normal " +"unprivileged user ID outside a user namespace while at the same time having " +"a user ID of 0 inside the namespace; in other words, the process has full " +"privileges for operations inside the user namespace, but is unprivileged for " +"operations outside the namespace." +msgstr "" +"Användarnamnrymder isolerar säkerhetsrelaterade identifierare och attribut, " +"mer exakt, användar-ID:n och grupp-ID:n (se B<credentials>(7)), " +"rotkatalogen, nycklar (se B<keyring>(7)) och förmågor (se " +"B<capabilities>(7)). En process användar- och grupp-ID:n kan vara olika " +"inuti och utanför en användarnamnrymd. I synnerhet kan en process ha ett " +"normalt oprivilegierat användar-ID utanför en användarnamnrymd medan den på " +"samma gång har användar-ID:t 0 inuti namnrymden; med andra ord, processen " +"har fullständiga rättigheter vid åtgärder inuti användarnamnrymden, men är " +"oprivilegierad vid åtgärder utanför namnrymden." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Nested namespaces, namespace membership" +msgstr "Nästade namnrymder, medlemskap i namnrymder" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"User namespaces can be nested; that is, each user namespace\\[em]except the " +"initial (\"root\") namespace\\[em]has a parent user namespace, and can have " +"zero or more child user namespaces. The parent user namespace is the user " +"namespace of the process that creates the user namespace via a call to " +"B<unshare>(2) or B<clone>(2) with the B<CLONE_NEWUSER> flag." +msgstr "" +"Användarnamnrymder kan nästas; det vill säga, varje användarnamnrymd \\[em] " +"utom den initiala (”rot-”)namnrymden \\[em] har en föräldraanvändarnamnrymd, " +"och kan ha noll eller flera barnanvändarnamnrymder. " +"Föräldraanvändarnamnrymden är användarnamnrymden för processen som skapar " +"användarnamnrymden via ett anrop av B<unshare>(2) eller B<clone>(2) med " +"flaggan B<CLONE_NEWUSER>." + +#. commit 8742f229b635bf1c1c84a3dfe5e47c814c20b5c8 +#. FIXME Explain the rationale for this limit. (What is the rationale?) +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The kernel imposes (since Linux 3.11) a limit of 32 nested levels of user " +"namespaces. Calls to B<unshare>(2) or B<clone>(2) that would cause this " +"limit to be exceeded fail with the error B<EUSERS>." +msgstr "" +"Kärnan lägger (från Linux 3.11) en gräns på 32 nästade nivåer med " +"användarnamnrymder. Anrop av B<unshare>(2) eller B<clone>(2) som annars " +"skulle orsaka att denna gräns överskrids misslyckas med felet B<EUSERS>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Each process is a member of exactly one user namespace. A process created " +"via B<fork>(2) or B<clone>(2) without the B<CLONE_NEWUSER> flag is a " +"member of the same user namespace as its parent. A single-threaded process " +"can join another user namespace with B<setns>(2) if it has the " +"B<CAP_SYS_ADMIN> in that namespace; upon doing so, it gains a full set of " +"capabilities in that namespace." +msgstr "" +"Varje process är medlem i exakt en användarnamnrymd. En process som skapas " +"via B<fork>(2) eller B<clone>(2) utan flaggan B<CLONE_NEWUSER> är medlem av " +"samma användarnamnrymd som sin förälder. En enkeltrådad process kan gå in i " +"en annan användarnamnrymd med B<setns>(2) om den har B<CAP_SYS_ADMIN> i den " +"namnrymden; när den gör det får den en fullständig uppsättning av förmågor i " +"den namnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A call to B<clone>(2) or B<unshare>(2) with the B<CLONE_NEWUSER> flag " +"makes the new child process (for B<clone>(2)) or the caller (for " +"B<unshare>(2)) a member of the new user namespace created by the call." +msgstr "" +"Ett anrop av B<clone>(2) eller B<unshare>(2) med flaggan B<CLONE_NEWUSER> " +"gör den nya barnprocessen (för B<clone>(2)) eller anroparen (för " +"B<unshare>(2)) medlem av den nya användarnamnrymden som skapas av anropet." + +# #-#-#-#-# debian-bullseye: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +# +# #-#-#-#-# debian-unstable: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +# +# #-#-#-#-# fedora-38: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +# +# #-#-#-#-# mageia-cauldron: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +# +# #-#-#-#-# opensuse-leap-15-5: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +# +#. #-#-#-#-# archlinux: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. type: Plain text +#. #-#-#-#-# debian-bookworm: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. ============================================================ +#. type: Plain text +#. #-#-#-#-# debian-unstable: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. type: Plain text +#. #-#-#-#-# fedora-40: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. type: Plain text +#. #-#-#-#-# fedora-rawhide: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. type: Plain text +#. #-#-#-#-# mageia-cauldron: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. type: Plain text +#. #-#-#-#-# opensuse-leap-15-6: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. type: Plain text +#. #-#-#-#-# opensuse-tumbleweed: user_namespaces.7.pot (PACKAGE VERSION) #-#-#-#-# +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<NS_GET_PARENT> B<ioctl>(2) operation can be used to discover the " +"parental relationship between user namespaces; see B<ioctl_ns>(2)." +msgstr "" +"Åtgärden B<NS_GET_PARENT> till B<ioctl>(2) kan användas för att upptäcka " +"föräldrarelationen mellan användarnamnrymder; se B<ioctl_ns>(2)." + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A task that changes one of its effective IDs will have its dumpability reset " +"to the value in I</proc/sys/fs/suid_dumpable>. This may affect the " +"ownership of proc files of child processes and may thus cause the parent to " +"lack the permissions to write to mapping files of child processes running in " +"a new user namespace. In such cases making the parent process dumpable, " +"using B<PR_SET_DUMPABLE> in a call to B<prctl>(2), before creating a child " +"process in a new user namespace may rectify this problem. See B<prctl>(2) " +"and B<proc>(5) for details on how ownership is affected." +msgstr "" +"En uppgift som ändrar ett av sina effektiva ID:n kommer ha sin dumpbarhet " +"återställd till värdet i I</proc/sys/fs/suid_dumpable>. Detta kan påverka " +"ägandet av proc-filer för barnprocesser och kan alltså orsaka att föräldern " +"kommer att sakna rättigheter att skriva till avbildningsfiler för " +"barnprocesser som kör i en ny användarnamnrymd. I dessa fall kan man genom " +"att göra processen dumpbar med B<PR_SET_DUMPABLE> i ett anrop av B<prctl>(2) " +"före en barnprocess skapas i en ny användarnamnrymd åtgärda detta problem. " +"Se B<prctl>82) och B<proc>(5) för detaljer om hur ägarskap påverkas." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Capabilities" +msgstr "Förmågor" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The child process created by B<clone>(2) with the B<CLONE_NEWUSER> flag " +"starts out with a complete set of capabilities in the new user namespace. " +"Likewise, a process that creates a new user namespace using B<unshare>(2) " +"or joins an existing user namespace using B<setns>(2) gains a full set of " +"capabilities in that namespace. On the other hand, that process has no " +"capabilities in the parent (in the case of B<clone>(2)) or previous (in the " +"case of B<unshare>(2) and B<setns>(2)) user namespace, even if the new " +"namespace is created or joined by the root user (i.e., a process with user " +"ID 0 in the root namespace)." +msgstr "" +"Barnprocesserna som skapas med B<clone>(2) med flaggan B<CLONE_NEWUSER> " +"börjar med en fullständig uppsättning av förmågor i den nya " +"användarnamnrymden. Likadant får en process som skapar en ny " +"användarnamnrymd med B<unshare>(2) eller går in i en befintlig " +"användarnamnrymd med B<setns>(2) en fullständig uppsättning rättigheter i " +"den namnrymden. Å andra sidan har den processen inga förmågor i förälderns " +"(i fallet B<clone>(2)) eller tidigare (i fallet B<unshare>(2) och " +"B<setns>(2)) användarnamnrymd, även om root-anvädaren skapade eller gick in " +"i den nya namnrymden (d.v.s., en process med användar-ID 0 i rotnamnrymden)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that a call to B<execve>(2) will cause a process's capabilities to be " +"recalculated in the usual way (see B<capabilities>(7)). Consequently, " +"unless the process has a user ID of 0 within the namespace, or the " +"executable file has a nonempty inheritable capabilities mask, the process " +"will lose all capabilities. See the discussion of user and group ID " +"mappings, below." +msgstr "" +"Observera att ett anrop av B<execve>(2) kommer göra att processens förmågor " +"räknas om på det vanliga sättet (se B<capabilities>(7)). Alltså, om inte " +"processen har användar-ID 0 inom namnrymden, eller den körbara filen har en " +"ärvbar förmågemask som inte är tom, kommer processen förlora alla förmågor. " +"Se diskussionen om användar- och grupp-ID-avbildningar nedan." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A call to B<clone>(2) or B<unshare>(2) using the B<CLONE_NEWUSER> flag or " +"a call to B<setns>(2) that moves the caller into another user namespace " +"sets the \"securebits\" flags (see B<capabilities>(7)) to their default " +"values (all flags disabled) in the child (for B<clone>(2)) or caller (for " +"B<unshare>(2) or B<setns>(2)). Note that because the caller no longer has " +"capabilities in its original user namespace after a call to B<setns>(2), it " +"is not possible for a process to reset its \"securebits\" flags while " +"retaining its user namespace membership by using a pair of B<setns>(2) " +"calls to move to another user namespace and then return to its original user " +"namespace." +msgstr "" +"Ett anrop av B<clone>(2) eller B<unshare>(2) med flaggan B<CLONE_NEWUSER> " +"eller ett anrop av B<setns>(2) som flyttar anroparen in i en annan " +"användarnamnrymd sätter flaggorna ”securebits” (se B<capabilities>(7)) till " +"sitt standardvärde (alla flaggor avslagna) i barnet (för B<clone>(2)) eller " +"anroparen (för B<unshare>(2) eller B<setns>(2)). Observera att eftersom " +"anroparen inte längre har förmågor i sin originalanvändarnamnrymd efter " +"anropet av B<setns>(2) är det inte möjligt för en process att återställa " +"sina flaggor ”securebits” medan den behåller sitt medlemskap i " +"användarnamnrymden genom att använda ett par av anrop av B<setns>(2) för att " +"flytta till en annan användarnamnrymd och sedan återvända till sin " +"originalanvändarnamnrymd." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The rules for determining whether or not a process has a capability in a " +"particular user namespace are as follows:" +msgstr "" +"Reglerna för att avgöra huruvida en process har en förmåga eller inte i en " +"viss användarnamnrymd är som följer:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "\\[bu]" +msgstr "\\[bu]" + +#. In the 3.8 sources, see security/commoncap.c::cap_capable(): +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A process has a capability inside a user namespace if it is a member of that " +"namespace and it has the capability in its effective capability set. A " +"process can gain capabilities in its effective capability set in various " +"ways. For example, it may execute a set-user-ID program or an executable " +"with associated file capabilities. In addition, a process may gain " +"capabilities via the effect of B<clone>(2), B<unshare>(2), or B<setns>(2), " +"as already described." +msgstr "" +"En process har en förmåga inuti en användarnamnrymd om den är medlem av den " +"namnrymden och den har förmågan i sin effektiva förmågemängd. En process kan " +"få förmågor i sin effektiva förmågemängd på olika sätt. Till exempel kan den " +"köra ett sätt-användar-ID-program eller en körbar fil associerad med " +"filförmågor. Dessutom kan en process få förmågor via effekten av " +"B<clone>(2), B<unshare>(2) eller B<setns>(2), som redan beskrivits." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If a process has a capability in a user namespace, then it has that " +"capability in all child (and further removed descendant) namespaces as well." +msgstr "" +"Om en process har en förmåga i en användarnamnrymd, då har den den förmågan " +"i alla barn- (och mer avlägsna avkomme-)namnrymder också." + +# +#. * The owner of the user namespace in the parent of the +#. * user namespace has all caps. +#. (and likewise associates the effective group ID of the creating process +#. with the namespace). +#. See kernel commit 520d9eabce18edfef76a60b7b839d54facafe1f9 for a fix +#. on this point +#. This includes the case where the process executes a set-user-ID +#. program that confers the effective UID of the creator of the namespace. +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a user namespace is created, the kernel records the effective user ID " +"of the creating process as being the \"owner\" of the namespace. A process " +"that resides in the parent of the user namespace and whose effective user ID " +"matches the owner of the namespace has all capabilities in the namespace. " +"By virtue of the previous rule, this means that the process has all " +"capabilities in all further removed descendant user namespaces as well. The " +"B<NS_GET_OWNER_UID> B<ioctl>(2) operation can be used to discover the user " +"ID of the owner of the namespace; see B<ioctl_ns>(2)." +msgstr "" +"När en användarnamnrymd skapas sparar kärnan det effektiva användar-ID:t för " +"processen som skapar den som varandes ”ägaren” till namnrymden. En process " +"som bor i föräldern till användarnamnrymden och vars effektiva användar-ID " +"stämmer med ägaren till namnrymden har alla förmågor i namnrymden. Tack vare " +"föregående regel har processen alla förmågor i alla mer avlägsna " +"avkommeanvändarnamnrymder också. Åtgärden B<NS_GET_OWNER_UID> till " +"B<ioctl>(2) kan användas för att upptäcka användar-ID för namnrymdens ägare; " +"se B<ioctl_ns>(2)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Effect of capabilities within a user namespace" +msgstr "Effekten av förmågor inom en användarnamnrymd" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Having a capability inside a user namespace permits a process to perform " +"operations (that require privilege) only on resources governed by that " +"namespace. In other words, having a capability in a user namespace permits " +"a process to perform privileged operations on resources that are governed by " +"(nonuser) namespaces owned by (associated with) the user namespace (see the " +"next subsection)." +msgstr "" +"Att ha en förmåga inuti en användarnamnrymd tillåter en process att utföra " +"åtgärder (som kräver privilegier) endast på resurser som styrs av den " +"namnrymden. Med andra ord, att ha en förmåga i en användarnamnrymd tillåter " +"en process att utföra privilegierade åtgärder på resurser som styrs av (icke " +"användar-)namnrymder som ägs av (är associerade med) användarnamnrymden (se " +"nästa underavdelning)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"On the other hand, there are many privileged operations that affect " +"resources that are not associated with any namespace type, for example, " +"changing the system (i.e., calendar) time (governed by B<CAP_SYS_TIME>), " +"loading a kernel module (governed by B<CAP_SYS_MODULE>), and creating a " +"device (governed by B<CAP_MKNOD>). Only a process with privileges in the " +"I<initial> user namespace can perform such operations." +msgstr "" +"Däremot finns det många privilegierade åtgärder som påverkar resurser som " +"inte är associerade med någon namnrymdstyp, till exempel, att ändra " +"systemtiden (d.v.s., kalendertiden) (som styrs av B<CAP_SYS_TIME>), att " +"ladda kärnmoduler (som styrs av B<CAP_SYS_MODULE>) och att skapa en enhet " +"(som styrs av B<CAP_MKNOD>). Endast en process med privilegier i den " +"I<initiala> användarnamnrymden kan utföra sådana åtgärder." + +#. fs_flags = FS_USERNS_MOUNT in kernel sources +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Holding B<CAP_SYS_ADMIN> within the user namespace that owns a process's " +"mount namespace allows that process to create bind mounts and mount the " +"following types of filesystems:" +msgstr "" +"Att hålla B<CAP_SYS_ADMIN> inom användarnamnrymden som äger en process " +"monteringsnamnrymd gör att den processen kan skapa bindmonteringar och " +"montera följande typer av filsystem:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I</proc> (since Linux 3.8)" +msgstr "I</proc> (från Linux 3.8)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I</sys> (since Linux 3.8)" +msgstr "I</sys> (från Linux 3.8)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I<devpts> (since Linux 3.9)" +msgstr "I<devpts> (från Linux 3.9)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "B<tmpfs>(5) (since Linux 3.9)" +msgstr "B<tmpfs>(5) (från Linux 3.9)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I<ramfs> (since Linux 3.9)" +msgstr "I<ramfs> (från Linux 3.9)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I<mqueue> (since Linux 3.9)" +msgstr "I<mqueue> (från Linux 3.9)" + +#. commit b2197755b2633e164a439682fb05a9b5ea48f706 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I<bpf> (since Linux 4.4)" +msgstr "I<bpf> (från Linux 4.4)" + +#. commit 92dbc9dedccb9759c7f9f2f0ae6242396376988f +#. commit 4cb2c00c43b3fe88b32f29df4f76da1b92c33224 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I<overlayfs> (since Linux 5.11)" +msgstr "I<overlayfs> (från Linux 5.11)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Holding B<CAP_SYS_ADMIN> within the user namespace that owns a process's " +"cgroup namespace allows (since Linux 4.6) that process to the mount the " +"cgroup version 2 filesystem and cgroup version 1 named hierarchies (i.e., " +"cgroup filesystems mounted with the I<\"none,name=\"> option)." +msgstr "" +"Att hålla B<CAP_SYS_ADMIN> inom användarnamnrymden som äger en process " +"cgroup-namnrymd gör (från Linux 4.6) att den processen kan montera " +"filsystemet cgroup version 2 och namngivna hierarkier av filsystemet cgroup " +"verson 1 (d.v.s., cgroup-filsystem monterade med flaggan I<\"none,name=\">)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Holding B<CAP_SYS_ADMIN> within the user namespace that owns a process's PID " +"namespace allows (since Linux 3.8) that process to mount I</proc> " +"filesystems." +msgstr "" +"Att hålla B<CAP_SYS_ADMIN> inom användarnamnrymden som äger en process PID-" +"namnrymd gör (från Linux 3.8) att den processen kan montera filsystemet I</" +"proc>." + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note, however, that mounting block-based filesystems can be done only by a " +"process that holds B<CAP_SYS_ADMIN> in the initial user namespace." +msgstr "" +"Observera dock att montering av blockbaserade filsystem endast kan göras av " +"en process som håller B<CAP_SYS_ADMIN> i den initiala användarnamnrymden." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Interaction of user namespaces and other types of namespaces" +msgstr "Interaktion mellan användarnamnrymder och andra typer av namnrymder" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Starting in Linux 3.8, unprivileged processes can create user namespaces, " +"and the other types of namespaces can be created with just the " +"B<CAP_SYS_ADMIN> capability in the caller's user namespace." +msgstr "" +"Med början från Linux 3.8 kan oprivilegierade processer skapa " +"användarnamnrymder, och de andra typerna av namnrymder kan skapas med bara " +"förmågan B<CAP_SYS_ADMIN> i anroparens användarnamnrymd." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a nonuser namespace is created, it is owned by the user namespace in " +"which the creating process was a member at the time of the creation of the " +"namespace. Privileged operations on resources governed by the nonuser " +"namespace require that the process has the necessary capabilities in the " +"user namespace that owns the nonuser namespace." +msgstr "" +"När en annan namnrymd än en användarnamnrymd skapas ägs den av " +"användarnamnrymden processen som skapade den var en medlem i vid tidpunkten " +"då namnrymden skapades. Privilegierade åtgärder på resurser som styrs av en " +"icke-användarnamnrymd kräver att processen har de nödvändiga förmågorna i " +"användarnamnrymden som äger den icke-användarnamnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If B<CLONE_NEWUSER> is specified along with other B<CLONE_NEW*> flags in a " +"single B<clone>(2) or B<unshare>(2) call, the user namespace is guaranteed " +"to be created first, giving the child (B<clone>(2)) or caller " +"(B<unshare>(2)) privileges over the remaining namespaces created by the " +"call. Thus, it is possible for an unprivileged caller to specify this " +"combination of flags." +msgstr "" +"Om B<CLONE_NEWUSER> anges tillsammans med andra flaggor B<CLONE_NEW*> i ett " +"enskilt anrop av B<clone>(2) eller B<unshare>(2) garanteras det att " +"användarnamnrymden skapas först vilket ger barnet (B<clone>(2)) eller " +"anroparen (B<unshare>(2)) privilegier över de andra namnrymderna som skapas " +"av anropet. Det är alltså möjligt för en oprivilegierad anropare att ange " +"denna kombination av flaggor." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a new namespace (other than a user namespace) is created via " +"B<clone>(2) or B<unshare>(2), the kernel records the user namespace of the " +"creating process as the owner of the new namespace. (This association can't " +"be changed.) When a process in the new namespace subsequently performs " +"privileged operations that operate on global resources isolated by the " +"namespace, the permission checks are performed according to the process's " +"capabilities in the user namespace that the kernel associated with the new " +"namespace. For example, suppose that a process attempts to change the " +"hostname (B<sethostname>(2)), a resource governed by the UTS namespace. In " +"this case, the kernel will determine which user namespace owns the process's " +"UTS namespace, and check whether the process has the required capability " +"(B<CAP_SYS_ADMIN>) in that user namespace." +msgstr "" +"När en ny namnrymd (annan än en användarnamnrymd) skapas via B<clone>(2) " +"eller B<unshare>(2) registrerar kärnan användarnamnrymden för processen som " +"skapar den som ägare till den nya namnrymden. (Denna koppling kan inte " +"ändras.) När en process i den nya namnrymden senare utför privilegierade " +"åtgärder som verkar på globala resurser isolerade av namnrymden utförs " +"rättighetskontrollerna enligt processens förmågor i användarnamnrymden som " +"kärnan associerade med den nya namnrymden. Till exempel, antag att en " +"process försöker ändra värdnamnet (B<sethostname>(2)), en resurs som styrs " +"av UTS-namnrymden. I detta fall kommer kärnan avgöra vilken användarnamnrymd " +"som äger processens UTS-namnrymd, och kontrollera huruvida processen har den " +"nödvändiga förmågan (B<CAP_SYS_ADMIN>) i den användarnamnrymden." + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<NS_GET_USERNS> B<ioctl>(2) operation can be used to discover the user " +"namespace that owns a nonuser namespace; see B<ioctl_ns>(2)." +msgstr "" +"B<ioctl>(2)-åtgärden B<NS_GET_USERNS> kan användas för att hitta " +"användarnamnrymden som äger en icke-användarnamnrymd; se B<ioctl_ns>(2)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "User and group ID mappings: uid_map and gid_map" +msgstr "Användar- och grupp-ID-avbildningar: uid_map och gid_map" + +#. commit 22d917d80e842829d0ca0a561967d728eb1d6303 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a user namespace is created, it starts out without a mapping of user " +"IDs (group IDs) to the parent user namespace. The I</proc/>pidI</uid_map> " +"and I</proc/>pidI</gid_map> files (available since Linux 3.5) expose the " +"mappings for user and group IDs inside the user namespace for the process " +"I<pid>. These files can be read to view the mappings in a user namespace " +"and written to (once) to define the mappings." +msgstr "" +"När en användarnamnrymd skapas börjar den utan någon avbildning av användar-" +"ID:n (grupp-ID:n) till förälderns användarnamnrymd. Filerna I</proc/>pidI</" +"uid_map> och I</proc/>pidI</gid_map> (tillgängliga från Linux 3.5) visar " +"avbildningarna för användar- och grupp-ID:n inuti användarnamnrymden för " +"processen I<pid>. Dessa filer kan läsas för att visa avbildningarna i en " +"användarnamnrymd och skrivas till (en gång) för att definiera avbildningarna." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The description in the following paragraphs explains the details for " +"I<uid_map>; I<gid_map> is exactly the same, but each instance of \"user ID\" " +"is replaced by \"group ID\"." +msgstr "" +"Beskrivningen i följande stycken förklarar detaljerna för I<uid_map>; " +"I<gid_map> är exakt likadan, med varje förekomst av ”användar-ID” ersatt med " +"”grupp-ID”." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<uid_map> file exposes the mapping of user IDs from the user namespace " +"of the process I<pid> to the user namespace of the process that opened " +"I<uid_map> (but see a qualification to this point below). In other words, " +"processes that are in different user namespaces will potentially see " +"different values when reading from a particular I<uid_map> file, depending " +"on the user ID mappings for the user namespaces of the reading processes." +msgstr "" +"Filen I<uid_map> visar avbildningen av användar-ID:n från användarnamnrymden " +"för processen som öppnade I<uid_map> (men se en avvikelse från denna punkt " +"nedan). Med andra ord kan potentiellt processer som finns i olika " +"användarnamnrymder se olika värden när de läser från en viss I<uid_map>-fil, " +"beroende på användar-ID-avbildningarna för användarnamnrymderna för de " +"läsande processerna." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Each line in the I<uid_map> file specifies a 1-to-1 mapping of a range of " +"contiguous user IDs between two user namespaces. (When a user namespace is " +"first created, this file is empty.) The specification in each line takes " +"the form of three numbers delimited by white space. The first two numbers " +"specify the starting user ID in each of the two user namespaces. The third " +"number specifies the length of the mapped range. In detail, the fields are " +"interpreted as follows:" +msgstr "" +"Varje rad i filen I<uid_map> anger en 1-till-1-avbildning av ett intervall " +"av sammanhängande användar-ID:n mellan två användarnamnrymder. (När en " +"användarnamnrymd först skapas är denna fil tom.) Specifikationen på varje " +"rad har formen tre tal avgränsade av mellanslag. De första två talen anger " +"det första användar-ID:t i vardera av de två användarnamnrymderna. Det " +"tredje talet anger längden på det avbildade intervallet. Mer exakt tolkas " +"fälten som följer:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(1)" +msgstr "(1)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The start of the range of user IDs in the user namespace of the process " +"I<pid>." +msgstr "" +"Början av intervallet av användar-ID:n i processen I<pid>s användarnamnrymd." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(2)" +msgstr "(2)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The start of the range of user IDs to which the user IDs specified by field " +"one map. How field two is interpreted depends on whether the process that " +"opened I<uid_map> and the process I<pid> are in the same user namespace, as " +"follows:" +msgstr "" +"Början på intervallet av användar-ID:n till vilka användar-ID:n som anges av " +"fält ett avbildas. Hur fält två tolkas beror på huruvida processen som " +"öppnade I<uid_map> och processen I<pid> finns i samma användarnamnrymd, som " +"följer:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(a)" +msgstr "(a)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the two processes are in different user namespaces: field two is the " +"start of a range of user IDs in the user namespace of the process that " +"opened I<uid_map>." +msgstr "" +"Om de två processerna finns i olika användarnamnrymder: fält två är början " +"på ett intervall av användar-ID:n i användarnamnrymden för processen som " +"öppnade I<uid_map>." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(b)" +msgstr "(b)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the two processes are in the same user namespace: field two is the start " +"of the range of user IDs in the parent user namespace of the process " +"I<pid>. This case enables the opener of I<uid_map> (the common case here is " +"opening I</proc/self/uid_map>) to see the mapping of user IDs into the user " +"namespace of the process that created this user namespace." +msgstr "" +"Om de två processerna finns i samma användarnamnrymd: fält två är början på " +"intervallet av användar-ID:n i process I<pid>s föräldraanvändarnamnrymd. " +"Detta gör att den som öppnar I<uid_map> (det vanliga fallet här är att öppna " +"I</proc/self/uid_map>) kan se avbildningen av användar-ID:n in i " +"användarnamnrymden för processen som skapade denna användarnamnrymd." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(3)" +msgstr "(3)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The length of the range of user IDs that is mapped between the two user " +"namespaces." +msgstr "" +"Längden på intervallet av användar-ID:n som avbildas mellan de två " +"användarnamnrymderna." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"System calls that return user IDs (group IDs)\\[em]for example, " +"B<getuid>(2), B<getgid>(2), and the credential fields in the structure " +"returned by B<stat>(2)\\[em]return the user ID (group ID) mapped into the " +"caller's user namespace." +msgstr "" +"Systemanrop som returnerar användar-ID:n (grupp-ID:n) \\[em] till exempel " +"B<getuid>(2), B<getgid>(2), och kreditivfälten i posten som returneras av " +"B<stat>(2) \\[em] returnerar användar-ID:t (grupp-ID:t) avbildat in i " +"anroparens användarnamnrymd." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a process accesses a file, its user and group IDs are mapped into the " +"initial user namespace for the purpose of permission checking and assigning " +"IDs when creating a file. When a process retrieves file user and group IDs " +"via B<stat>(2), the IDs are mapped in the opposite direction, to produce " +"values relative to the process user and group ID mappings." +msgstr "" +"När en process begär tillgång till en fil avbildas dess användar- och grupp-" +"ID:n in i den initiala användarnamnrymden i syfte att kontrollera " +"rättigheterna och tilldela ID:n när en fil skapas. När en process hämtar " +"filens användar- och grupp-ID:n via B<stat>(2) avbildas ID:erna i den andra " +"riktningen, för att skapa värden relativt processens användar- och grupp-ID-" +"avbildningar." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The initial user namespace has no parent namespace, but, for consistency, " +"the kernel provides dummy user and group ID mapping files for this " +"namespace. Looking at the I<uid_map> file (I<gid_map> is the same) from a " +"shell in the initial namespace shows:" +msgstr "" +"Den initiala användarnamnrymden har ingen föräldranamnrymd, men för " +"konsistensens skull tillhandahåller kärnan tomfiler för användar- och grupp-" +"ID-avbildningar för den namnrymden. Tittar man på filen I<uid_map> " +"(I<gid_map> är likadan) från ett skal i den initiala namnrymden ser man:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"$ B<cat /proc/$$/uid_map>\n" +" 0 0 4294967295\n" +msgstr "" +"$ B<cat /proc/$$/uid_map>\n" +" 0 0 4294967295\n" + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This mapping tells us that the range starting at user ID 0 in this namespace " +"maps to a range starting at 0 in the (nonexistent) parent namespace, and the " +"length of the range is the largest 32-bit unsigned integer. This leaves " +"4294967295 (the 32-bit signed -1 value) unmapped. This is deliberate: " +"I<(uid_t)\\~-1> is used in several interfaces (e.g., B<setreuid>(2)) as a " +"way to specify \"no user ID\". Leaving I<(uid_t)\\~-1> unmapped and " +"unusable guarantees that there will be no confusion when using these " +"interfaces." +msgstr "" +"Denna avbildning säger oss att intervallet som startar med användar-ID 0 i " +"denna namnrymd översätts till ett intervall som startar med 0 i den " +"(obefintliga) föräldranamnrymden, och att längden på intervallet är det " +"största 32-bitars teckenlösa heltalet. Detta lämnar 4294967295 (32-" +"bitsvärdet -1) oavbildat. Detta är avsiktligt: I<(uid_t)\\~-1> används i " +"flera gränssnitt (t.ex., B<setreuid>(2)) som ett sätt att ange ”inget " +"användar-ID”. Genom att låta I<(uid_t)\\~-1> vara oavbildat och oanvändbart " +"garanteras att det inte kommer uppstå någon förvirring vid användning av " +"dessa gränssnitt." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Defining user and group ID mappings: writing to uid_map and gid_map" +msgstr "Att definiera användar- och grupp-ID-avbildningar: att skriva till uid_map och gid_map" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"After the creation of a new user namespace, the I<uid_map> file of I<one> of " +"the processes in the namespace may be written to I<once> to define the " +"mapping of user IDs in the new user namespace. An attempt to write more " +"than once to a I<uid_map> file in a user namespace fails with the error " +"B<EPERM>. Similar rules apply for I<gid_map> files." +msgstr "" +"Efter att en ny användarnamnrymd skapats kan filen I<uid_map> för I<en> av " +"processerna i namnrymden skrivas till I<en gång> för att definiera " +"avbildningen av användar-ID:n i den nya användarnamnrymden. Ett försök att " +"skriva mer än en gång till en I<uid_map>-fil i en användarnamnrymd " +"misslyckas med felet B<EPERM>. Motsvarande regler gäller för I<gid_map>-" +"filer." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The lines written to I<uid_map> (I<gid_map>) must conform to the following " +"validity rules:" +msgstr "" +"Raderna som skrivs till I<uid_map> (I<gid_map>) måste lyda följande " +"giltighetsregler:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The three fields must be valid numbers, and the last field must be greater " +"than 0." +msgstr "" +"De tre fälten måste vara giltiga tal, och det sista fältet måste vara större " +"än 0." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Lines are terminated by newline characters." +msgstr "Rader avslutas av nyradstecken." + +#. 5*12-byte records could fit in a 64B cache line +#. commit 6397fac4915ab3002dc15aae751455da1a852f25 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"There is a limit on the number of lines in the file. In Linux 4.14 and " +"earlier, this limit was (arbitrarily) set at 5 lines. Since Linux 4.15, " +"the limit is 340 lines. In addition, the number of bytes written to the " +"file must be less than the system page size, and the write must be performed " +"at the start of the file (i.e., B<lseek>(2) and B<pwrite>(2) can't be used " +"to write to nonzero offsets in the file)." +msgstr "" +"Det finns en gräns på antalet rader i filen. I Linux 4.14 och tidigare " +"sattes denna gräns (godtyckligt) till 5 rader. Från Linux 4.15 är gränsen " +"340 rader. Dessutom måste antalet byte som skrivs till filen vara mindre än " +"systemets sidstorlek, och skrivningen måste göras från början av filen (d.v." +"s., B<lseek>(2) och B<pwrite>(2) kan inte användas för att skriva till " +"nollskilda avstånd in i filen)." + +#. commit 0bd14b4fd72afd5df41e9fd59f356740f22fceba +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The range of user IDs (group IDs) specified in each line cannot overlap " +"with the ranges in any other lines. In the initial implementation (Linux " +"3.8), this requirement was satisfied by a simplistic implementation that " +"imposed the further requirement that the values in both field 1 and field 2 " +"of successive lines must be in ascending numerical order, which prevented " +"some otherwise valid maps from being created. Linux 3.9 and later fix this " +"limitation, allowing any valid set of nonoverlapping maps." +msgstr "" +"Intervallet av användar-ID:n (grupp-ID:n) som anges på varje rad får inte " +"överlappa med intervallerna på några andra rader. I den ursprungliga " +"implementationen (Linux 3.8) uppfylldes detta krav av en enkel " +"implementation som lade till det ytterligare kravet att värdena i både fält " +"1 och fält 2 av följande rader måste vara i stigande numerisk ordning, " +"vilket förhindrade några eljest giltiga avbildningar från att skapas. Linux " +"3.9 och senare fixar denna begränsning, och tillåter alla giltiga " +"uppsättningar av avbildningar som inte överlappar." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "At least one line must be written to the file." +msgstr "Åtminstone en rad måste skrivas till filen." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Writes that violate the above rules fail with the error B<EINVAL>." +msgstr "" +"Skrivningar som bryter mot ovanstående regler misslyckas med felet B<EINVAL>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In order for a process to write to the I</proc/>pidI</uid_map> (I</proc/" +">pidI</gid_map>) file, all of the following permission requirements must be " +"met:" +msgstr "" +"För att en process skall kunna skriva till filen I</proc>pidI</uid_map> (I</" +"proc>pidI</gid_map>) måste alla följande rättighetskrav vara uppfyllda:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The writing process must have the B<CAP_SETUID> (B<CAP_SETGID>) capability " +"in the user namespace of the process I<pid>." +msgstr "" +"Den skrivande processen måste ha förmågan B<CAP_SETUID> (B<CAP_SETGID>) i " +"processen I<pid>s användarnamnrymd." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The writing process must either be in the user namespace of the process " +"I<pid> or be in the parent user namespace of the process I<pid>." +msgstr "" +"Den skrivande processen måste antingen finnas i namnrymden för process " +"I<pid> eller finnas i föräldraanvändarnamnrymden till process I<pid>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The mapped user IDs (group IDs) must in turn have a mapping in the parent " +"user namespace." +msgstr "" +"De avbildade användar-ID:na (grupp-ID:na) måste i sin tur ha en avbildning i " +"föräldraanvändarnamnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If updating I</proc/>pidI</uid_map> to create a mapping that maps UID 0 in " +"the parent namespace, then one of the following must be true:" +msgstr "" +"Om man uppdaterar I</proc/>pidI</uid_map> för att skapa en avbildning som " +"avbildar till UID 0 i föräldranamnrymden måste en av de följande vara sann:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"if writing process is in the parent user namespace, then it must have the " +"B<CAP_SETFCAP> capability in that user namespace; or" +msgstr "" +"om den skrivande processen finns i föräldraanvändarnamnrymden, då måste den " +"ha förmågan B<CAP_SETFCAP> i den användarnamnrymden; eller" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"if the writing process is in the child user namespace, then the process that " +"created the user namespace must have had the B<CAP_SETFCAP> capability when " +"the namespace was created." +msgstr "" +"om den skrivande processen finns i barnanvändarnamnrymden, då måste " +"processen som skapade användarnamnrymden ha haft förmågan B<CAP_SETFCAP> när " +"namnrymden skapades." + +#. commit db2e718a47984b9d71ed890eb2ea36ecf150de18 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This rule has been in place since Linux 5.12. It eliminates an earlier " +"security bug whereby a UID 0 process that lacks the B<CAP_SETFCAP> " +"capability, which is needed to create a binary with namespaced file " +"capabilities (as described in B<capabilities>(7)), could nevertheless create " +"such a binary, by the following steps:" +msgstr "" +"Denna regel har funnits från Linux 5.12. Den eliminerar en tidigare " +"säkerhetsbrist varigenom en UID 0-process som saknar förmågan B<CAP_SETFCAP> " +"vilken behövs för att skapa en binär med namnrymdsfilförmågor (så som det " +"beskrivs i B<capabilities>(7)) ändå kunde skapa en sådan binär genom " +"följande steg:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Create a new user namespace with the identity mapping (i.e., UID 0 in the " +"new user namespace maps to UID 0 in the parent namespace), so that UID 0 in " +"both namespaces is equivalent to the same root user ID." +msgstr "" +"Skapa en ny användarnamnrymd med identitetsavbildningen (d.v.s., AID 0 i den " +"nya användarnamnrymden avbildas på AID 0 i föräldranamnrymden), så att AID 0 " +"båda namnrymderna är ekvivalent med samma root-användar-ID." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since the child process has the B<CAP_SETFCAP> capability, it could create a " +"binary with namespaced file capabilities that would then be effective in the " +"parent user namespace (because the root user IDs are the same in the two " +"namespaces)." +msgstr "" +"Eftersom barnprocessen har förmågan B<CAP_SETFCAP> kunde den skapa en binär " +"med namnrymdsfilförmågor som sedan skulle vara verkningsfulla i " +"föräldranamnrymden (eftersom root-användar-ID:t är desamma i de två " +"namnrymderna)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "One of the following two cases applies:" +msgstr "En av följande två fall gäller:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<Either> the writing process has the B<CAP_SETUID> (B<CAP_SETGID>) " +"capability in the I<parent> user namespace." +msgstr "" +"I<Antingen> har den skrivande processen förmågan B<CAP_SETUID> " +"(B<CAP_SETGID>) i I<föräldra>användarnamnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"No further restrictions apply: the process can make mappings to arbitrary " +"user IDs (group IDs) in the parent user namespace." +msgstr "" +"Inga ytterligare begränsningar gäller: processen kan göra avbildningar till " +"godtyckliga användar-ID:n (grupp-ID:n) i föräldraanvändarnamnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "I<Or> otherwise all of the following restrictions apply:" +msgstr "I<Eller> i annat fall gäller alla följande beskrivningar:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The data written to I<uid_map> (I<gid_map>) must consist of a single line " +"that maps the writing process's effective user ID (group ID) in the parent " +"user namespace to a user ID (group ID) in the user namespace." +msgstr "" +"Data som skrivs till I<uid_map> (I<gid_map>) måste bestå av en enda rad som " +"avbildar den skrivande processens effektiva användar-ID (grupp-ID) i " +"föräldraanvändarnamnrymden till ett användar-ID (grupp-ID) i " +"användarnamnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The writing process must have the same effective user ID as the process that " +"created the user namespace." +msgstr "" +"Den skrivande processen måste ha samma effektiva användar-ID som processen " +"som skapade användarnamnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In the case of I<gid_map>, use of the B<setgroups>(2) system call must " +"first be denied by writing \\[dq]I<deny>\\[dq] to the I</proc/>pidI</" +"setgroups> file (see below) before writing to I<gid_map>." +msgstr "" +"När det gäller I<gid_map> måste först användning av systemanropet " +"B<setgroups>(2) nekas genom att skriva \\[dq]I<deny>\\[dq] till filen I</" +"proc/>pidI</setgroups> (se nedan) före någon skrivning till I<gid_map>." + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Writes that violate the above rules fail with the error B<EPERM>." +msgstr "" +"Skrivningar som strider mot ovanstående regler misslyckas med felet B<EPERM>." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Project ID mappings: projid_map" +msgstr "Projekt-ID-avbildningar: projid_map" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Similarly to user and group ID mappings, it is possible to create project ID " +"mappings for a user namespace. (Project IDs are used for disk quotas; see " +"B<setquota>(8) and B<quotactl>(2).)" +msgstr "" +"Liksom för användar- och grupp-ID-avbildningar är det möjligt att skapa " +"projekt-ID-avbildningar för användarnamnrymder. (Projekt-ID:n används för " +"diskkvoter; se B<setquota>(8) och B<quotactl>(2).)" + +#. commit f76d207a66c3a53defea67e7d36c3eb1b7d6d61d +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Project ID mappings are defined by writing to the I</proc/>pidI</projid_map> " +"file (present since Linux 3.7)." +msgstr "" +"Projekt-ID-avbildningar definieras genom att skriva till filen I</proc/" +">pidI</projid_map> (som finns från Linux 3.7)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The validity rules for writing to the I</proc/>pidI</projid_map> file are as " +"for writing to the I<uid_map> file; violation of these rules causes " +"B<write>(2) to fail with the error B<EINVAL>." +msgstr "" +"Giltighetsreglerna för att skriva till filen I</proc/>pidI</projid_map> är " +"som för att skriva till filen I<uid_map>; brott mot dessa regler får " +"B<write>(2) att misslyckas med felet B<EINVAL>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The permission rules for writing to the I</proc/>pidI</projid_map> file are " +"as follows:" +msgstr "" +"Rättighetsreglerna för att skriva till filen I</proc/>pidI</projid_map> är " +"som följer:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The mapped project IDs must in turn have a mapping in the parent user " +"namespace." +msgstr "" +"De avbildade projekt-ID:na måste i sin tur ha en avbildning i " +"föräldraanvändarnamnrymden." + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Violation of these rules causes B<write>(2) to fail with the error B<EPERM>." +msgstr "" +"Brott mot dessa regler får B<write>(2) att misslyckas med felet B<EPERM>." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Interaction with system calls that change process UIDs or GIDs" +msgstr "Interaktion med systemanrop som ändrar process-AID:n eller -GID:n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In a user namespace where the I<uid_map> file has not been written, the " +"system calls that change user IDs will fail. Similarly, if the I<gid_map> " +"file has not been written, the system calls that change group IDs will " +"fail. After the I<uid_map> and I<gid_map> files have been written, only the " +"mapped values may be used in system calls that change user and group IDs." +msgstr "" +"I en användarnamnrymd där filen I<uid_map> inte har skrivits kommer " +"systemanrop som ändrar användar-ID:n att misslyckas. På liknande sätt, om " +"filen I<gid_map> inte har skrivits kommer systemanrop som ändrar grupp-ID:n " +"att misslyckas. Efter att filerna I<uid_map> och I<gid_map> har skrivits kan " +"endast de avbildade värdena användas i systemanrop som ändrar användar- och " +"grupp-ID:n." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"For user IDs, the relevant system calls include B<setuid>(2), " +"B<setfsuid>(2), B<setreuid>(2), and B<setresuid>(2). For group IDs, the " +"relevant system calls include B<setgid>(2), B<setfsgid>(2), B<setregid>(2), " +"B<setresgid>(2), and B<setgroups>(2)." +msgstr "" +"För användar-ID:n inkluderar de relevanta systemanropen B<setuid>(2), " +"B<setfsuid>(2), B<setreuid>(2) och B<setresuid>(2). För grupp-ID:n " +"inkluderar de relevanta systemanropen B<setgid>(2), B<setfsgid>(2), " +"B<setregid>(2), B<setresgid>(2) och B<setgroups>(2)." + +# +#. Things changed in Linux 3.19 +#. commit 9cc46516ddf497ea16e8d7cb986ae03a0f6b92f8 +#. commit 66d2f338ee4c449396b6f99f5e75cd18eb6df272 +#. http://lwn.net/Articles/626665/ +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Writing \\[dq]I<deny>\\[dq] to the I</proc/>pidI</setgroups> file before " +"writing to I</proc/>pidI</gid_map> will permanently disable B<setgroups>(2) " +"in a user namespace and allow writing to I</proc/>pidI</gid_map> without " +"having the B<CAP_SETGID> capability in the parent user namespace." +msgstr "" +"Att skriva \\[dq]I<deny>\\[dq] till filen I</proc/>pidI</setgroups> före man " +"skriver till I</proc/>pidI</gid_map> kommer permanent avaktivera " +"B<setgroups>(2) i en användarnamnrymd och tillåta att man skriver till I</" +"proc/>pidI</gid_map> utan att ha förmågan B<CAP_SETGID> i " +"föräldraanvändarnamnrymden." + +#. type: SS +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "The I</proc/>pidI</setgroups> file" +msgstr "Filen I</proc/>pidI</setgroups>" + +# +#. commit 9cc46516ddf497ea16e8d7cb986ae03a0f6b92f8 +#. commit 66d2f338ee4c449396b6f99f5e75cd18eb6df272 +#. http://lwn.net/Articles/626665/ +#. http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-8989 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I</proc/>pidI</setgroups> file displays the string \\[dq]I<allow>\\[dq] " +"if processes in the user namespace that contains the process I<pid> are " +"permitted to employ the B<setgroups>(2) system call; it displays " +"\\[dq]I<deny>\\[dq] if B<setgroups>(2) is not permitted in that user " +"namespace. Note that regardless of the value in the I</proc/>pidI</" +"setgroups> file (and regardless of the process's capabilities), calls to " +"B<setgroups>(2) are also not permitted if I</proc/>pidI</gid_map> has not " +"yet been set." +msgstr "" +"Filen I</proc/>pidI</setgroups> visar strängen \\[dq]I<allow>\\[dq] om " +"processer i användarnamnrymden som innehåller process I<pid> får lov att " +"använda systemanropet B<setgroups>(2); den visar \\[dq]I<deny>\\[dq] om " +"B<setgroups>(2) inte tillåts i den användarnamnrymden. Observera att oavsett " +"värdet i filen I</proc/>pidI</setgroups> (och oavsett processens förmågor) " +"är inte heller B<setgroups>(2) tillåtet om inte I</proc/>pidI</gid_map> har " +"satts ännu." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A privileged process (one with the B<CAP_SYS_ADMIN> capability in the " +"namespace) may write either of the strings \\[dq]I<allow>\\[dq] or " +"\\[dq]I<deny>\\[dq] to this file I<before> writing a group ID mapping for " +"this user namespace to the file I</proc/>pidI</gid_map>. Writing the string " +"\\[dq]I<deny>\\[dq] prevents any process in the user namespace from " +"employing B<setgroups>(2)." +msgstr "" +"En privilegierad process (en med förmågan B<CAP_SYS_ADMIN> i namnrymden) kan " +"skriva endera av strängarna \\[dq]I<allow>\\[dq] eller \\[dq]I<deny>\\[dq] " +"till denna fil I<före> den skriver en grupp-ID-avbildning för denna " +"användarnamnrymd till filen I</proc/>pidI</gid_map>. Att skriva strängen " +"\\[dq]I<deny>\\[dq] förhindrar alla processer i användarnamnrymden från att " +"använda B<setgroups>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The essence of the restrictions described in the preceding paragraph is that " +"it is permitted to write to I</proc/>pidI</setgroups> only so long as " +"calling B<setgroups>(2) is disallowed because I</proc/>pidI</gid_map> has " +"not been set. This ensures that a process cannot transition from a state " +"where B<setgroups>(2) is allowed to a state where B<setgroups>(2) is " +"denied; a process can transition only from B<setgroups>(2) being disallowed " +"to B<setgroups>(2) being allowed." +msgstr "" +"Essensen av begränsningarna som beskrivs i föregående stycke är att det är " +"tillåtet att skriva till I</proc/>pidI</setgroups> endast så länge som anrop " +"av B<setgroups>(2) är otillåtet för att I</proc/>pidI</gid_map> inte har " +"satts. Detta säkerställer att en process inte kan gå över från ett tillstånd " +"där B<setgroups>(2) är tillåtet till ett tillstånd där B<setgroups>(2) " +"nekas; en process kan gå över endast från att B<setgroups>(2) är otillåtet " +"till att B<setgroups>(2) är tillåtet." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The default value of this file in the initial user namespace is " +"\\[dq]I<allow>\\[dq]." +msgstr "" +"Standardvärdet i denna fil i den initiala användarnamnrymden är " +"\\[dq]I<allow>\\[dq]." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Once I</proc/>pidI</gid_map> has been written to (which has the effect of " +"enabling B<setgroups>(2) in the user namespace), it is no longer possible " +"to disallow B<setgroups>(2) by writing \\[dq]I<deny>\\[dq] to I</proc/" +">pidI</setgroups> (the write fails with the error B<EPERM>)." +msgstr "" +"När I</proc/>pidI</gid_map> har skrivits till (vilket har effekten av att " +"aktivera B<setgroups>(2) i användarnamnrymden), är det inte längre möjligt " +"att göra B<setgroups>(2) otillåtet genom att skriva \\[dq]I<deny>\\[dq] till " +"I</proc/>pidI</setgroups> (skrivningen misslyckas med felet B<EPERM>)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A child user namespace inherits the I</proc/>pidI</setgroups> setting from " +"its parent." +msgstr "" +"En barnnamnrymd ärver inställningen av I</proc/>pidI</setgroups> från sin " +"förälder." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the I<setgroups> file has the value \\[dq]I<deny>\\[dq], then the " +"B<setgroups>(2) system call can't subsequently be reenabled (by writing " +"\\[dq]I<allow>\\[dq] to the file) in this user namespace. (Attempts to do " +"so fail with the error B<EPERM>.) This restriction also propagates down to " +"all child user namespaces of this user namespace." +msgstr "" +"Om filen I<setgroups> har värdet \\[dq]I<deny>\\[dq], då kan inte senare " +"systemanropet B<setgroups>(2) återaktiveras (genom att skriva " +"\\[dq]I<allow>\\[dq] till filen) i den användarnamnrymden. (Försök att göra " +"så misslyckas med felet B<EPERM>.) Denna begränsning propagerar ner till " +"alla barnanvändarnamnrymder till denna användarnamnrymd." + +# +# +# +# +#. /proc/PID/setgroups +#. [allow == setgroups() is allowed, "deny" == setgroups() is disallowed] +#. * Can write if have CAP_SYS_ADMIN in NS +#. * Must write BEFORE writing to /proc/PID/gid_map +#. setgroups() +#. * Must already have written to gid_map +#. * /proc/PID/setgroups must be "allow" +#. /proc/PID/gid_map -- writing +#. * Must already have written "deny" to /proc/PID/setgroups +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I</proc/>pidI</setgroups> file was added in Linux 3.19, but was " +"backported to many earlier stable kernel series, because it addresses a " +"security issue. The issue concerned files with permissions such as \"rwx---" +"rwx\". Such files give fewer permissions to \"group\" than they do to " +"\"other\". This means that dropping groups using B<setgroups>(2) might " +"allow a process file access that it did not formerly have. Before the " +"existence of user namespaces this was not a concern, since only a privileged " +"process (one with the B<CAP_SETGID> capability) could call B<setgroups>(2). " +"However, with the introduction of user namespaces, it became possible for an " +"unprivileged process to create a new namespace in which the user had all " +"privileges. This then allowed formerly unprivileged users to drop groups " +"and thus gain file access that they did not previously have. The I</proc/" +">pidI</setgroups> file was added to address this security issue, by denying " +"any pathway for an unprivileged process to drop groups with B<setgroups>(2)." +msgstr "" +"Filen I</proc/>pidI</setgroups> lades till i Linux 3.19, men bakåtporterades " +"till många tidigare stabila kärnserier, eftersom den åtgärdar ett " +"säkerhetsproblem. Problemet rörde filer med rättigheter såsom ”rwx---rwx”. " +"Sådana filer ger färre rättigheter till ”gruppen” än de gör till ”övriga”. " +"Detta betyder att genom att släppa grupper med B<setgroups>(2) kan en " +"process tillåtas filåtkomst som den inte tidigare hade. Före det fanns " +"användarnamnrymder var detta inte ett bekymmer, eftersom endast en " +"privilegierad process (en med förmågan B<CAP_SETGID>) kunde anropa " +"B<setgroups>(2). Dock, med introduktionen av användarnamnrymder blev det " +"möjligt för en oprivilegierad process att skapa en ny namnrymd i vilken " +"användaren har alla privilegier. Detta tillät sedan tidigare oprivilegierade " +"användare att släppa grupprivilegier och därmed få filåtkomst som de inte " +"tidigare hade. Filen I</proc/>pidI</setgroups> lades till för att åtgärda " +"detta säkerhetsproblem, genom att neka alla vägar för en oprivilegierad " +"process att släppa grupper med B<setgroups>(2)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Unmapped user and group IDs" +msgstr "Oavbildade användar- och grupp-ID:n" + +#. from_kuid_munged(), from_kgid_munged() +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"There are various places where an unmapped user ID (group ID) may be " +"exposed to user space. For example, the first process in a new user " +"namespace may call B<getuid>(2) before a user ID mapping has been defined " +"for the namespace. In most such cases, an unmapped user ID is converted to " +"the overflow user ID (group ID); the default value for the overflow user ID " +"(group ID) is 65534. See the descriptions of I</proc/sys/kernel/" +"overflowuid> and I</proc/sys/kernel/overflowgid> in B<proc>(5)." +msgstr "" +"Det finns olika platser där ett oavbildat användar-ID (grupp-ID) kan " +"exponeras för användarrymden. Till exempel kan den första processen i en ny " +"användarnamnrymd anropa B<getuid>(2) innan en användar-ID-avbildning har " +"definierats för namnrymden. I de flesta sådana fall konverteras ett " +"oavbildat användar-ID till spillanvändar-ID:t (grupp-ID:t); standardvärdet " +"på spillanvändar-ID:t (grupp-ID:t) 65534). Se beskrivningarna av I</proc/sys/" +"kernel/overflowuid> och I</proc/sys/kernel/overflowgid> i B<proc>(5)." + +#. also SO_PEERCRED +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The cases where unmapped IDs are mapped in this fashion include system calls " +"that return user IDs (B<getuid>(2), B<getgid>(2), and similar), credentials " +"passed over a UNIX domain socket, credentials returned by B<stat>(2), " +"B<waitid>(2), and the System V IPC \"ctl\" B<IPC_STAT> operations, " +"credentials exposed by I</proc/>pidI</status> and the files in I</proc/" +"sysvipc/*>, credentials returned via the I<si_uid> field in the I<siginfo_t> " +"received with a signal (see B<sigaction>(2)), credentials written to the " +"process accounting file (see B<acct>(5)), and credentials returned with " +"POSIX message queue notifications (see B<mq_notify>(3))." +msgstr "" +"Fallen där oavbildade ID:n avbildas på detta sätt inkluderar systemanrop som " +"returnerar användar-ID:n (B<getuid>(2), B<getgid>(2) och liknande), kreditiv " +"som skickas över ett UNIX-domänsuttag, kreditiv som returneras av " +"B<stat>(2), B<waitid>(2) och System V IPC ”ctl”-åtgärder B<IPC_STAT>, " +"kreditiv som exponeras av I</proc/>pidI</status> och filerna i I</proc/" +"sysvipc/*>, kreditiv som returneras via fältet I<si_uid> i den I<siginfo_t> " +"som tas emot med en signal (se B<sigaction>(2)), kreditiv som skrivs till " +"processbokföringsfilen (se B<acct>(5)) och kreditiv som returneras via POSIX " +"notifieringar i meddelandeköer (se B<mq_notify>(3))." + +# +#. from_kuid(), from_kgid() +#. Also F_GETOWNER_UIDS is an exception +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"There is one notable case where unmapped user and group IDs are I<not> " +"converted to the corresponding overflow ID value. When viewing a I<uid_map> " +"or I<gid_map> file in which there is no mapping for the second field, that " +"field is displayed as 4294967295 (-1 as an unsigned integer)." +msgstr "" +"Det finns ett nämnvärt fall där oavbildade användar- och grupp-ID:n I<inte> " +"konverteras till motsvarande spill-ID-värde. När man betraktar en fil " +"I<uid_map> eller I<gid_map> i vilken det inte finns någon avbildning för det " +"andra fältet visas det fältet som 4294967295 (-1 som ett teckenlöst heltal)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Accessing files" +msgstr "Åtkomst av filer" + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In order to determine permissions when an unprivileged process accesses a " +"file, the process credentials (UID, GID) and the file credentials are in " +"effect mapped back to what they would be in the initial user namespace and " +"then compared to determine the permissions that the process has on the " +"file. The same is also true of other objects that employ the credentials " +"plus permissions mask accessibility model, such as System V IPC objects." +msgstr "" +"För att avgöra rättigheterna när en oprivilegierad process söker tillgång " +"till en fil avbildas processkreditiven (AID, GID) och de aktiva " +"filkreditiven tillbaka till vad de skulle vara i den initiala " +"användarnamnrymden och jämförs sedan för att avgöra rättigheterna som " +"processen har till filen. Detsamma är också sant för andra objekt som " +"använder åtkomstmodellen med kreditiv plus rättighetsmasker, såsom System V " +"IPC-objekt." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Operation of file-related capabilities" +msgstr "Åtgärder med filrelaterade förmågor" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Certain capabilities allow a process to bypass various kernel-enforced " +"restrictions when performing operations on files owned by other users or " +"groups. These capabilities are: B<CAP_CHOWN>, B<CAP_DAC_OVERRIDE>, " +"B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER>, and B<CAP_FSETID>." +msgstr "" +"Vissa förmågor tillåter en process att kringgå olika begränsningar som " +"kärnan upprätthåller när den utför åtgärder på filer som ägs av andra " +"användare eller grupper. Dessa förmågor är: B<CAP_CHOWN>, " +"B<CAP_DAC_OVERRIDE>, B<CAP_DAC_READ_SEARCH>, B<CAP_FOWNER> och B<CAP_FSETID>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Within a user namespace, these capabilities allow a process to bypass the " +"rules if the process has the relevant capability over the file, meaning that:" +msgstr "" +"Inom en användarnamnrymd tillåter dessa förmågor en process att kringgå " +"reglerna om processen har den relevanta förmågan över filen, vilket betyder:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"the process has the relevant effective capability in its user namespace; and" +msgstr "" +"processen har den relevanta effektiva förmågan i sin användarnamnrymd; och" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"the file's user ID and group ID both have valid mappings in the user " +"namespace." +msgstr "" +"filens användar-ID och grupp-ID båda har giltiga avbildningar i " +"användarnamnrymden." + +# +#. These are the checks performed by the kernel function +#. inode_owner_or_capable(). There is one exception to the exception: +#. overriding the directory sticky permission bit requires that +#. the file has a valid mapping for both its UID and GID. +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<CAP_FOWNER> capability is treated somewhat exceptionally: it allows a " +"process to bypass the corresponding rules so long as at least the file's " +"user ID has a mapping in the user namespace (i.e., the file's group ID does " +"not need to have a valid mapping)." +msgstr "" +"Förmågan B<CAP_FOWNER> behandlas något speciellt: den tillåter en process " +"att kringgå motsvarande regler så länge som åtminstone filens användar-ID " +"har en avbildning i användarnamnrymden (d.v.s., filens grupp-ID behöver inte " +"ha en giltig avbildning)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Set-user-ID and set-group-ID programs" +msgstr "Sätt-användar-ID- och sätt-grupp-ID-program" + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a process inside a user namespace executes a set-user-ID (set-group-ID) " +"program, the process's effective user (group) ID inside the namespace is " +"changed to whatever value is mapped for the user (group) ID of the file. " +"However, if either the user I<or> the group ID of the file has no mapping " +"inside the namespace, the set-user-ID (set-group-ID) bit is silently " +"ignored: the new program is executed, but the process's effective user " +"(group) ID is left unchanged. (This mirrors the semantics of executing a " +"set-user-ID or set-group-ID program that resides on a filesystem that was " +"mounted with the B<MS_NOSUID> flag, as described in B<mount>(2).)" +msgstr "" +"När en process inuti en användarnamnrymd kör ett program som är sätt-" +"användar-ID (sätt-grupp-ID) ändras processens effektiva användar- (grupp-)ID " +"inuti namnrymden till det värde som är avbildat för filens användar- " +"(grupp-)ID. Dock, om antingen filens användar- I<eller> grupp-ID inte har " +"någon avbildning inuti namnrymden ignoreras tyst biten sätt-användar-ID " +"(sätt-grupp-ID): det nya programmet körs, men processens effektiva användar- " +"(grupp-)ID lämnas orört. (Detta avspeglar semantiken hos att köra ett " +"program med sätt-användar-ID eller sätt-grupp-ID som bor på ett filsystem " +"som monterades med flaggan B<MS_NOSUID>, såsom beskrivs i B<mount>(2).)" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Miscellaneous" +msgstr "Diverse" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a process's user and group IDs are passed over a UNIX domain socket to " +"a process in a different user namespace (see the description of " +"B<SCM_CREDENTIALS> in B<unix>(7)), they are translated into the " +"corresponding values as per the receiving process's user and group ID " +"mappings." +msgstr "" +"När en process användar- och grupp-ID:n skickas över ett UNIX-domänsuttag " +"till en process i en annan användarnamnrymd (se beskrivningen av " +"B<SCM_CREDENTIALS> i B<unix>(7)) översätts de till de motsvarande värdena i " +"enlighet med den mottagande processens användar- och grupp-ID-avbildningar." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "STANDARDS" +msgstr "STANDARDER" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "Linux." +msgstr "Linux." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NOTES" +msgstr "NOTERINGAR" + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Over the years, there have been a lot of features that have been added to " +"the Linux kernel that have been made available only to privileged users " +"because of their potential to confuse set-user-ID-root applications. In " +"general, it becomes safe to allow the root user in a user namespace to use " +"those features because it is impossible, while in a user namespace, to gain " +"more privilege than the root user of a user namespace has." +msgstr "" +"Under åren har det funnits många funktioner som har lagts till till " +"Linuxkärnan som har gjorts tillgängliga endast till privilegierade användare " +"på grund av deras potential att förvirra sätt-användar-ID-root-program. I " +"allmänhet blir det säkert att tillåta root-användaren i en användarnamnrymd " +"att använda dessa funktioner eftersom det är omöjligt, så länge man finns i " +"en användarnamnrymd, att få fler privilegier än de som en användarnamnrymds " +"root-användare har." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Global root" +msgstr "Global root" + +# +#. ============================================================ +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The term \"global root\" is sometimes used as a shorthand for user ID 0 in " +"the initial user namespace." +msgstr "" +"Termen ”global root” används ibland som en kortform för användar-ID 0 i den " +"initiala användarnamnrymden." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Availability" +msgstr "Tillgänglighet" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Use of user namespaces requires a kernel that is configured with the " +"B<CONFIG_USER_NS> option. User namespaces require support in a range of " +"subsystems across the kernel. When an unsupported subsystem is configured " +"into the kernel, it is not possible to configure user namespaces support." +msgstr "" +"Användning av användarnamnrymder kräver en kärna som är konfigurerad med " +"alternativet B<CONFIG_USER_NS>. Användarnamnrymder kräver stöd i ett antal " +"undersystem i hela kärnan. När ett undersystem som inte stödjs konfigureras " +"i kärnan är det inte möjligt att konfigurera stöd för användarnamnrymder." + +#. commit d6970d4b726cea6d7a9bc4120814f95c09571fc3 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As at Linux 3.8, most relevant subsystems supported user namespaces, but a " +"number of filesystems did not have the infrastructure needed to map user and " +"group IDs between user namespaces. Linux 3.9 added the required " +"infrastructure support for many of the remaining unsupported filesystems " +"(Plan 9 (9P), Andrew File System (AFS), Ceph, CIFS, CODA, NFS, and OCFS2). " +"Linux 3.12 added support for the last of the unsupported major filesystems, " +"XFS." +msgstr "" +"Fram till Linux 3.8 stödde de mest relevanta subsystemen användarnamnrymder, " +"men ett antal filsystem hade inte den nödvändiga infrastrukturen för att " +"avbilda användar- och grupp-ID:n mellan användarnamnrymder. Linux 3.9 lade " +"till det nödvändiga infrastrukturstödet till många av de återstående ej " +"stödda filsystemen (Plan 9 (9P), Andrew File System (AFS), Ceph, CIFS, CODA, " +"NFS och OCFS2). Linux 3.12 lade till stöd till det sista av de ej stödda " +"större filsystemen, XFS." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "EXAMPLES" +msgstr "EXEMPEL" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The program below is designed to allow experimenting with user namespaces, " +"as well as other types of namespaces. It creates namespaces as specified by " +"command-line options and then executes a command inside those namespaces. " +"The comments and I<usage>() function inside the program provide a full " +"explanation of the program. The following shell session demonstrates its " +"use." +msgstr "" +"Nedanstående program är skapat för att möjliggöra experimenterande med " +"användarnamnrymder, liksom även andra typer av namnrymder. Det skapar " +"namnrymder enligt specifikationen från kommandoradsflaggor och kör sedan ett " +"kommando inuti dessa namnrymder. Kommentarerna och funktionen I<usage>() " +"inuti programmet ger den fullständiga förklaringen av programmet. Följande " +"skalsession demonstrerar dess användning." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "First, we look at the run-time environment:" +msgstr "Först betraktar vi körtidsmiljön:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"$ B<uname -rs> # Need Linux 3.8 or later\n" +"Linux 3.8.0\n" +"$ B<id -u> # Running as unprivileged user\n" +"1000\n" +"$ B<id -g>\n" +"1000\n" +msgstr "" +"$ B<uname -rs> # Förutsätter Linux 3.8 eller senare\n" +"Linux 3.8.0\n" +"$ B<id -u> # Kör som en oprivilegierad användare\n" +"1000\n" +"$ B<id -g>\n" +"1000\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Now start a new shell in new user (I<-U>), mount (I<-m>), and PID (I<-p>) " +"namespaces, with user ID (I<-M>) and group ID (I<-G>) 1000 mapped to 0 " +"inside the user namespace:" +msgstr "" +"Starta nu ett skal i en ny användar- (I<-U>), monterings- (I<-m>) och PID- " +"(I<-p>) namnrymd, med användar-ID (I<-M>) och grupp-ID (I<-G>) 1000 " +"avbildade på 0 inuti användarnamnrymden:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "$ B<./userns_child_exec -p -m -U -M \\[aq]0 1000 1\\[aq] -G \\[aq]0 1000 1\\[aq] bash>\n" +msgstr "$ B<./userns_child_exec -p -m -U -M \\[aq]0 1000 1\\[aq] -G \\[aq]0 1000 1\\[aq] bash>\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The shell has PID 1, because it is the first process in the new PID " +"namespace:" +msgstr "" +"Skalet har PID 1, för att det är den första processen i den nya PID-" +"namnrymden." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"bash$ B<echo $$>\n" +"1\n" +msgstr "" +"bash$ B<echo $$>\n" +"1\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Mounting a new I</proc> filesystem and listing all of the processes visible " +"in the new PID namespace shows that the shell can't see any processes " +"outside the PID namespace:" +msgstr "" +"Att montera ett nytt I</proc>-filsystem och lista alla processerna som är " +"synliga i den nya PID-namnrymden visar att skalet inte kan se några " +"processer utanför PID-namnrymden:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"bash$ B<mount -t proc proc /proc>\n" +"bash$ B<ps ax>\n" +" PID TTY STAT TIME COMMAND\n" +" 1 pts/3 S 0:00 bash\n" +" 22 pts/3 R+ 0:00 ps ax\n" +msgstr "" +"bash$ B<mount -t proc proc /proc>\n" +"bash$ B<ps ax>\n" +" PID TTY STAT TIME COMMAND\n" +" 1 pts/3 S 0:00 bash\n" +" 22 pts/3 R+ 0:00 ps ax\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Inside the user namespace, the shell has user and group ID 0, and a full set " +"of permitted and effective capabilities:" +msgstr "" +"Inuti användarnamnrymden har skalet användar- och grupp-ID 0, och den " +"kompletta uppsättningen av tillåtna och effektiva förmågor:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"bash$ B<cat /proc/$$/status | egrep \\[aq]\\[ha][UG]id\\[aq]>\n" +"Uid:\t0\t0\t0\t0\n" +"Gid:\t0\t0\t0\t0\n" +"bash$ B<cat /proc/$$/status | egrep \\[aq]\\[ha]Cap(Prm|Inh|Eff)\\[aq]>\n" +"CapInh:\t0000000000000000\n" +"CapPrm:\t0000001fffffffff\n" +"CapEff:\t0000001fffffffff\n" +msgstr "" +"bash$ B<cat /proc/$$/status | egrep \\[aq]\\[ha][UG]id\\[aq]>\n" +"Uid:\t0\t0\t0\t0\n" +"Gid:\t0\t0\t0\t0\n" +"bash$ B<cat /proc/$$/status | egrep \\[aq]\\[ha]Cap(Prm|Inh|Eff)\\[aq]>\n" +"CapInh:\t0000000000000000\n" +"CapPrm:\t0000001fffffffff\n" +"CapEff:\t0000001fffffffff\n" + +#. 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 "Programkällkod" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, no-wrap +msgid "" +"/* userns_child_exec.c\n" +"\\&\n" +" Licensed under GNU General Public License v2 or later\n" +"\\&\n" +" Create a child process that executes a shell command in new\n" +" namespace(s); allow UID and GID mappings to be specified when\n" +" creating a user namespace.\n" +"*/\n" +"#define _GNU_SOURCE\n" +"#include E<lt>err.hE<gt>\n" +"#include E<lt>sched.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>stdint.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/wait.hE<gt>\n" +"#include E<lt>signal.hE<gt>\n" +"#include E<lt>fcntl.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +"#include E<lt>limits.hE<gt>\n" +"#include E<lt>errno.hE<gt>\n" +"\\&\n" +"struct child_args {\n" +" char **argv; /* Command to be executed by child, with args */\n" +" int pipe_fd[2]; /* Pipe used to synchronize parent and child */\n" +"};\n" +"\\&\n" +"static int verbose;\n" +"\\&\n" +"static void\n" +"usage(char *pname)\n" +"{\n" +" fprintf(stderr, \"Usage: %s [options] cmd [arg...]\\en\\en\", pname);\n" +" fprintf(stderr, \"Create a child process that executes a shell \"\n" +" \"command in a new user namespace,\\en\"\n" +" \"and possibly also other new namespace(s).\\en\\en\");\n" +" fprintf(stderr, \"Options can be:\\en\\en\");\n" +"#define fpe(str) fprintf(stderr, \" %s\", str);\n" +" fpe(\"-i New IPC namespace\\en\");\n" +" fpe(\"-m New mount namespace\\en\");\n" +" fpe(\"-n New network namespace\\en\");\n" +" fpe(\"-p New PID namespace\\en\");\n" +" fpe(\"-u New UTS namespace\\en\");\n" +" fpe(\"-U New user namespace\\en\");\n" +" fpe(\"-M uid_map Specify UID map for user namespace\\en\");\n" +" fpe(\"-G gid_map Specify GID map for user namespace\\en\");\n" +" fpe(\"-z Map user\\[aq]s UID and GID to 0 in user namespace\\en\");\n" +" fpe(\" (equivalent to: -M \\[aq]0 E<lt>uidE<gt> 1\\[aq] -G \\[aq]0 E<lt>gidE<gt> 1\\[aq])\\en\");\n" +" fpe(\"-v Display verbose messages\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n" +" fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\" ID-inside-ns ID-outside-ns len\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"A map string can contain multiple records, separated\"\n" +" \" by commas;\\en\");\n" +" fpe(\"the commas are replaced by newlines before writing\"\n" +" \" to map files.\\en\");\n" +"\\&\n" +" exit(EXIT_FAILURE);\n" +"}\n" +"\\&\n" +"/* Update the mapping file \\[aq]map_file\\[aq], with the value provided in\n" +" \\[aq]mapping\\[aq], a string that defines a UID or GID mapping. A UID or\n" +" GID mapping consists of one or more newline-delimited records\n" +" of the form:\n" +"\\&\n" +" ID_inside-ns ID-outside-ns length\n" +"\\&\n" +" Requiring the user to supply a string that contains newlines is\n" +" of course inconvenient for command-line use. Thus, we permit the\n" +" use of commas to delimit records in this string, and replace them\n" +" with newlines before writing the string to the file. */\n" +"\\&\n" +"static void\n" +"update_map(char *mapping, char *map_file)\n" +"{\n" +" int fd;\n" +" size_t map_len; /* Length of \\[aq]mapping\\[aq] */\n" +"\\&\n" +" /* Replace commas in mapping string with newlines. */\n" +"\\&\n" +" map_len = strlen(mapping);\n" +" for (size_t j = 0; j E<lt> map_len; j++)\n" +" if (mapping[j] == \\[aq],\\[aq])\n" +" mapping[j] = \\[aq]\\en\\[aq];\n" +"\\&\n" +" fd = open(map_file, O_RDWR);\n" +" if (fd == -1) {\n" +" fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" if (write(fd, mapping, map_len) != map_len) {\n" +" fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" close(fd);\n" +"}\n" +"\\&\n" +"/* Linux 3.19 made a change in the handling of setgroups(2) and\n" +" the \\[aq]gid_map\\[aq] file to address a security issue. The issue\n" +" allowed *unprivileged* users to employ user namespaces in\n" +" order to drop groups. The upshot of the 3.19 changes is that\n" +" in order to update the \\[aq]gid_maps\\[aq] file, use of the setgroups()\n" +" system call in this user namespace must first be disabled by\n" +" writing \"deny\" to one of the /proc/PID/setgroups files for\n" +" this namespace. That is the purpose of the following function. */\n" +"\\&\n" +"static void\n" +"proc_setgroups_write(pid_t child_pid, char *str)\n" +"{\n" +" char setgroups_path[PATH_MAX];\n" +" int fd;\n" +"\\&\n" +" snprintf(setgroups_path, PATH_MAX, \"/proc/%jd/setgroups\",\n" +" (intmax_t) child_pid);\n" +"\\&\n" +" fd = open(setgroups_path, O_RDWR);\n" +" if (fd == -1) {\n" +"\\&\n" +" /* We may be on a system that doesn\\[aq]t support\n" +" /proc/PID/setgroups. In that case, the file won\\[aq]t exist,\n" +" and the system won\\[aq]t impose the restrictions that Linux 3.19\n" +" added. That\\[aq]s fine: we don\\[aq]t need to do anything in order\n" +" to permit \\[aq]gid_map\\[aq] to be updated.\n" +"\\&\n" +" However, if the error from open() was something other than\n" +" the ENOENT error that is expected for that case, let the\n" +" user know. */\n" +"\\&\n" +" if (errno != ENOENT)\n" +" fprintf(stderr, \"ERROR: open %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" +" return;\n" +" }\n" +"\\&\n" +" if (write(fd, str, strlen(str)) == -1)\n" +" fprintf(stderr, \"ERROR: write %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" +"\\&\n" +" close(fd);\n" +"}\n" +"\\&\n" +"static int /* Start function for cloned child */\n" +"childFunc(void *arg)\n" +"{\n" +" struct child_args *args = arg;\n" +" char ch;\n" +"\\&\n" +" /* Wait until the parent has updated the UID and GID mappings.\n" +" See the comment in main(). We wait for end of file on a\n" +" pipe that will be closed by the parent process once it has\n" +" updated the mappings. */\n" +"\\&\n" +" close(args-E<gt>pipe_fd[1]); /* Close our descriptor for the write\n" +" end of the pipe so that we see EOF\n" +" when parent closes its descriptor. */\n" +" if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n" +" fprintf(stderr,\n" +" \"Failure in child: read from pipe returned != 0\\en\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" close(args-E<gt>pipe_fd[0]);\n" +"\\&\n" +" /* Execute a shell command. */\n" +"\\&\n" +" printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n" +" execvp(args-E<gt>argv[0], args-E<gt>argv);\n" +" err(EXIT_FAILURE, \"execvp\");\n" +"}\n" +"\\&\n" +"#define STACK_SIZE (1024 * 1024)\n" +"\\&\n" +"static char child_stack[STACK_SIZE]; /* Space for child\\[aq]s stack */\n" +"\\&\n" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" int flags, opt, map_zero;\n" +" pid_t child_pid;\n" +" struct child_args args;\n" +" char *uid_map, *gid_map;\n" +" const int MAP_BUF_SIZE = 100;\n" +" char map_buf[MAP_BUF_SIZE];\n" +" char map_path[PATH_MAX];\n" +"\\&\n" +" /* Parse command-line options. The initial \\[aq]+\\[aq] character in\n" +" the final getopt() argument prevents GNU-style permutation\n" +" of command-line options. That\\[aq]s useful, since sometimes\n" +" the \\[aq]command\\[aq] to be executed by this program itself\n" +" has command-line options. We don\\[aq]t want getopt() to treat\n" +" those as options to this program. */\n" +"\\&\n" +" flags = 0;\n" +" verbose = 0;\n" +" gid_map = NULL;\n" +" uid_map = NULL;\n" +" map_zero = 0;\n" +" while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n" +" switch (opt) {\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]u\\[aq]: flags |= CLONE_NEWUTS; break;\n" +" case \\[aq]v\\[aq]: verbose = 1; break;\n" +" case \\[aq]z\\[aq]: map_zero = 1; break;\n" +" case \\[aq]M\\[aq]: uid_map = optarg; break;\n" +" case \\[aq]G\\[aq]: gid_map = optarg; break;\n" +" case \\[aq]U\\[aq]: flags |= CLONE_NEWUSER; break;\n" +" default: usage(argv[0]);\n" +" }\n" +" }\n" +"\\&\n" +" /* -M or -G without -U is nonsensical */\n" +"\\&\n" +" if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n" +" !(flags & CLONE_NEWUSER)) ||\n" +" (map_zero && (uid_map != NULL || gid_map != NULL)))\n" +" usage(argv[0]);\n" +"\\&\n" +" args.argv = &argv[optind];\n" +"\\&\n" +" /* We use a pipe to synchronize the parent and child, in order to\n" +" ensure that the parent sets the UID and GID maps before the child\n" +" calls execve(). This ensures that the child maintains its\n" +" capabilities during the execve() in the common case where we\n" +" want to map the child\\[aq]s effective user ID to 0 in the new user\n" +" namespace. Without this synchronization, the child would lose\n" +" its capabilities if it performed an execve() with nonzero\n" +" user IDs (see the capabilities(7) man page for details of the\n" +" transformation of a process\\[aq]s capabilities during execve()). */\n" +"\\&\n" +" if (pipe(args.pipe_fd) == -1)\n" +" err(EXIT_FAILURE, \"pipe\");\n" +"\\&\n" +" /* Create the child in new namespace(s). */\n" +"\\&\n" +" child_pid = clone(childFunc, child_stack + STACK_SIZE,\n" +" flags | SIGCHLD, &args);\n" +" if (child_pid == -1)\n" +" err(EXIT_FAILURE, \"clone\");\n" +"\\&\n" +" /* Parent falls through to here. */\n" +"\\&\n" +" if (verbose)\n" +" printf(\"%s: PID of child created by clone() is %jd\\en\",\n" +" argv[0], (intmax_t) child_pid);\n" +"\\&\n" +" /* Update the UID and GID maps in the child. */\n" +"\\&\n" +" if (uid_map != NULL || map_zero) {\n" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/uid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %jd 1\",\n" +" (intmax_t) getuid());\n" +" uid_map = map_buf;\n" +" }\n" +" update_map(uid_map, map_path);\n" +" }\n" +"\\&\n" +" if (gid_map != NULL || map_zero) {\n" +" proc_setgroups_write(child_pid, \"deny\");\n" +"\\&\n" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/gid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\",\n" +" (intmax_t) getgid());\n" +" gid_map = map_buf;\n" +" }\n" +" update_map(gid_map, map_path);\n" +" }\n" +"\\&\n" +" /* Close the write end of the pipe, to signal to the child that we\n" +" have updated the UID and GID maps. */\n" +"\\&\n" +" close(args.pipe_fd[1]);\n" +"\\&\n" +" if (waitpid(child_pid, NULL, 0) == -1) /* Wait for child */\n" +" err(EXIT_FAILURE, \"waitpid\");\n" +"\\&\n" +" if (verbose)\n" +" printf(\"%s: terminating\\en\", argv[0]);\n" +"\\&\n" +" exit(EXIT_SUCCESS);\n" +"}\n" +msgstr "" +"/* userns_child_exec.c\n" +"\\&\n" +" Licensed under GNU General Public License v2 or later\n" +"\\&\n" +" Skapa en barnprocess som kör ett skalkommando i nya namnrymder;\n" +" låt UID- och GID-avbildningar anges när en användarnamnrymd\n" +" skapas.\n" +"*/\n" +"#define _GNU_SOURCE\n" +"#include E<lt>err.hE<gt>\n" +"#include E<lt>sched.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>stdint.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/wait.hE<gt>\n" +"#include E<lt>signal.hE<gt>\n" +"#include E<lt>fcntl.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +"#include E<lt>limits.hE<gt>\n" +"#include E<lt>errno.hE<gt>\n" +"\\&\n" +"struct child_args {\n" +" char **argv; /* Kommando att köras av barnet, med argument */\n" +" int pipe_fd[2]; /* Rör använt för att synkronisera förälder och barn */\n" +"};\n" +"\\&\n" +"static int verbose;\n" +"\\&\n" +"static void\n" +"usage(char *pname)\n" +"{\n" +" fprintf(stderr, \"Användning: %s [flaggor] kmd [arg…]\\en\\en\", pname);\n" +" fprintf(stderr, \"Skapa en barnprocess som kör ett skalkommando i \"\n" +" \"en ny användarnamnrymd,\\en\"\n" +" \"och eventuellt även andra nya namnrymder.\\en\\en\");\n" +" fprintf(stderr, \"Flaggor kan vara:\\en\\en\");\n" +"#define fpe(str) fprintf(stderr, \" %s\", str);\n" +" fpe(\"-i Ny IPC-namnrymd\\en\");\n" +" fpe(\"-m Ny monteringsnamnrymd\\en\");\n" +" fpe(\"-n Ny nätverksnamnrymd\\en\");\n" +" fpe(\"-p Ny PID-namnrymd\\en\");\n" +" fpe(\"-u Ny UTS-namnrymd\\en\");\n" +" fpe(\"-U Ny användarnamnrymd\\en\");\n" +" fpe(\"-M uid_map Ange AID-avbildning för användarnamnrymden\\en\");\n" +" fpe(\"-G gid_map Ange GID-avbildning för användarnamnrymden\\en\");\n" +" fpe(\"-z Avbilda användar-AID och -GID till 0 i användarnamnrymden\\en\");\n" +" fpe(\" (ekvivalent med: -M \\[aq]0 E<lt>aidE<gt> 1\\[aq] -G \\[aq]0 E<lt>gidE<gt> 1\\[aq])\\en\");\n" +" fpe(\"-v Visa utförliga meddelanden\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"Om -z, -M eller -G anges är -U nödvändigt.\\en\");\n" +" fpe(\"Det är inte tillåtet att ange både -z och någon av -M eller -G.\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"Avbildningssträngar för -M och -G består av poster på formen:\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\" ID-inuti-nr ID-utanför-nr längd\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"En avbildningssträng kan innehålla flera poster, separerade\"\n" +" \" av komman;\\en\");\n" +" fpe(\"kommatecknen ersätts med nyrader före skrivning\"\n" +" \" till avbildningsfiler.\\en\");\n" +"\\&\n" +" exit(EXIT_FAILURE);\n" +"}\n" +"\\&\n" +"/* Uppdatera avbildningsfilen \\[aq]map_fil\\[aq], med värdena som ges i\n" +" \\[aq]avbildning\\[aq], en sträng som definierar en AID- eller GID-avbildning.\n" +" En AID- eller GID-avbildning består av en eller flera nyradsavgränsade poster\n" +" på formen:\n" +"\\&\n" +" ID_inuti-nr ID-utanför-nr längd\n" +"\\&\n" +" Att begära att användaren skall ge en sträng som innehåller nyrader är\n" +" naturligtvis opraktiskt för kommandoradsanvändning. Därför tillåter vi\n" +" användningen av komman för att avgränsa poster i denna sträng, och\n" +" ersätter dem med nyrader före vi skriver strängen till filen. */\"\n" +"\\&\n" +"static void\n" +"update_map(char *mapping, char *map_file)\n" +"{\n" +" int fd;\n" +" size_t map_len; /* Längden på \\\\[aq]avbildning\\\\[aq] */\n" +"\\&\n" +" /* Ersätt kommatecken i avbildningssträngar med nyrader. */\n" +"\\&\n" +" map_len = strlen(mapping);\n" +" for (size_t j = 0; j E<lt> map_len; j++)\n" +" if (mapping[j] == \\[aq],\\[aq])\n" +" mapping[j] = \\[aq]\\en\\[aq];\n" +"\\&\n" +" fd = open(map_file, O_RDWR);\n" +" if (fd == -1) {\n" +" fprintf(stderr, \"FEL: open %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" if (write(fd, mapping, map_len) != map_len) {\n" +" fprintf(stderr, \"FEL: write %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" close(fd);\n" +"}\n" +"\\&\n" +"/* Linux 3.19 gjorde en ändring av hanteringen av setgroups(2) och filen\n" +" \\[aq]gid_map\\[aq] för att åtgärda ett säkerhetsproblem. Problemet tillät\n" +" *oprivilegierade* användare att nyttja användarnamnrymder för att släppa\n" +" grupper. Följden av ändringarna i 3.19 är att för att uppdatera filen\n" +" \\[aq]gid_maps\\[aq] måste först användning av systemanropet setgroups()\n" +" i denna användarnamnrymd avaktiveras genom att skriva \"deny\" till en\n" +" av filerna /proc/PID/setgroups för denna namnrymd. Det är syftet med\n" +" följande funktion. */\n" +"\\&\n" +"static void\n" +"proc_setgroups_write(pid_t child_pid, char *str)\n" +"{\n" +" char setgroups_path[PATH_MAX];\n" +" int fd;\n" +"\\&\n" +" snprintf(setgroups_path, PATH_MAX, \"/proc/%jd/setgroups\",\n" +" (intmax_t) child_pid);\n" +"\\&\n" +" fd = open(setgroups_path, O_RDWR);\n" +" if (fd == -1) {\n" +"\\&\n" +" /* Vi kan vara på ett system som inte stödjer /proc/PID/setgroups.\n" +" I det fallet kommer filen inte att finnas, och systemet kommer\n" +" inte att påtvinga begränsningarna som Linux 3.19 lade till. Det\n" +" är bra så: vi behöver inte göra något för att tillåta att\n" +" \\[aq]gid_map\\[aq] uppdateras.\n" +"\\&\n" +" Dock, om felet från open() var något annat än felet ENOENT\n" +" som förväntas i det fallet, tala om det för användaren. */\n" +"\\&\n" +" if (errno != ENOENT)\n" +" fprintf(stderr, \"FEL: open %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" +" return;\n" +" }\n" +"\\&\n" +" if (write(fd, str, strlen(str)) == -1)\n" +" fprintf(stderr, \"FEL: write %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" +"\\&\n" +" close(fd);\n" +"}\n" +"\\&\n" +"static int /* Startfunktion för klonat barn */\n" +"childFunc(void *arg)\n" +"{\n" +" struct child_args *args = arg;\n" +" char ch;\n" +"\\&\n" +" /* Vänta tills föräldern har uppdaterat AID- och GID-avbildningarna.\n" +" Se kommentaren i main(). Vi väntar på filslut från ett rör som\n" +" kommer stängas av föräldraprocessen när den har uppdaterat\n" +" avbildningarna. */\n" +"\\&\n" +" close(args-E<gt>pipe_fd[1]); /* Stäng vår beskrivare för skrivänden\n" +" av röret så att vi ser EOF när föräldern\n" +" stänger sin beskrivare. */\n" +" if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n" +" fprintf(stderr,\n" +" \"Fel i barnet: läsning från röret returnerade ≠ 0\\en\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +"\\&\n" +" close(args-E<gt>pipe_fd[0]);\n" +"\\&\n" +" /* Kör ett skalkommando. */\n" +"\\&\n" +" printf(\"I begrepp att göra exec %s\\en\", args-E<gt>argv[0]);\n" +" execvp(args-E<gt>argv[0], args-E<gt>argv);\n" +" err(EXIT_FAILURE, \"execvp\");\n" +"}\n" +"\\&\n" +"#define STACK_SIZE (1024 * 1024)\n" +"\\&\n" +"static char child_stack[STACK_SIZE]; /* Utrymme för barnets stack */\n" +"\\&\n" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" int flags, opt, map_zero;\n" +" pid_t child_pid;\n" +" struct child_args args;\n" +" char *uid_map, *gid_map;\n" +" const int MAP_BUF_SIZE = 100;\n" +" char map_buf[MAP_BUF_SIZE];\n" +" char map_path[PATH_MAX];\n" +"\\&\n" +" /* Tolka kommandoradsflaggor. Det inledande tecknet \\[aq]+\\[aq] i det\n" +" sista argumentet till getopt() förhindrar permutationer av\n" +" kommandoradsflaggor enligt GNU-stil. Det är användbart, eftersom\n" +" ibland \\[aq]kommandot\\[aq] som skall köras av detta program självt\n" +" har kommandoradsflaggor. Vi vill inte att getopt() skall hantera\n" +" dessa som flaggor till detta program. */\n" +"\\&\n" +" flags = 0;\n" +" verbose = 0;\n" +" gid_map = NULL;\n" +" uid_map = NULL;\n" +" map_zero = 0;\n" +" while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n" +" switch (opt) {\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]u\\[aq]: flags |= CLONE_NEWUTS; break;\n" +" case \\[aq]v\\[aq]: verbose = 1; break;\n" +" case \\[aq]z\\[aq]: map_zero = 1; break;\n" +" case \\[aq]M\\[aq]: uid_map = optarg; break;\n" +" case \\[aq]G\\[aq]: gid_map = optarg; break;\n" +" case \\[aq]U\\[aq]: flags |= CLONE_NEWUSER; break;\n" +" default: usage(argv[0]);\n" +" }\n" +" }\n" +"\\&\n" +" /* -M eller -G utan -U är meningslöst */\n" +"\\&\n" +" if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n" +" !(flags & CLONE_NEWUSER)) ||\n" +" (map_zero && (uid_map != NULL || gid_map != NULL)))\n" +" usage(argv[0]);\n" +"\\&\n" +" args.argv = &argv[optind];\n" +"\\&\n" +" /* Vi använder ett rör för att synkronisera förälder och barn, för\n" +" att säkerställa att föräldern ställer in UID- och GID-avbildningarna\n" +" före barnet anropar execve(). Detta ser till att barnet behåller\n" +" sina förmågor under execve() i det vanliga fallet då vi vill avbilda\n" +" barnets effektiva användar-ID på 0 i den nya användarnamnrymden.\n" +" Utan denna synkronisering skulle barnet tappa sina förmågor om det\n" +" utförde en execve() med användar-ID:n skilda från noll (se\n" +" manualsidan capabilities(7) för detaljer om transformationen av en\n" +" process förmågor under execve()). */\n" +"\\&\n" +" if (pipe(args.pipe_fd) == -1)\n" +" err(EXIT_FAILURE, \"pipe\");\n" +"\\&\n" +" /* Skapa barnet i nya namnrymder. */\n" +"\\&\n" +" child_pid = clone(childFunc, child_stack + STACK_SIZE,\n" +" flags | SIGCHLD, &args);\n" +" if (child_pid == -1)\n" +" err(EXIT_FAILURE, \"clone\");\n" +"\\&\n" +" /* Föräldern faller igenom hit. */\n" +"\\&\n" +" if (verbose)\n" +" printf(\"%s: PID för barnet som skapades av clone() är %jd\\en\",\n" +" argv[0], (intmax_t) child_pid);\n" +"\\&\n" +" /* Uppdatera UID- och GID-avbildningarna i barnet. */\n" +"\\&\n" +" if (uid_map != NULL || map_zero) {\n" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/uid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %jd 1\",\n" +" (intmax_t) getuid());\n" +" uid_map = map_buf;\n" +" }\n" +" update_map(uid_map, map_path);\n" +" }\n" +"\\&\n" +" if (gid_map != NULL || map_zero) {\n" +" proc_setgroups_write(child_pid, \"deny\");\n" +"\\&\n" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/gid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\",\n" +" (intmax_t) getgid());\n" +" gid_map = map_buf;\n" +" }\n" +" update_map(gid_map, map_path);\n" +" }\n" +"\\&\n" +" /* Stäng skrivänden av röret för att signalera till barnet att vi\n" +" har uppdaterat UID- och GID-avbildningarna. */\n" +"\\&\n" +" close(args.pipe_fd[1]);\n" +"\\&\n" +" if (waitpid(child_pid, NULL, 0) == -1) /* Wait for child */\n" +" err(EXIT_FAILURE, \"waitpid\");\n" +"\\&\n" +" if (verbose)\n" +" printf(\"%s: avslutar\\en\", argv[0]);\n" +"\\&\n" +" exit(EXIT_SUCCESS);\n" +"}\n" + +#. 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 "SE ÄVEN" + +#. From the shadow package +#. From the shadow package +#. From the shadow package +#. From the shadow package +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<ptrace>(2), B<setns>(2), " +"B<unshare>(2), B<proc>(5), B<subgid>(5), B<subuid>(5), B<capabilities>(7), " +"B<cgroup_namespaces>(7), B<credentials>(7), B<namespaces>(7), " +"B<pid_namespaces>(7)" +msgstr "" +"B<newgidmap>(1), B<newuidmap>(1), B<clone>(2), B<ptrace>(2), B<setns>(2), " +"B<unshare>(2), B<proc>(5), B<subgid>(5), B<subuid>(5), B<capabilities>(7), " +"B<cgroup_namespaces>(7), B<credentials>(7), B<namespaces>(7), " +"B<pid_namespaces>(7)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The kernel source file I<Documentation/admin-guide/namespaces/resource-" +"control.rst>." +msgstr "" +"Kärnans källfil I<Documentation/admin-guide/namespaces/resource-control.rst>." + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "2023-02-05" +msgstr "5 februari 2023" + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "Linux man-pages 6.03" +msgstr "Linux man-pages 6.03" + +#. type: SS +#: debian-bookworm +#, no-wrap +msgid "The /proc/I<pid>/setgroups file" +msgstr "Filen /proc/I<pid>/setgroups" + +#. type: Plain text +#: debian-bookworm +msgid "Namespaces are a Linux-specific feature." +msgstr "Namnrymder är en Linux-specifik funktion." + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "/* userns_child_exec.c\n" +msgstr "/* userns_child_exec.c\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " Licensed under GNU General Public License v2 or later\n" +msgstr " Licensierad under GNU General Public License v2 eller senare\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" Create a child process that executes a shell command in new\n" +" namespace(s); allow UID and GID mappings to be specified when\n" +" creating a user namespace.\n" +"*/\n" +"#define _GNU_SOURCE\n" +"#include E<lt>err.hE<gt>\n" +"#include E<lt>sched.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>stdint.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/wait.hE<gt>\n" +"#include E<lt>signal.hE<gt>\n" +"#include E<lt>fcntl.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +"#include E<lt>limits.hE<gt>\n" +"#include E<lt>errno.hE<gt>\n" +msgstr "" +" Skapa en barnprocess som kör ett skalkommande i nya namnrymder;\n" +" tillåt UID- och GID-avbildningar att anges när en användarnamnrymd\n" +" skapas.\n" +"*/\n" +"#define _GNU_SOURCE\n" +"#include E<lt>err.hE<gt>\n" +"#include E<lt>sched.hE<gt>\n" +"#include E<lt>unistd.hE<gt>\n" +"#include E<lt>stdint.hE<gt>\n" +"#include E<lt>stdlib.hE<gt>\n" +"#include E<lt>sys/wait.hE<gt>\n" +"#include E<lt>signal.hE<gt>\n" +"#include E<lt>fcntl.hE<gt>\n" +"#include E<lt>stdio.hE<gt>\n" +"#include E<lt>string.hE<gt>\n" +"#include E<lt>limits.hE<gt>\n" +"#include E<lt>errno.hE<gt>\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"struct child_args {\n" +" char **argv; /* Command to be executed by child, with args */\n" +" int pipe_fd[2]; /* Pipe used to synchronize parent and child */\n" +"};\n" +msgstr "" +"struct child_args {\n" +" char **argv; /* Kommando att köras av barnet, med argument */\n" +" int pipe_fd[2]; /* Rör använt för att synkronisera förälder och barn */\n" +"};\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "static int verbose;\n" +msgstr "static int verbose;\n" + +#. 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] cmd [arg...]\\en\\en\", pname);\n" +" fprintf(stderr, \"Create a child process that executes a shell \"\n" +" \"command in a new user namespace,\\en\"\n" +" \"and possibly also other new namespace(s).\\en\\en\");\n" +" fprintf(stderr, \"Options can be:\\en\\en\");\n" +"#define fpe(str) fprintf(stderr, \" %s\", str);\n" +" fpe(\"-i New IPC namespace\\en\");\n" +" fpe(\"-m New mount namespace\\en\");\n" +" fpe(\"-n New network namespace\\en\");\n" +" fpe(\"-p New PID namespace\\en\");\n" +" fpe(\"-u New UTS namespace\\en\");\n" +" fpe(\"-U New user namespace\\en\");\n" +" fpe(\"-M uid_map Specify UID map for user namespace\\en\");\n" +" fpe(\"-G gid_map Specify GID map for user namespace\\en\");\n" +" fpe(\"-z Map user\\[aq]s UID and GID to 0 in user namespace\\en\");\n" +" fpe(\" (equivalent to: -M \\[aq]0 E<lt>uidE<gt> 1\\[aq] -G \\[aq]0 E<lt>gidE<gt> 1\\[aq])\\en\");\n" +" fpe(\"-v Display verbose messages\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"If -z, -M, or -G is specified, -U is required.\\en\");\n" +" fpe(\"It is not permitted to specify both -z and either -M or -G.\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"Map strings for -M and -G consist of records of the form:\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\" ID-inside-ns ID-outside-ns len\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"A map string can contain multiple records, separated\"\n" +" \" by commas;\\en\");\n" +" fpe(\"the commas are replaced by newlines before writing\"\n" +" \" to map files.\\en\");\n" +msgstr "" +"static void\n" +"usage(char *pname)\n" +"{\n" +" fprintf(stderr, \"Användning: %s [flaggor] kmd [arg…]\\en\\en\", pname);\n" +" fprintf(stderr, \"Skapa en barnprocess som kör ett skalkommando i \"\n" +" \"en ny användarnamnrymd,\\en\"\n" +" \"och eventuellt även andra nya namnrymder.\\en\\en\");\n" +" fprintf(stderr, \"Flaggor kan vara:\\en\\en\");\n" +"#define fpe(str) fprintf(stderr, \" %s\", str);\n" +" fpe(\"-i Ny IPC-namnrymd\\en\");\n" +" fpe(\"-m Ny monteringsnamnrymd\\en\");\n" +" fpe(\"-n Ny nätverksnamnrymd\\en\");\n" +" fpe(\"-p Ny PID-namnrymd\\en\");\n" +" fpe(\"-u Ny UTS-namnrymd\\en\");\n" +" fpe(\"-U Ny användarnamnrymd\\en\");\n" +" fpe(\"-M uid_map Ange AID-avbildning för användarnamnrymden\\en\");\n" +" fpe(\"-G gid_map Ange GID-avbildning för användarnamnrymden\\en\");\n" +" fpe(\"-z Avbilda användar-AID och -GID till 0 i användarnamnrymden\\en\");\n" +" fpe(\" (ekvivalent med: -M \\[aq]0 E<lt>aidE<gt> 1\\[aq] -G \\[aq]0 E<lt>gidE<gt> 1\\[aq])\\en\");\n" +" fpe(\"-v Visa utförliga meddelanden\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"Om -z, -M eller -G anges är -U nödvändigt.\\en\");\n" +" fpe(\"Det är inte tillåtet att ange både -z och någon av -M eller -G.\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"Avbildningssträngar för -M och -G består av poster på formen:\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\" ID-inuti-nr ID-utanför-nr längd\\en\");\n" +" fpe(\"\\en\");\n" +" fpe(\"En avbildningssträng kan innehålla flera poster, separerade\"\n" +" \" av komman;\\en\");\n" +" fpe(\"kommatecknen ersätts med nyrader före skrivning\"\n" +" \" till avbildningsfiler.\\en\");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" exit(EXIT_FAILURE);\n" +"}\n" +msgstr "" +" exit(EXIT_FAILURE);\n" +"}\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"/* Update the mapping file \\[aq]map_file\\[aq], with the value provided in\n" +" \\[aq]mapping\\[aq], a string that defines a UID or GID mapping. A UID or\n" +" GID mapping consists of one or more newline-delimited records\n" +" of the form:\n" +msgstr "" +"/* Uppdatera avbildningsfilen \\[dq]map_fil\\[dq], med värdena som ges i\n" +" \\[dq]avbildning\\[dq], en sträng som definierar en AID- eller GID-avbildning.\n" +" En AID- eller GID-avbildning består av en eller flera nyradsavgränsade poster\n" +" på formen:\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " ID_inside-ns ID-outside-ns length\n" +msgstr " ID_inuti-nr ID-utanför-nr längd\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" Requiring the user to supply a string that contains newlines is\n" +" of course inconvenient for command-line use. Thus, we permit the\n" +" use of commas to delimit records in this string, and replace them\n" +" with newlines before writing the string to the file. */\n" +msgstr "" +" Att begära att användaren skall ge en sträng som innehåller nyrader är\n" +" naturligtvis opraktiskt för kommandoradsanvändning. Därför tillåter vi\n" +" användningen av komman för att avgränsa poster i denna sträng, och\n" +" ersätter dem med nyrader före vi skriver strängen till filen. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"static void\n" +"update_map(char *mapping, char *map_file)\n" +"{\n" +" int fd;\n" +" size_t map_len; /* Length of \\[aq]mapping\\[aq] */\n" +msgstr "" +"static void\n" +"update_map(char *mapping, char *map_file)\n" +"{\n" +" int fd;\n" +" size_t map_len; /* Längden på \\[dq]avbildning\\[dq] */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Replace commas in mapping string with newlines. */\n" +msgstr " /* Ersätt kommatecken i avbildningssträngar med nyrader. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" map_len = strlen(mapping);\n" +" for (size_t j = 0; j E<lt> map_len; j++)\n" +" if (mapping[j] == \\[aq],\\[aq])\n" +" mapping[j] = \\[aq]\\en\\[aq];\n" +msgstr "" +" map_len = strlen(mapping);\n" +" for (size_t j = 0; j E<lt> map_len; j++)\n" +" if (mapping[j] == \\[aq],\\[aq])\n" +" mapping[j] = \\[aq]\\en\\[aq];\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" fd = open(map_file, O_RDWR);\n" +" if (fd == -1) {\n" +" fprintf(stderr, \"ERROR: open %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" fd = open(map_file, O_RDWR);\n" +" if (fd == -1) {\n" +" fprintf(stderr, \"FEL: open %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (write(fd, mapping, map_len) != map_len) {\n" +" fprintf(stderr, \"ERROR: write %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" if (write(fd, mapping, map_len) != map_len) {\n" +" fprintf(stderr, \"FEL: write %s: %s\\en\", map_file,\n" +" strerror(errno));\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" close(fd);\n" +"}\n" +msgstr "" +" close(fd);\n" +"}\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"/* Linux 3.19 made a change in the handling of setgroups(2) and the\n" +" \\[aq]gid_map\\[aq] file to address a security issue. The issue allowed\n" +" *unprivileged* users to employ user namespaces in order to drop groups.\n" +" The upshot of the 3.19 changes is that in order to update the\n" +" \\[aq]gid_maps\\[aq] file, use of the setgroups() system call in this\n" +" user namespace must first be disabled by writing \"deny\" to one of\n" +" the /proc/PID/setgroups files for this namespace. That is the\n" +" purpose of the following function. */\n" +msgstr "" +"/* Linux 3.19 gjorde en ändring av hanteringen av setgroups(2) och filen\n" +" \\[dq]gid_map\\[dq] för att åtgärda ett säkerhetsproblem. Problemet tillät\n" +" *oprivilegierade* användare att nyttja användarnamnrymder för att släppa\n" +" grupper. Följden av ändringarna i 3.19 är att för att uppdatera filen\n" +" \\[dq]gid_maps\\[dq] måste först användning av systemanropet setgroups()\n" +" i denna användarnamnrymd avaktiveras genom att skriva \"deny\" till en\n" +" av filerna /proc/PID/setgroups för denna namnrymd. Det är syftet med\n" +" följande funktion. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"static void\n" +"proc_setgroups_write(pid_t child_pid, char *str)\n" +"{\n" +" char setgroups_path[PATH_MAX];\n" +" int fd;\n" +msgstr "" +"static void\n" +"proc_setgroups_write(pid_t child_pid, char *str)\n" +"{\n" +" char setgroups_path[PATH_MAX];\n" +" int fd;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" snprintf(setgroups_path, PATH_MAX, \"/proc/%jd/setgroups\",\n" +" (intmax_t) child_pid);\n" +msgstr "" +" snprintf(setgroups_path, PATH_MAX, \"/proc/%jd/setgroups\",\n" +" (intmax_t) child_pid);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" fd = open(setgroups_path, O_RDWR);\n" +" if (fd == -1) {\n" +msgstr "" +" fd = open(setgroups_path, O_RDWR);\n" +" if (fd == -1) {\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" /* We may be on a system that doesn\\[aq]t support\n" +" /proc/PID/setgroups. In that case, the file won\\[aq]t exist,\n" +" and the system won\\[aq]t impose the restrictions that Linux 3.19\n" +" added. That\\[aq]s fine: we don\\[aq]t need to do anything in order\n" +" to permit \\[aq]gid_map\\[aq] to be updated.\n" +msgstr "" +" /* Vi kan vara på ett system som inte stödjer /proc/PID/setgroups.\n" +" I det fallet kommer filen inte att finnas, och systemet kommer\n" +" inte att påtvinga begränsningarna som Linux 3.19 lade till. Det\n" +" är bra så: vi behöver inte göra något för att tillåta att\n" +" \\[dq]gid_map\\[dq] uppdateras.\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" However, if the error from open() was something other than\n" +" the ENOENT error that is expected for that case, let the\n" +" user know. */\n" +msgstr "" +" Dock, om felet från open() var något annat än felet ENOENT\n" +" som förväntas i det fallet, tala om det för användaren. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (errno != ENOENT)\n" +" fprintf(stderr, \"ERROR: open %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" +" return;\n" +" }\n" +msgstr "" +" if (errno != ENOENT)\n" +" fprintf(stderr, \"FEL: open %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" +" return;\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (write(fd, str, strlen(str)) == -1)\n" +" fprintf(stderr, \"ERROR: write %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" +msgstr "" +" if (write(fd, str, strlen(str)) == -1)\n" +" fprintf(stderr, \"FEL: write %s: %s\\en\", setgroups_path,\n" +" strerror(errno));\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"static int /* Start function for cloned child */\n" +"childFunc(void *arg)\n" +"{\n" +" struct child_args *args = arg;\n" +" char ch;\n" +msgstr "" +"static int /* Startfunktion för klonat barn */\n" +"childFunc(void *arg)\n" +"{\n" +" struct child_args *args = arg;\n" +" char ch;\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" /* Wait until the parent has updated the UID and GID mappings.\n" +" See the comment in main(). We wait for end of file on a\n" +" pipe that will be closed by the parent process once it has\n" +" updated the mappings. */\n" +msgstr "" +" /* Vänta tills föräldern har uppdaterat AID- och GID-avbildningarna.\n" +" Se kommentaren i main(). Vi väntar på filslut från ett rör som\n" +" kommer stängas av föräldraprocessen när den har uppdaterat\n" +" avbildningarna. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" close(args-E<gt>pipe_fd[1]); /* Close our descriptor for the write\n" +" end of the pipe so that we see EOF\n" +" when parent closes its descriptor. */\n" +" if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n" +" fprintf(stderr,\n" +" \"Failure in child: read from pipe returned != 0\\en\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" +msgstr "" +" close(args-E<gt>pipe_fd[1]); /* Stäng vår beskrivare för skrivänden\n" +" av röret så att vi ser EOF när föräldern\n" +" stänger sin beskrivare. */\n" +" if (read(args-E<gt>pipe_fd[0], &ch, 1) != 0) {\n" +" fprintf(stderr,\n" +" \"Fel i barnet: läsning från röret returnerade ≠ 0\\en\");\n" +" exit(EXIT_FAILURE);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " close(args-E<gt>pipe_fd[0]);\n" +msgstr " close(args-E<gt>pipe_fd[0]);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Execute a shell command. */\n" +msgstr " /* Kör ett skalkommando. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" printf(\"About to exec %s\\en\", args-E<gt>argv[0]);\n" +" execvp(args-E<gt>argv[0], args-E<gt>argv);\n" +" err(EXIT_FAILURE, \"execvp\");\n" +"}\n" +msgstr "" +" printf(\"I begrepp att göra exec %s\\en\", args-E<gt>argv[0]);\n" +" execvp(args-E<gt>argv[0], args-E<gt>argv);\n" +" err(EXIT_FAILURE, \"execvp\");\n" +"}\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "#define STACK_SIZE (1024 * 1024)\n" +msgstr "#define STACK_SIZE (1024 * 1024)\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "static char child_stack[STACK_SIZE]; /* Space for child\\[aq]s stack */\n" +msgstr "static char child_stack[STACK_SIZE]; /* Utrymme för barnets stack */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" int flags, opt, map_zero;\n" +" pid_t child_pid;\n" +" struct child_args args;\n" +" char *uid_map, *gid_map;\n" +" const int MAP_BUF_SIZE = 100;\n" +" char map_buf[MAP_BUF_SIZE];\n" +" char map_path[PATH_MAX];\n" +msgstr "" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" int flags, opt, map_zero;\n" +" pid_t child_pid;\n" +" struct child_args args;\n" +" char *uid_map, *gid_map;\n" +" const int MAP_BUF_SIZE = 100;\n" +" char map_buf[MAP_BUF_SIZE];\n" +" char map_path[PATH_MAX];\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" /* Parse command-line options. The initial \\[aq]+\\[aq] character in\n" +" the final getopt() argument prevents GNU-style permutation\n" +" of command-line options. That\\[aq]s useful, since sometimes\n" +" the \\[aq]command\\[aq] to be executed by this program itself\n" +" has command-line options. We don\\[aq]t want getopt() to treat\n" +" those as options to this program. */\n" +msgstr "" +" /* Tolka kommandoradsflaggor. Det inledande tecknet \\[dq]+\\[dq] i det\n" +" sista argumentet till getopt() förhindrar permutationer av\n" +" kommandoradsflaggor enligt GNU-stil. Det är användbart, eftersom\n" +" ibland \\[dq]kommandot\\[dq] som skall köras av detta program självt\n" +" har kommandoradsflaggor. Vi vill inte att getopt() skall hantera\n" +" dessa som flaggor till detta program. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" flags = 0;\n" +" verbose = 0;\n" +" gid_map = NULL;\n" +" uid_map = NULL;\n" +" map_zero = 0;\n" +" while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n" +" switch (opt) {\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]u\\[aq]: flags |= CLONE_NEWUTS; break;\n" +" case \\[aq]v\\[aq]: verbose = 1; break;\n" +" case \\[aq]z\\[aq]: map_zero = 1; break;\n" +" case \\[aq]M\\[aq]: uid_map = optarg; break;\n" +" case \\[aq]G\\[aq]: gid_map = optarg; break;\n" +" case \\[aq]U\\[aq]: flags |= CLONE_NEWUSER; break;\n" +" default: usage(argv[0]);\n" +" }\n" +" }\n" +msgstr "" +" flags = 0;\n" +" verbose = 0;\n" +" gid_map = NULL;\n" +" uid_map = NULL;\n" +" map_zero = 0;\n" +" while ((opt = getopt(argc, argv, \"+imnpuUM:G:zv\")) != -1) {\n" +" switch (opt) {\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]u\\[aq]: flags |= CLONE_NEWUTS; break;\n" +" case \\[aq]v\\[aq]: verbose = 1; break;\n" +" case \\[aq]z\\[aq]: map_zero = 1; break;\n" +" case \\[aq]M\\[aq]: uid_map = optarg; break;\n" +" case \\[aq]G\\[aq]: gid_map = optarg; break;\n" +" case \\[aq]U\\[aq]: flags |= CLONE_NEWUSER; break;\n" +" default: usage(argv[0]);\n" +" }\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* -M or -G without -U is nonsensical */\n" +msgstr " /* -M eller -G utan -U är meningslöst */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n" +" !(flags & CLONE_NEWUSER)) ||\n" +" (map_zero && (uid_map != NULL || gid_map != NULL)))\n" +" usage(argv[0]);\n" +msgstr "" +" if (((uid_map != NULL || gid_map != NULL || map_zero) &&\n" +" !(flags & CLONE_NEWUSER)) ||\n" +" (map_zero && (uid_map != NULL || gid_map != NULL)))\n" +" usage(argv[0]);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " args.argv = &argv[optind];\n" +msgstr " args.argv = &argv[optind];\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" /* We use a pipe to synchronize the parent and child, in order to\n" +" ensure that the parent sets the UID and GID maps before the child\n" +" calls execve(). This ensures that the child maintains its\n" +" capabilities during the execve() in the common case where we\n" +" want to map the child\\[aq]s effective user ID to 0 in the new user\n" +" namespace. Without this synchronization, the child would lose\n" +" its capabilities if it performed an execve() with nonzero\n" +" user IDs (see the capabilities(7) man page for details of the\n" +" transformation of a process\\[aq]s capabilities during execve()). */\n" +msgstr "" +" /* Vi använder ett rör för att synkronisera förälder och barn, för\n" +" att säkerställa att föräldern ställer in UID- och GID-avbildningarna\n" +" före barnet anropar execve(). Detta ser till att barnet behåller\n" +" sina förmågor under execve() i det vanliga fallet då vi vill avbilda\n" +" barnets effektiva användar-ID på 0 i den nya användarnamnrymden.\n" +" Utan denna synkronisering skulle barnet tappa sina förmågor om det\n" +" utförde en execve() med användar-ID:n skilda från noll (se\n" +" manualsidan capabilities(7) för detaljer om transformationen av en\n" +" process förmågor under execve()). */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (pipe(args.pipe_fd) == -1)\n" +" err(EXIT_FAILURE, \"pipe\");\n" +msgstr "" +" if (pipe(args.pipe_fd) == -1)\n" +" err(EXIT_FAILURE, \"pipe\");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Create the child in new namespace(s). */\n" +msgstr " /* Skapa barnet i nya namnrymder. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" child_pid = clone(childFunc, child_stack + STACK_SIZE,\n" +" flags | SIGCHLD, &args);\n" +" if (child_pid == -1)\n" +" err(EXIT_FAILURE, \"clone\");\n" +msgstr "" +" child_pid = clone(childFunc, child_stack + STACK_SIZE,\n" +" flags | SIGCHLD, &args);\n" +" if (child_pid == -1)\n" +" err(EXIT_FAILURE, \"clone\");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Parent falls through to here. */\n" +msgstr " /* Föräldern faller igenom hit. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (verbose)\n" +" printf(\"%s: PID of child created by clone() is %jd\\en\",\n" +" argv[0], (intmax_t) child_pid);\n" +msgstr "" +" if (verbose)\n" +" printf(\"%s: PID för barnet som skapades av clone() är %jd\\en\",\n" +" argv[0], (intmax_t) child_pid);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " /* Update the UID and GID maps in the child. */\n" +msgstr " /* Uppdatera UID- och GID-avbildningarna i barnet. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (uid_map != NULL || map_zero) {\n" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/uid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %jd 1\",\n" +" (intmax_t) getuid());\n" +" uid_map = map_buf;\n" +" }\n" +" update_map(uid_map, map_path);\n" +" }\n" +msgstr "" +" if (uid_map != NULL || map_zero) {\n" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/uid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %jd 1\",\n" +" (intmax_t) getuid());\n" +" uid_map = map_buf;\n" +" }\n" +" update_map(uid_map, map_path);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (gid_map != NULL || map_zero) {\n" +" proc_setgroups_write(child_pid, \"deny\");\n" +msgstr "" +" if (gid_map != NULL || map_zero) {\n" +" proc_setgroups_write(child_pid, \"deny\");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/gid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\",\n" +" (intmax_t) getgid());\n" +" gid_map = map_buf;\n" +" }\n" +" update_map(gid_map, map_path);\n" +" }\n" +msgstr "" +" snprintf(map_path, PATH_MAX, \"/proc/%jd/gid_map\",\n" +" (intmax_t) child_pid);\n" +" if (map_zero) {\n" +" snprintf(map_buf, MAP_BUF_SIZE, \"0 %ld 1\",\n" +" (intmax_t) getgid());\n" +" gid_map = map_buf;\n" +" }\n" +" update_map(gid_map, map_path);\n" +" }\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" /* Close the write end of the pipe, to signal to the child that we\n" +" have updated the UID and GID maps. */\n" +msgstr "" +" /* Stäng skrivänden av röret för att signalera till barnet att vi\n" +" har uppdaterat UID- och GID-avbildningarna. */\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid " close(args.pipe_fd[1]);\n" +msgstr " close(args.pipe_fd[1]);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (waitpid(child_pid, NULL, 0) == -1) /* Wait for child */\n" +" err(EXIT_FAILURE, \"waitpid\");\n" +msgstr "" +" if (waitpid(child_pid, NULL, 0) == -1) /* Vänta på barnet */\n" +" err(EXIT_FAILURE, \"waitpid\");\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" if (verbose)\n" +" printf(\"%s: terminating\\en\", argv[0]);\n" +msgstr "" +" if (verbose)\n" +" printf(\"%s: avslutar\\en\", argv[0]);\n" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, no-wrap +msgid "" +" exit(EXIT_SUCCESS);\n" +"}\n" +msgstr "" +" exit(EXIT_SUCCESS);\n" +"}\n" + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "2023-05-03" +msgstr "3 maj 2023" + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "Linux man-pages 6.05.01" +msgstr "Linux man-pages 6.05.01" + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "2023-04-01" +msgstr "1 april 2023" + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "Linux man-pages 6.04" +msgstr "Linux man-pages 6.04" |