access

Autres langues

Langue: pl

Autres versions - même langue

Version: 2002-04-23 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

NAZWA

access - sprawdzenie praw u¿ytkownika do pliku

SK£ADNIA


#include <unistd.h>



int access(const char *pathname, int mode);

OPIS

access sprawdza, czy proces mo¿e odczytywaæ, zapisywaæ i sprawdzaæ istnienie pliku (lub innego obiektu systemu plików) o nazwie pathname. Je¶li pathname jest dowi±zaniem symbolicznym, sprawdzane s± prawa do pliku wskazywanego przez to dowi±zanie.

mode jest mask± sk³adaj±c± siê z jednego lub wiêcej znaczników spo¶ród R_OK, W_OK, X_OK i F_OK.

R_OK, W_OK i X_OK sprawdzaj±, czy plik istnieje i ma odpowiednio prawa do odczytu, zapisu i uruchamiania. F_OK sprawdza tylko, czy plik istnieje.

Testy zale¿± od praw do katalogów, wystêpuj±cych na ¶cie¿ce do pliku, podanej w parametrze pathname, a tak¿e od praw do katalogów i plików wskazywanych przez wystêpuj±ce po drodze dowi±zania symboliczne.

Sprawdzenie jest dokonywane z prawdziwymi uid i gid procesu, a nie efektywnymi, jak to siê zwykle robi przy wykonywaniu rzeczywistych operacji. Pozwala to programom z ustawionym bitem set-UID na ³atwe okre¶lenie autoryzacji u¿ytkownika wywo³uj±cego.

Sprawdzane s± jedynie bity dostêpu, nie zawarto¶æ pliku czy jego typ. Dlatego, je¶li katalog okazuje siê "zapisywalny", znaczy to prawdopodobnie, ¿e mo¿na w nim tworzyæ pliki, a nie, ¿e do katalogu mo¿na pisaæ jak do pliku. Podobnie, plik DOS-u mo¿e zostaæ okre¶lony jako "wykonywalny", lecz funkcja execve(2) mimo to zawiedzie.

Je¶li proces posiada odpowiednie uprawninia, implementacja mo¿e spowodowaæ pomy¶lne zakoñczenie dla X_OK nawet, gdy nie jest ustawiony ¿aden z bitów uruchamialno¶ci w prawach dostêpu do pliku.

WARTO¦Æ ZWRACANA

Gdy wszystko pójdzie dobrze (wszystkie ¿±dane prawa s± zapewnione), zwracane jest zero. W wypadku b³êdu (przynajmniej jeden bit z ¿±danych w mode uprawnieñ nie jest ustawiony lub wyst±pi³y inne b³êdy), zwracane jest -1 i odpowiednio ustawiane jest errno.

B£ÊDY

Funkcja access musi zakoñczyæ siê niepomy¶lnie gdy:
EACCES
Brak uprawnieñ dla ¿±danego dostêpu do pliku, albo brak uprawnieñ do przegl±dania dla którego¶ z katalogów w pathname.
ELOOP
Napotkano zbyt wiele dowi±zañ symbolicznych podczas rozwi±zywania pathname.
ENAMETOOLONG
pathname jest zbyt d³ugie.
ENOENT
Sk³adnik pathname bêd±cy katalogiem by³by dostêpny, ale nie istnieje lub jest wisz±cym dowi±zaniem symbolicznym.
ENOTDIR
Sk³adnik pathname, który powinien byæ katalogiem w rzeczywisto¶ci katalogiem nie jest.
EROFS
¯±dano zapisu do pliku po³o¿onego w systemie plików tylko do odczytu.
EFAULT
pathname wskazuje poza dostêpn± dla u¿ytkownika przestrzeñ adresow±.
EINVAL
mode zosta³o nieprawid³owo podane.
EIO
Wyst±pi³ b³±d wej¶cia/wyj¶cia.
ENOMEM
Nie starczy³o pamiêci kernela. TP ETXTBSY Wyst±pi³a próba dostêpu z prawem zapisu do pliku aktualnie uruchomionego programu.

OGRANICZENIA

access zwraca b³±d, je¶li jakikolwiek z ¿±danych w wywo³aniu rodzajów dostêpu nie zostanie zapewniony, nawet je¶li reszta zostanie.

access mo¿e nie dzia³aæ prawid³owo na systemach plików NFS z w³±czonym mapowaniem UID, poniewa¿ mapowanie to jest dokonywane na serwerze i ukryte przed klientem sprawdzaj±cym prawa dostêpu.

U¿ycie funkcji access w celu sprawdzenia, czy u¿ytkownik ma uprawnienia na przyk³ad do otwarcia pliku, przed otwarciem tego pliku za pomoc± open(2) tworzy dziurê w bezpieczeñstwie, poniewa¿ u¿ytkownik mo¿e wykorzystaæ krótki okres czas pomiêdzy sprawdzeniem pliku a otwarciem go do manipulacji na pliku.

ZGODNE Z

SVID, AT&T, POSIX, X/OPEN, BSD 4.3

ZOBACZ TAK¯E

stat(2), open(2), chmod(2), chown(2), setuid(2), setgid(2)