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

NAZWA

       chmod, fchmod - zmiana praw do pliku

SKŁADNIA

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

       int chmod(const char *path, mode_t mode);
       int fchmod(int fildes, mode_t mode);

OPIS

       Zmienione  zostają  prawa  dostępu  do pliku określonego przez path lub
       wskazywanego przez filedes.

       Prawa są podawane jako or następujących wartości:

              S_ISUID   04000 ustawia ID użytkowinka przy uruchomieniu

              S_ISGID   02000 ustawia ID grupy przy uruchomieniu

              S_ISVTX   01000 bit "sticky"

              S_IRUSR (S_IREAD)
                        00400 odczyt przez właściciela

              S_IWUSR (S_IWRITE)
                        00200 zapis przez właściciela

              S_IXUSR (S_IEXEC)
                        00100 uruchomianie/przeszukiwanie przez właściciela

              S_IRGRP   00040 odczyt przez grupę

              S_IWGRP   00020 zapis przez grupę

              S_IXGRP   00010 uruchomianie/przeszukiwanie przez grupę

              S_IROTH   00004 odczyt przez pozostałych

              S_IWOTH   00002 zapis przez pozostałych

              S_IXOTH   00001 uruchomianie/przeszukiwanie przez pozostałych

       Efektywny UID procesu musi  być  zerem,  lub  odpowiadać  właścicielowi
       pliku.

       Jeśli efektywny UID procesu jest różny od zera, a grupa pliku różni się
       od efektywnego ID grupy procesu i  nie  jest  też  żadną  z  kego  grup
       dodatkowych,  to  bit S_ISGID zostanie wyzerowany, ale nie spowoduje to
       wystąpienia błędu.

       Zależnie od systemu plików, bity SUID  i  SGID  mogą  zostać  wyłączone
       podczas  zapisywania  pliku.  Na  niektórych  systemach  plików,  tylko
       superużytkownik może ustawić bit "sticky", który  może  mieć  specjalne
       znaczenie.  Znaczenie bitów "sticky", SUID i SGID dla katalogów opisano
       w stat(2).

       Na systemach plików NFS, ograniczanie praw będzie miało  natychmiastowy
       wpływ na aktualnie otwarte pliki, gdyż kontrola dostępu dokonywana jest
       na serwerze, a otwarte pliki obsługiwane sa przez klienta. Rozszerzenie
       uprawnień  może zostać udostępnione z opóźnieniem innym klientom, jeśli
       mają włączone buforowanie atrybutów.

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 chmod to:

       EPERM  Efektywny UID nie  odpoiwada  właścicielowi  pliku  i  nie  jest
              zerem.

       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.

       EIO    Wystąpił błąd wejścia-wyjścia.

       Ogólne błędy dla fchmod to:

       EBADF  Deskryptor pliku fildes jest nieprawidłowy.

       EROFS  Zobacz wyżej.

       EPERM  Zobacz wyżej.

       EIO    Zobacz wyżej.

ZGODNE Z

       Funkcja chmod jest zgodna z SVr4, SVID, POSIX,  X/OPEN,  4.4BSD.   SVr4
       dokumentuje  błędy  EINTR,  ENOLINK  i  EMULTIHOP, lecz nie dokumentuje
       ENOMEM. POSIX.1 nie dokumentuje błędów EFAULT, ENOMEM, ELOOP i EIO, ani
       makr S_IREAD, S_IWRITE i S_IEXEC.

       Funkcja fchmod jest zgodna z 4.4BSD i SVr4.  SVr4 dokumentuje dodatkowe
       błędy EINTR i ENOLINK.  POSIX wymaga funkcji fchmod,  gdy  zdefiniowane
       jest      co     najmniej     jedno     z     _POSIX_MAPPED_FILES     i
       _POSIX_SHARED_MEMORY_OBJECTS oraz dokumentuje dodatkowe błędy ENOSYS  i
       EINVAL, ale nie dokumentuje EIO.

       POSIX i X/OPEN nie dokumentują bitu "sticky".

       ZOBACZ TAKŻE
              open(2), chown(2), execve(2), stat(2)