CHMOD(2) Wywołania systemowe CHMOD(2)
NAZWA
chmod, fchmod - zmień prawa 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
Prawa dostępu pliku określonego przez path lub wskazy
wanego przez filedes zostają zmienione.
Prawa są podawane przez or'owanie następujących:
S_ISUID 04000 ustaw user ID przy uruchomieniu
S_ISGID 02000 ustaw group ID przy uruchomieniu
S_ISVTX 01000 sticky bit
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.
Efektywne UID lub GID muszą być odpowiednie dla ustawiania
bitów wywołania.
January 12, 1997 1
CHMOD(2) Wywołania systemowe CHMOD(2)
Zależnie od systemu plików, bity SUID i SGID mogą zostać
wyłączone podczas zapisywania pliku. Na niektórych sys
temach plików, tylko superuser może ustawić "sticky bit",
który może mieć specjalne znaczenie (np. dla katalogów,
gdzie plik może być skasowany tylko przez właściciela lub
superusera).
Na systemach plików NFS, ograniczanie praw natychmiast
wpłynie na już otwarte pliki, ponieważ kontrola dostępu
dokonywana jest na serwerze, a otwarte pliki obsługiwane
sa przez klienta. Ograniczenie praw może zostać spowol
nione da innych klientów, jeśli mają włączone buforowanie
atrybutów.
WARTOŚĆ ZWRACANA
Po pomyślnym zakończeniu, zwracane jest zero. W wyadku
błedu, -1 i ustawiane jest errno .
BŁĘDY
Zależnie od systemu plików, mogą być zwracane inne błędy.
Najogólniejsze błedy dla chmod to:
EPERM Efektywny UID nie odpoiwada właścicielowi pliku i
nie jest zerem.
EROFS Podany plik znajduje się na systemie plików przez
naczonym tylko do odczytu.
EFAULT path wskazuje poza przestrzeń adresową.
ENAMETOOLONG
path jest zbyt długie.
ENOENT Plik nie istnieje.
ENOMEM Brak pamięci kernela.
ENOTDIR Komponent ścieżki nie jest katalogiem.
EACCES Odmówiono praw do przeszukiwania na składniku
ścieżki.
ELOOP path zawiera zapętloną referencję (np. poprzez
link symboliczny)
Ogólne błedy dla fchmod to:
EBADF Deskryptor jest nieprawidłowy.
ENOENT Zobacz wyżej.
EIO Niskopoziomowy błąd IO podczas modyfikowania
inode.
January 12, 1997 2
CHMOD(2) Wywołania systemowe CHMOD(2)
ZGODNE Z
Funkcja chmod jest zgodna z SVr4, SVID, POSIX, X/OPEN,
4.4BSD. SVr4 dokumentuje błedy EINTR, ENOLINK i EMULTI
HOP, lecz brak tam ENOMEM. POSIX.1 nie dokumentuje ENOMEM
czy ELOOP.
Funkcja fchmod jest zgodna z 4.4BSD and SVr4. SVr4 doku
mentuje dodatkowo błędy EIO, EINTR, i ENOLINK.
POSIX i X/OPEN nie dokumentują elementu "sticky bit".
EPERM Zobacz wyżej.
EROFS Zobacz wyżej.
ZGODNE Z
chmod jest zgodne z POSIX, lecz S_ISVTX (sticky bit) nie
jest, nie są też makra S_IREAD, S_IWRITE i S_IEXEC. POSIX
podaje, że niektóre implementacje mogą ignorować S_ISUID i
S_ISGID. Co więcej, zgodnie z POSIX-em, nie powinno się
próbować ustawiać żadnych bitów nie wymienionych powyżej.
ZOBACZ TAKŻE
open(2), chown(2), stat(2)
January 12, 1997 3
Wyszukiwarka
Podobne podstrony:
chmodChmod prawa i atrybuty linuxchmod 1chmodfunction chmodfunction chmodchmodUnix Station chmod File Permissionsscr chmodscr chmod enfunction ftp chmodwięcej podobnych podstron