chown(2)
chown(2) - Ändrar ägarskap för en fil
Namn
chown, fchown, lchown, fchownat - Ändrar ägarskap för en fil
Bibliotek
Standard-C-biblioteket (libc, -lc)
Synopsis
#include <unistd.h> int chown(const char *pathname, uid_t owner, gid_t group); int fchown(int fd, uid_t owner, gid_t group); int lchown(const char *pathname, uid_t owner, gid_t group); #include <fcntl.h> /* Definition av AT_*-konstanter */ #include <unistd.h> int fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags);
Beskrivning
Dessa systemanrop används för att ändra ägare och grupp för en fil. Funktionerna skiljer sig åt i hur filen specificeras:
- chown()
Ändrar ägarskap för filen specificerad av pathname. Symboliska länkar följs.
- fchown()
Ändrar ägarskap för filen associerad med filbeskrivaren fd.
- lchown()
Liknar chown() men följer inte symboliska länkar.
- fchownat()
Liknar chown(), men stödjer relativa sökvägar baserade på katalogbeskrivaren dirfd.
Endast privilegierade processer (Linux: processer med CAP_CHOWN-kapabiliteten) kan ändra ägarskap för en fil. En vanlig användare kan ändra gruppen till en grupp som användaren tillhör.
Om ägaren eller gruppen anges som -1 ändras inte det ID:t.
Vid förändring av ägare eller grupp på en körbar fil rensas alla kapabilitetssätt för filen.
Flaggor för fchownat()
- AT_EMPTY_PATH
Operera på filen refererad av dirfd, även om pathname är tom. Kräver Linux-specifik definition med _GNU_SOURCE.
- AT_SYMLINK_NOFOLLOW
Operera på den symboliska länken i stället för den fil den pekar på.
Returneringsvärde
Vid framgång returneras 0. Vid fel returneras -1, och errno sätts för att indikera typen av fel.
Fel
- EACCES - Behörighet nekas för en komponent i sökvägen.
- EPERM - Processen har inte rättigheter att ändra ägarskap.
- EROFS - Filen ligger på ett skrivskyddat filsystem.
- ENOENT - Filen eller katalogen finns inte.
- ELOOP - För många symboliska länkar i sökvägen.
- EINVAL - Ogiltig flagga angavs till fchownat().
- EBADF - Filbeskrivaren är ogiltig.
- ENOTSUP - Flaggan AT_SYMLINK_NOFOLLOW stöds inte.
Exempel
Ändra ägare för en fil baserat på användarnamn eller UID:
#include <pwd.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { uid_t uid; struct passwd *pwd; if (argc != 3) { fprintf(stderr, "Användning: %s <ägare> <fil>\n", argv[0]); exit(EXIT_FAILURE); } pwd = getpwnam(argv[1]); if (pwd == NULL) { uid = strtol(argv[1], NULL, 10); } else { uid = pwd->pw_uid; } if (chown(argv[2], uid, -1) == -1) { perror("chown"); exit(EXIT_FAILURE); } printf("Ägarskap ändrat för filen %s.\n", argv[2]); return 0; }
Standarder
Funktionerna följer POSIX.1-2008.
Se också
Sidslut
Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man2/chown.2.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till PC Service som har sponsrat Linux.se med webbhotell.