Provided by: manpages-pl-dev_20051117-1_all bug

NAZWA

       chown, fchown, lchown - zmiana właściciela pliku

SKŁADNIA

       #include <sys/types.h>
       #include <unistd.h>

       int chown(const char *path, uid_t owner, gid_t group);
       int fchown(int fd, uid_t owner, gid_t group);
       int lchown(const char *path, uid_t owner, gid_t group);

OPIS

       Zmieniony  zostaje  właściciel  pliku  określonego przez path lub przez
       deskryptor fd.  Tylko superużytkownik może zmieniać właściciela  pliku.
       Właściciel  pliku  może  zmieniać  tylko  grupę pliku na dowolną grupę,
       której  jest  członkiem.   Superużytkownik  może  zmieniać  grupę   bez
       ograniczeń.

       Jeśli  owner  lub  group  jest podane jako -1, to ten identyfikator nie
       jest wtedy zmieniany.

       Jeżeli właściciel lub grupa pliku  uruchamialnego  są  zmieniane  przez
       użytkownika   nie  posiadającego  praw  superużytkownika,  to  atrybuty
       S_ISUID  i  S_ISGID  pliku  zostaną  wyzerowane.  Standard  POSIX   nie
       precyzuje,  czy  atrybuty  te  powinny  być  również zerowane, kiedy to
       użytkownik root  wywołuje  funkcję  chown;  zachowanie  Linuksa  w  tym
       wypadku  zależy  od wersji jądra.  W przypadku pliku, który nie ma praw
       uruchamiawania dla grupy (z wyzerowanym  bitem  S_IXGRP),  bit  S_ISGID
       oznacza obowiązkowe blokowanie i nie jest zerowany przez chown.

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu zwracane jest zero. W wypadku błędu zwracane
       jest -1 i odpowiednio ustawiane errno.

BŁĘDY

       Dla niektórych systemów plików mogą być zwracane inne błędy niż opisane
       poniżej. Najogólniejsze błędy chown to:

       EPERM  Efektywny UID nie odpowiada właścicielowi pliku i nie jest zerem
              albo owner lub group zostały podane nieprawidłowo.

       EROFS  Podany plik znajduje się na systemie plików przeznaczonym  tylko
              do odczytu.

       EFAULT path wskazuje poza dostępną dla użytkownika przestrzeń adresową.

       ENAMETOOLONG
              path jest zbyt długie.

       ENOENT Plik nie istnieje.

       ENOMEM Brak pamięci jądra.

       ENOTDIR
              Składnik ścieżki nie jest katalogiem.

       EACCES Brak praw do przeszukiwania dla składnika ścieżki.

       ELOOP  Podczas  rozwiązywania  path  napotkano  zbyt   wiele   dowiązań
              symbolicznych.

       Ogólne błędy dla fchown to:

       EBADF  Deskryptor pliku jest nieprawidłowy.

       ENOENT Zobacz wyżej.

       EPERM  Zobacz wyżej.

       EROFS  Zobacz wyżej.

       EIO    Niskopoziomowy błąd we/wy podczas modyfikacji i-węzła.

UWAGI

       W wersjach jądra Linuksa poniżej 2.1.81 (i różnych od 2.1.46) chown nie
       podąża za dowiązaniami symbolicznymi.  Od wersji 2.1.81  Linuksa  chown
       podąża za dowiązaniami symbolicznymi, została także dodana nowa funkcja
       systemowa lchown, która nie podąża za dowiązaniami  symbolicznymi.   Od
       wersji  2.1.86 Linuksa, ta nowa funkcja (mająca taką samą semantykę jak
       stare chown) ma taki sam numer funkcji, a chown otrzymała nowy numer.

       Prototyp dla  fchown  jest  dostępny  jedynie,  gdy  zdefiniowane  jest
       _BSD_SOURCE    (bezpośrednio,   albo   pośrednio   -   nie   definiując
       _POSIX_SOURCE czy kompilując z włączoną flagą -ansi).

ZGODNE Z

       Funkcja chown jest zgodna z SVr4, SVID, POSIX,  X/OPEN.  Wersja  4.4BSD
       może  być  używana  tylko  przez  superużytkownika  (to znaczy normalni
       użytkownicy nie mogą  "podarować"  nikomu  plików).   SVr4  dokumentuje
       błędy  EINVAL, EINTR, ENOLINK i EMULTIHOP, lecz nie dokumentuje ENOMEM.
       POSIX.1 nie dokumentuje błędów ENOMEM i ELOOP.

       Funkcja fchown jest  zgodna  z  4.4BSD  oraz  SVr4.   SVr4  dokumentuje
       dodatkowe błędy EINVAL, EIO, EINTR i ENOLINK.

OGRANICZENIA

       Semantyka  chown() jest pogwałcona na systemach plików NFS, z włączonym
       mapowaniem UID. Dodatkowo, semantyka  wszystkich  wywołań  systemowych,
       które  uzyskują dostęp do zawartości plików jest dla NFS pogwałcona, bo
       chown() może spowodować natychmiastowe  unieważnienie  dostępu  do  już
       otwartych  plików.   Buforowanie  po  stronie  klienta  może spowodować
       opóźnienie możliwości uzyskania dostępu  do  pliku  przez  użytkowników
       innych   stacji  klienckich  w  stosunku  do  chwili  dokonania  zmiany
       właściciela umożliwiającej ten dostęp.

ZOBACZ TAKŻE

       chmod(2), flock(2)