chmod(2)

NAVN
chmod, fchmod, fchmodat - ændre rettigheder for en fil

BIBLIOTEK
C-standardbibliotek (libc, -lc)

SYNOPSIS
#include <sys/stat.h>

int chmod(const char *sti, mode_t tilstand);
int fchmod(int fd, mode_t tilstand);

#include <fcntl.h>           /* Definition af AT_*-konstanter */
#include <sys/stat.h>

int fchmodat(int dirfd, const char *sti, mode_t tilstand, int flag);

    Feature Test Macro Requirements for glibc (se feature_test_macros(7)):

fchmod():
    Siden glibc 2.24:
        _POSIX_C_SOURCE >= 199309L
    glibc 2.19 til glibc 2.23
        _POSIX_C_SOURCE
    glibc 2.16 til glibc 2.19:
        _BSD_SOURCE || _POSIX_C_SOURCE
    glibc 2.12 til glibc 2.16:
        _BSD_SOURCE || _XOPEN_SOURCE >= 500
            || _POSIX_C_SOURCE >= 200809L
    glibc 2.11 og tidligere:
        _BSD_SOURCE || _XOPEN_SOURCE >= 500

fchmodat():
    Siden glibc 2.10:
        _POSIX_C_SOURCE >= 200809L
    Før glibc 2.10:
        _ATFILE_SOURCE

BESKRIVELSE
Systemkaldende chmod() og fchmod() ændrer en fils tilstandsdele. (Filtilstanden består af filrettighedsdele samt set-user-ID, set-group-ID og klæbende dele). Disse systemkald er kun forskellige ved hvordan filen er angivet:

•   chmod() ændrer tilstanden for den angivne fil hvis stinavn er angivet i sti, hvor referencen fjernes, hvis det er en symbolsk henvisning.

•   fchmod() ændrer tilstanden for filen refereret til af den åbne fildeskriptor fd.

Den nye filtilstand er angivet i tilstand, der er en bit-maske oprettet af ORing sammen med nul eller flere af de følgende:

S_ISUID (04000)
    set-user-ID (angiv proceseffektiv bruger-id på execve(2))

S_ISGID (02000)
    set-group-ID (angive proceseffektiv gruppe-id på execve(2); obligatorisk låsning, som beskrevet i fcntl(2); tag en nye fils gruppe fra overmappen, som beskrevet i chown(2) og mkdir(2))

S_ISVTX (01000)
    sticky bit (klæbende del) (begrænset sletningsflag, som beskrevet i unlink(2))

S_IRUSR (00400)
    læst af ejer

S_IWUSR (00200)
    skrevet af ejer

S_IXUSR (00100)
    kør/søg efter efter (»søg« gælder for mapper, og betyder at elementer i mappen kan tilgås)

S_IRGRP (00040)
    læst af gruppe

S_IWGRP (00020)
    skrevet af gruppe

S_IXGRP (00010)
    kør/søg efter gruppe

S_IROTH (00004)
    læst af andre

S_IWOTH (00002)
    skrevet af andre

S_IXOTH (00001)
    kør/søg af andre

Den effektive UID for den kaldende proces skal matche ejeren af filen, eller processen skal være privilegeret (Linux: skal have funktionaliteten CAP_FOWNER).

Hvis den kaldende proces ikke er privilegeret (Linux: har ikke funktionaliteten CAP_FSETID) og filgruppen ikke matcher det effektive gruppe-id for processen eller en af dennes supplementære gruppe-id'er, så vil delen S_ISGID blive slukket, men der bliver ikke sendt en fejl retur.

Som en sikkerhedsforanstaltning, afhængig af filsystemet, kan afviklingsdelene set-user-ID og set-group-ID slukkes hvis en fil skrives. (På Linux opstår dette hvis skriveprocessen ikke har funktionaliteten CAP_FSETID). På nogle filsystemer kan kun superbrugeren angive sticky bit (klæbende del), der kan have en speciel betydning. For sticky bit og for delene set-user-ID og set-group-ID på mapper, se inode(7).

På NFS-filsystemer, vil begrænsning af rettighederne straks påvirke allerede åbne filer, da adgangskontrollen udføres på serveren, mens åbne filer vedligeholdes af klienten. Udvidelse af rettighederne kan blive forsinket for andre klienter hvis attribut-mellemlagring er aktiveret på dem.

  fchmodat()
Systemkaldet fchmodat() fungerer på præcis den samme måde som chmod(), undtagen for forskellene beskrevet her.

Hvis sti er relativ, så fortolkes den relativt til mappen refereret til af fildeskriptoren dirfd (frem for relativt til den nuværende arbejdsmappe for den kaldende proces, som gøres af chmod() for et relativt stinavn).

Hvis sti er relativ og dirfd er den specielle værdi AT_FDCWD, så fortolkes sti relativt til den nuværende arbejdsmappe for den kaldende proces (som chmod()).

Hvis sti er forældet, så ignoreres dirfd.

flag kan enten være 0, eller inkludere de følgende flag:

AT_EMPTY_PATH (siden Linux 6.6)
    Hvis sti er en tom streng, arbejd på filen refereret til af dirfd (der kan være indhentet via open(2) O_PATH-flaget). I dette tilfælde kan dirfd referere til enhver filtype, ikke kun en mappe. Hvis dirfd er AT_FDCWD fungerer kaldet på den nuværende arbejdsmappe. Dette er flag er specifikt for Linux; definer _GNU_SOURCE for at hente dets definition.

AT_SYMLINK_NOFOLLOW
    Hvis sti er en symbolsk henvisning, så fjern den ikke: i stedet arbejdes på selve henvisningen.

Se openat(2) for en forklaring på behovet for fchmodat().

RETURVÆRDI
Ved succes returneres nul. Ved fejl returneres -1 og errno angives for at indikere fejlen.

FEJL
Afhængig af filsystemet kan fejl, udover dem vist nedenfor, returneres.

De mere generelle fejl for chmod() er vist nedenfor:

EACCES
    Søgerettighed er nægtet på en komponent for stipræfikset. (Se også path_resolution(7).)

EBADF
    (fchmod()) Fildeskriptoren fd er ikke gyldig.

EBADF
    (fchmodat()) sti er relativ men dirfd er hverken AT_FDCWD eller en gyldig fildeskriptor.

EFAULT
    sti peger uden for dit tilgængelige adresserum.

EINVAL
    (fchmodat()) Ugyldigt flag angivet i flag.

EIO Der opstod en I/O-fejl.

ELOOP
    Der var for mange symbolske henvisninger i forhold til sti.

ENAMETOOLONG
    sti er for lang.

ENOENT
    Filen findes ikke.

ENOMEM
    Utilstrækkelig kernehukommelse var tilgængelig.

ENOTDIR
    En komponent i stipræfikset er ikke en mappe.

ENOTDIR
    (fchmodat()) sti er relativ og dirfd er en fildeskriptor, der refererer til en fil, der ikke er en mappe.

ENOTSUP
    (fchmodat()) flag specificerede AT_SYMLINK_NOFOLLOW, hvilket ikke er understøttet.

EPERM
    Den effektive UID matcher ikke filejeren, og processen er ikke privilegeret (Linux: har ikke funktionaliteten CAP_FOWNER).

EPERM
    Filen er markeret uforanderlig eller tilføj-kun. (se FS_IOC_SETFLAGS(2const).)

EROFS
    Den navngivne fil befinder sig på et skrivebeskyttet filsystem.

VERSIONER

  C-bibliotek/kerne-forskelle
Omslagsfunktione for GNU C-biblioteket fchmodat() implementerer den POSIX-angivne grænseflade beskrevet på denne side. Denne grænseflade er forskellig fra det underliggende Linux-systemkald, der ikke har et flag-argument.

  Glibc-noter
På ældre kerner hvor fchmodat() er utilgængelig, falder glibc-omslagsfunktionskaldene tilbage til at bruge chmod(). Når sti er et relativt stinavn konstruerer glibc et stinavn baseret på den symbolske henvisning i /proc/self/fd der svarer til dirfd-argumentet.

STANDARDER
POSIX.1-2024.

HISTORIK

chmod()
    SVr4, POSIX.1-1988, 4.4BSD.

fchmod()
    SVr4, 4.4BSD, SUSv1, POSIX.1-1996.

fchmodat()
    POSIX.1-2008. Linux 2.6.16, glibc 2.4.

AT_SYMLINK_NOFOLLOW
    POSIX.1-2008, glibc 2.32, Linux 6.5.

SE OGSÅ
chmod(1), chown(2), execve(2), open(2), stat(2), inode(7), path_resolution(7), symlink(7)

OVERSÆTTELSE
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.