Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       access - проверить права доступа пользователя к файлу

ОБЗОР

       #include <unistd.h>

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

ОПИСАНИЕ

       access  проверяет,  имеет ли процесс права на чтение или запись, или же
       просто проверяет,  существует  ли  файл  (или  другой  объект  файловой
       системы),   с  именем  pathname.   Если  pathname  является  символьной
       ссылкой,  то  проверяются  права  доступа  к  файлу,  на  который   она
       ссылается.

       mode  --  это  маска,  состоящая из одного или более флагов R_OK, W_OK,
       X_OK и F_OK.

       R_OK, W_OK и X_OK  запрашивают  соответственно  проверку  существования
       файла  и  возможности  его  чтения, записи или выполнения.  F_OK просто
       проверяет существование файла.

       Результаты проверки зависят от прав доступа к каталогам, находящимся по
       пути  к  файлу,  заданному  параметром  pathname,  и  от прав доступа к
       каталогам и файлам, на которые ссылаются символьные ссылки, встреченные
       по пути.

       Проверка   осуществляется,   используя   ,   а  не  эффективные
       идентификаторы пользователя и группы.  Эффективные идентификаторы будут
       использоваться  при  действительной  попытке  выполнения  той  или иной
       операции.  Это дает setuid-программам простой  способ  проверить  права
       доступа настоящего пользователя.

       Проверяются   только  биты  прав  доступа,  а  не  тип  файла  или  его
       содержимое.  Таким образом, если каталог  имеет  "возможность  записи",
       это,  вероятно,  означает,  что в нем можно создавать файлы, а не что в
       этот каталог можно писать так же, как в обычный  файл.   Подобно  этому
       файл   из  DOS  может  показаться  "выполняемым",  но  системный  вызов
       execve(2) завершится неудачно.

       Если процесс имеет соответствующие привелегии, то некоторые  реализации
       могут  показать успех для X_OK даже если права на файл не содержат бит,
       разрешающий выполнение.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       В случае успеха (есть все запрошенные права)  возвращается  нуль.   При
       ошибке  (по  крайней  мере один запрос прав из mode был неудовлетворен,
       или случилась другая ошибка), возвращается -1, а errno  устанавливается
       должным образом.

ОШИБКИ

       access будет завершаться с ошибкой если:

       EACCES  Запрошенный тип доступа не удовлетворен или один из каталогов в
               pathname не позволяет поиск.

       ELOOP   Во  время  определения  pathname  встретилось   слишком   много
               символьных  ссылок (зацикливание по символьным сслыкам -- прим.
               пер.).

       ENAMETOOLONG
               pathname слишком длинно.

       ENOENT  Компонент пути pathname не существует  или  является  "висячей"
               символической ссылкой.

       ENOTDIR Компонент  пути,  использованный  как  каталог  в  pathname,  в
               действительности таковым не является.

       EROFS   Файл находится на файловой системе, смонтированной  только  для
               чтения.

              access
              может  завершиться с ошибкой, если: EFAULT pathname указывает за
              пределы доступного адресного пространства.

       EINVAL mode был задан неверно.

       EIO    Произошла ошибка ввода-вывода.

       ENOMEM Ядру не хватило памяти.

       ETXTBSY
              Права на запись были затребованы для исполняемого файла, который
              уже выполняется.

ОГРАНИЧЕНИЯ

       access  возвращает  ошибку,  если  один из запрошенных типов доступа не
       будет удовлетворён, даже если другие типы прошли бы успешно.

       access может работать неверно на файловых системах  NFS  со  включенным
       преобразованием  UID'ов,  потому  что  это преобразование происходит на
       сервере и спрятано от клиента, который пытается проверить права.

       Использование access для проверки,  можно  ли  пользователю,  например,
       открыть  файл  перед  тем, как действительно выполнить open(2), создает
       дыру в защите, потому что  пользователь  может  в  короткий  промежуток
       между проверкой и открытием файла как-то его изменить.

СООТВЕТСТВИЕ СТАНДАРТАМ

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

СМОТРИ ТАКЖЕ

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

ПЕРЕВОД

       Copyright   (C)   Alexey   Mahotkin  <alexm@hsys.msk.ru>  1999,  Виктор
       Вислобоков <corochoone@perm.ru> 2003