CHMOD(2) | Podręcznik programisty Linuksa | CHMOD(2) |
chmod, fchmod - zmiana praw do pliku
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *path, mode_t
mode);
int fchmod(int fildes, mode_t mode);
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:
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.
Po pomyślnym zakończeniu, zwracane jest zero. W wypadku błędu zwracane jest -1 i odpowiednio ustawiane errno.
Dla niektórych systemów plików mogą być zwracane inne błędy niż opisane poniżej. Najogólniejsze błędy chmod to:
Ogólne błędy dla fchmod to:
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".
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:
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.
1997-12-10 | Linux 2.0.32 |