Provided by: manpages-pl-dev_20060617-1_all bug

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)