Umask

Från Wiki.linux.se
Version från den 18 augusti 2024 kl. 17.21 av Admin (diskussion | bidrag) (Skapade sidan med '== umask(2) == === NAME === umask - sätter mask för skapande av filrättigheter === LIBRARY === Standard C-biblioteket (libc, -lc) === SYNOPSIS === <source lang="c"> #include <sys/stat.h> mode_t umask(mode_t mask); </source> === DESCRIPTION === '''umask()''' sätter det anropande processens mask för skapande av filrättigheter (umask) till '''mask & 0777''' (dvs. endast filrättighetsbitarna av mask används), och returnerar det tidigare värdet på masken. Umas...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

umask(2)

NAME

umask - sätter mask för skapande av filrättigheter

LIBRARY

Standard C-biblioteket (libc, -lc)

SYNOPSIS

<source lang="c">

  1. include <sys/stat.h>

mode_t umask(mode_t mask); </source>

DESCRIPTION

umask() sätter det anropande processens mask för skapande av filrättigheter (umask) till mask & 0777 (dvs. endast filrättighetsbitarna av mask används), och returnerar det tidigare värdet på masken.

Umask används av open(2), mkdir(2) och andra systemanrop som skapar filer för att modifiera rättigheterna på nyskapade filer eller kataloger. Specifikt, rättigheterna i umasken stängs av från mode-argumentet till open(2) och mkdir(2).

Alternativt, om överordnad katalog har en standard-ACL (se acl(5)), ignoreras umasken, standard-ACL ärver, rättighetsbitarna sätts baserat på den ärvda ACL, och rättighetsbitar som saknas i mode-argumentet stängs av. Till exempel är följande standard-ACL ekvivalent med en umask av 022: ::rwx,g::r-x,o::r-x

Kombinera effekten av denna standard-ACL med ett mode-argument av 0666 (rw-rw-rw-), de resulterande filrättigheterna skulle vara 0644 (rw-r--r--).

Konstanterna som bör användas för att specificera mask beskrivs i inode(7).

Det typiska standardvärdet för processens umask är S_IWGRP | S_IWOTH (oktal 022). I det vanliga fallet där mode-argumentet till open(2) specificeras som: <S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH> (oktal 0666) vid skapande av en ny fil, kommer rättigheterna på den resulterande filen att vara: <S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH> (eftersom 0666 & ~022 = 0644; dvs. rw-r--r--).

RETURN VALUE

Detta systemanrop lyckas alltid och det tidigare värdet på masken returneras.

STANDARDS

POSIX.1-2008.

HISTORY

POSIX.1-2001, SVr4, 4.3BSD.

NOTES

En barnprocess skapad via fork(2) ärver sina föräldrars umask. Umasken ändras inte av execve(2).

Det är omöjligt att använda umask() för att hämta en process umask utan att samtidigt ändra den. Ett andra anrop till umask() skulle då behövas för att återställa umasken. Icke-atomariteten av dessa två steg ger potential för race conditions i flertrådade program.

Sedan Linux 4.7 kan umasken för varje process ses via Umask-fältet i /proc/pid/status. Att inspektera detta fält i /proc/self/status tillåter en process att hämta sin umask utan att samtidigt ändra den.

Umaskinställningen påverkar också rättigheterna som tilldelas till POSIX IPC-objekt (mq_open(3), sem_open(3), shm_open(3)), FIFOs (mkfifo(3)) och UNIX-domänsocklar (unix(7)) skapade av processen. Umasken påverkar inte rättigheterna som tilldelas till System V IPC-objekt skapade av processen (användande av msgget(2), semget(2), shmget(2)).

SEE ALSO

chmod(2), mkdir(2), open(2), stat(2), acl(5)

COLOPHON

Denna sida är en del av man-sidorna (Linuxkärnan och C-bibliotekets användargränssnittsdokumentation) projektet. Information om projektet finns på ⟨https://www.kernel.org/doc/man-pages/⟩. Om du har en felrapport för denna manual sida, se ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. Denna sida hämtades från tarbollen man-pages-6.9.1.tar.gz hämtad från ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages⟩ den 2024-06-26. Om du upptäcker några renderingsproblem i denna HTML version av sidan, eller du tror att det finns en bättre eller mer uppdaterad källa för sidan, eller du har korrigeringar eller förbättringar till informationen i detta KOLLEGIALT (som inte är del av den ursprungliga manualsidan), skicka ett mail till man-pages@man7.org.