table of contents
        
      
      
    | ACCESS(2) | Podręcznik programisty Linuksa | ACCESS(2) | 
NAZWA¶
access - sprawdzenie praw użytkownika do pliku
SKŁADNIA¶
#include <unistd.h> int access(const char *pathname, int mode);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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¶
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 access
 
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.
| 2002-04-23 | Linux |