chown(2): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= 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 == <pre> #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 fch...')
(Ingen skillnad)

Versionen från 23 november 2024 kl. 08.06

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.