CHMOD(2) CHMOD(2) НАЗВАНИЕ chmod - изменение режима доступа к файлу СИНТАКСИС |int chmod (path, mode) |char *path; |int mode; ОПИСАНИЕ Аргумент path является указателем на маршрутное имя файла. Системный вызов chmod устанавливает режим досту- па к указанному файлу в соответствии с битным шаблоном, содержащимся в аргументе mode. Биты прав доступа интерпретируются следующим образом: 04000 При выполнении переустановить действующий иден- тификатор пользователя. 020#0 При выполнении переустановить действующий иден- тификатор группы, если # есть 7, 5, 3 или 1; учитывать блокировку доступа, если # есть 6, 4, 2 или 0. 01000 Бит навязчивости - сохранить сегмент команд после завершения выполнения. 00400 Доступен для чтения владельцем. 00200 Доступен для записи владельцем. 00100 Доступен для выполнения (в случае каталога - для просмотра) владельцем. 00040 Доступен для чтения членами группы. 00020 Доступен для записи членами группы. 00010 Доступен для выполнения (просмотра) членами группы. 00004 Доступен для чтения прочими пользователями. 00002 Доступен для записи прочими пользователями. 00001 Доступен для выполнения (просмотра) прочими пользователями. Для изменения режима доступа к файлу действующий иден- тификатор пользователя процесса должен быть равен иден- тификатору владельца файла или суперпользователя. Если действующий идентификатор пользователя процесса не равен идентификатору суперпользователя, то бит навязчи- вости (01000) обнуляется. Если действующий идентификатор пользователя процесса не равен идентификатору суперпользователя и действующий идентификатор группы процесса не равен идентификатору группы файла, то бит 02000 (переустановить идентифика- тор группы при выполнении) обнуляется. Если у выполняемого файла с режимом доступа 410 бит на- вязчивости равен 1, операционная система не удаляет сегмент команд из области подкачки, когда завершается последний пользовательский процесс, выполняющий файл. Если при тех же предположениях режим доступа есть 413, то операционная система не удаляет сегмент команд из оперативной памяти. В обоих случаях, если бит навязчи- вости равен 1, то сегмент команд, независимо от того, где он находится (в области подкачки или в памяти), становится сразу же доступным для очередного пользова- теля, выполняющего этот файл, что делает выполнение бо лее быстрым. Если бит переустановки идентификатора группы при выпол- нении равен 1, а бит 00010 (выполнение или поиск для группы) обнуляется, то для обычного файла устанавлива ется режим учета блокировки, что может сказаться на вы- полнении последующих вызовов open(2), creat(2), read(2) и write(2) для этого файла. Системный вызов chmod завершается неудачей и режим дос- тупа не изменяется, если выполнено хотя бы одно из сле дующих условий: [ENOTDIR] Компонент маршрута не является каталогом. [ENOENT] Указанный файл не существует. [EACCES] Для компонента маршрута отсутствует право на поиск. [EPERM] Действующий идентификатор пользователя не равен идентификатору владельца файла или суперпользователя. [EROFS] Указанный файл расположен в файловой систе- ме, доступной только на чтение. [EFAULT] Аргумент path указывает за пределы отведен- ного процессу адресного пространства. [EINTR] Во время выполнения системного вызова пе- рехвачен сигнал. [ENOLINK] Маршрутное имя path указывает на удаленный компьютер, связи с которым в данный момент нет. [EMULTIHOP] Компоненты path требуют многократного обра- щения к удаленным компьютерам. СМ. ТАКЖЕ chown(2), creat(2), fcntl(2), mknod(2), open(2), read(2), write(2). chmod(1) в Справочнике пользователя. ДИАГНОСТИКА При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивает- ся код ошибки.