CHMOD(2)

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
Uwaga! To tłumaczenie może być nieaktualne!

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)

INFORMACJE O TŁUMACZENIU
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

    man --locale=C 2 chmod

Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.