Provided by:
manpages-pl-dev_20060617-1_all 
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)