chmod(2) System Calls Manual chmod(2) NAVN chmod, fchmod, fchmodat - aendre rettigheder for en fil BIBLIOTEK C-standardbibliotek (libc, -lc) SYNOPSIS #include int chmod(const char *sti, mode_t tilstand); int fchmod(int fd, mode_t tilstand); #include /* Definition af AT_*-konstanter */ #include 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 For glibc 2.10: _ATFILE_SOURCE BESKRIVELSE Systemkaldende chmod() og fchmod() aendrer en fils tilstandsdele. (Filtilstanden bestar af filrettighedsdele samt set-user-ID, set-group-ID og klaebende dele). Disse systemkald er kun forskellige ved hvordan filen er angivet: o chmod() aendrer tilstanden for den angivne fil hvis stinavn er angivet i sti, hvor referencen fjernes, hvis det er en symbolsk henvisning. o fchmod() aendrer tilstanden for filen refereret til af den abne fildeskriptor fd. Den nye filtilstand er angivet i tilstand, der er en bit-maske oprettet af ORing sammen med nul eller flere af de folgende: S_ISUID (04000) set-user-ID (angiv proceseffektiv bruger-id pa execve(2)) S_ISGID (02000) set-group-ID (angive proceseffektiv gruppe-id pa execve(2); obligatorisk lasning, 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 (klaebende del) (begraenset sletningsflag, som beskrevet i unlink(2)) S_IRUSR (00400) laest af ejer S_IWUSR (00200) skrevet af ejer S_IXUSR (00100) kor/sog efter efter (>>sog<< gaelder for mapper, og betyder at elementer i mappen kan tilgas) S_IRGRP (00040) laest af gruppe S_IWGRP (00020) skrevet af gruppe S_IXGRP (00010) kor/sog efter gruppe S_IROTH (00004) laest af andre S_IWOTH (00002) skrevet af andre S_IXOTH (00001) kor/sog af andre Den effektive UID for den kaldende proces skal matche ejeren af filen, eller processen skal vaere 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 supplementaere gruppe-id'er, sa vil delen S_ISGID blive slukket, men der bliver ikke sendt en fejl retur. Som en sikkerhedsforanstaltning, afhaengig af filsystemet, kan afviklingsdelene set-user-ID og set-group-ID slukkes hvis en fil skrives. (Pa Linux opstar dette hvis skriveprocessen ikke har funktionaliteten CAP_FSETID). Pa nogle filsystemer kan kun superbrugeren angive sticky bit (klaebende del), der kan have en speciel betydning. For sticky bit og for delene set-user-ID og set-group-ID pa mapper, se inode(7). Pa NFS-filsystemer, vil begraensning af rettighederne straks pavirke allerede abne filer, da adgangskontrollen udfores pa serveren, mens abne filer vedligeholdes af klienten. Udvidelse af rettighederne kan blive forsinket for andre klienter hvis attribut-mellemlagring er aktiveret pa dem. fchmodat() Systemkaldet fchmodat() fungerer pa praecis den samme made som chmod(), undtagen for forskellene beskrevet her. Hvis sti er relativ, sa fortolkes den relativt til mappen refereret til af fildeskriptoren dirfd (frem for relativt til den nuvaerende arbejdsmappe for den kaldende proces, som gores af chmod() for et relativt stinavn). Hvis sti er relativ og dirfd er den specielle vaerdi AT_FDCWD, sa fortolkes sti relativt til den nuvaerende arbejdsmappe for den kaldende proces (som chmod()). Hvis sti er foraeldet, sa ignoreres dirfd. flag kan enten vaere 0, eller inkludere de folgende flag: AT_EMPTY_PATH (siden Linux 6.6) Hvis sti er en tom streng, arbejd pa filen refereret til af dirfd (der kan vaere indhentet via open(2) O_PATH-flaget). I dette tilfaelde kan dirfd referere til enhver filtype, ikke kun en mappe. Hvis dirfd er AT_FDCWD fungerer kaldet pa den nuvaerende 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, sa fjern den ikke: i stedet arbejdes pa selve henvisningen. Se openat(2) for en forklaring pa behovet for fchmodat(). RETURVAERDI Ved succes returneres nul. Ved fejl returneres -1 og errno angives for at indikere fejlen. FEJL Afhaengig af filsystemet kan fejl, udover dem vist nedenfor, returneres. De mere generelle fejl for chmod() er vist nedenfor: EACCES Sogerettighed er naegtet pa en komponent for stipraefikset. (Se ogsa 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 tilgaengelige 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 Utilstraekkelig kernehukommelse var tilgaengelig. ENOTDIR En komponent i stipraefikset 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 understottet. EPERM Den effektive UID matcher ikke filejeren, og processen er ikke privilegeret (Linux: har ikke funktionaliteten CAP_FOWNER). EPERM Filen er markeret uforanderlig eller tilfoj-kun. (se FS_IOC_SETFLAGS(2const).) EROFS Den navngivne fil befinder sig pa et skrivebeskyttet filsystem. VERSIONER C-bibliotek/kerne-forskelle Omslagsfunktione for GNU C-biblioteket fchmodat() implementerer den POSIX-angivne graenseflade beskrevet pa denne side. Denne graenseflade er forskellig fra det underliggende Linux-systemkald, der ikke har et flag-argument. Glibc-noter Pa aeldre kerner hvor fchmodat() er utilgaengelig, falder glibc-omslagsfunktionskaldene tilbage til at bruge chmod(). Nar sti er et relativt stinavn konstruerer glibc et stinavn baseret pa 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 OGSA chmod(1), chown(2), execve(2), open(2), stat(2), inode(7), path_resolution(7), symlink(7) OVERSAETTELSE Oversaettere af denne manual til dansk Joe Hansen Denne oversaettelse er gratis dokumentation; laes GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. Hvis du stoder pa fejl i oversaettelsen af denne vejledning, skal du sende en besked til . Linux man-pages 6.17 8. februar 2026 chmod(2)