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)
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/.