.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 .\" and Copyright (C) 2006, 2014 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified by Michael Haardt .\" Modified 1993-07-21 by Rik Faith .\" Modified 1997-01-12 by Michael Haardt .\" : NFS details .\" Modified 2004-06-23 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH chmod 2 "30 марта 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ chmod, fchmod, fchmodat \- изменяет права доступа к файлу .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint chmod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP \fBint fchmod(int \fP\fIfd\fP\fB, mode_t \fP\fImode\fP\fB);\fP .PP \fB#include \fP /* определения констант AT_* */ \fB#include \fP .PP \fBint fchmodat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP .nf .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) \fBfchmod\fP(): Since glibc 2.24: _POSIX_C_SOURCE >= 199309L glibc 2.19 to glibc 2.23 _POSIX_C_SOURCE glibc 2.16 to glibc 2.19: _BSD_SOURCE || _POSIX_C_SOURCE glibc 2.12 to glibc 2.16: _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L glibc 2.11 and earlier: _BSD_SOURCE || _XOPEN_SOURCE >= 500 .fi .PP \fBfchmodat\fP(): .nf Начиная с glibc 2.10: _POSIX_C_SOURCE >= 200809L До glibc 2.10: _ATFILE_SOURCE .fi .SH ОПИСАНИЕ Системные вызовы \fBchmod\fP() и \fBfchmod\fP() изменяют биты режима файла (режим файла состоит из бит прав доступа к файлу плюс биты set\-user\-ID, set\-group\-ID и бит закрепления) Данные системные вызовы отличаются только способом указания файла: .IP \[bu] 3 Вызов \fBchmod\fP() изменяет режим файла, задаваемого путём из параметра \fIpathname\fP, который разыменовывается, если является символьной ссылкой. .IP \[bu] Вызов \fBfchown\fP() изменяет режим файла, задаваемого открытым файловым дескриптором \fIfd\fP. .PP Новый режим файла указывается в \fImode\fP и представляет собой битовую маску, создаваемую побитовым сложением нуля или более следующих констант: .TP 18 \fBS_ISUID\fP (04000) set\-user\-ID (установить эффективный идентификатор пользователя процесса при \fBexecve\fP(2)) .TP \fBS_ISGID\fP (02000) set\-group\-ID (установить эффективный идентификатор группы процесса при \fBexecve\fP(2); обязательная блокировка, описывается в \fBfcntl\fP(2); выбрать новую группу файла от родительского каталога, описывается в \fBchown\fP(2) и \fBmkdir\fP(2)) .TP \fBS_ISVTX\fP (01000) закрепляющий бит (ограничительный флаг удаления, описывается в \fBunlink\fP(2)) .TP \fBS_IRUSR\fP (00400) владелец может читать .TP \fBS_IWUSR\fP (00200) владелец может писать .TP \fBS_IXUSR\fP (00100) владелец может выполнять файл или искать в каталоге ("поиск" применим к каталогам и означает, что к элементам внутри каталога есть доступ) .TP \fBS_IRGRP\fP (00040) группа\-владелец может читать .TP \fBS_IWGRP\fP (00020) группа\-владелец может писать .TP \fBS_IXGRP\fP (00010) группа\-владелец может выполнять файл или искать в каталоге .TP \fBS_IROTH\fP (00004) все остальные могут читать .TP \fBS_IWOTH\fP (00002) все остальные могут писать .TP \fBS_IXOTH\fP (00001) все остальные могут выполнять файл или искать в каталоге .PP Эффективный идентификатор пользователя (UID) вызывающего процесса должен совпадать с UID владельца файла или процесс должен быть привилегированным (Linux: у него должен быть мандат \fBCAP_FOWNER\fP). .PP Если вызывающий процесс не является привилегированным (Linux: не имеет мандата \fBCAP_FSETID\fP), а группа\-владелец файла не совпадает с эффективным групповым ID процесса или одним из его дополнительных групповых идентификаторов, то бит \fBS_ISGID\fP будет сброшен, но ошибки при этом не возникнет. .PP В зависимости от файловой системы в целях безопасности биты выполнения set\-user\-ID и set\-group\-ID могут сбрасываться при записи в файл (в Linux это происходит, если записывающий процесс не имеет мандата \fBCAP_FSETID\fP). В некоторых файловых системах только суперпользователь может устанавливать закрепляющий бит, который может иметь специальное назначение. Значения закрепляющего бита, set\-user\-ID и set\-group\-ID для каталогов смотрите в \fBinode\fP(7). .PP .\" .\" В файловых системах NFS ограничивающие права сразу начинают действовать даже уже на открытые файлы, так как контроль доступа выполняется сервером, но открытые файлы находятся в ведении клиента. Распространение прав может откладываться для других клиентов, если у них установлен атрибут кэширования. .SS fchmodat() Системный вызов \fBfchmodat\fP() работает также как системный вызов \fBchmod\fP(), за исключением случаев, описанных здесь. .PP Если в \fIpathname\fP задан относительный путь, то он считается относительно каталога, на который ссылается файловый дескриптор \fIdirfd\fP (а не относительно текущего рабочего каталога вызывающего процесса, как это делается в \fBchmod\fP()). .PP Если в \fIpathname\fP задан относительный путь и \fIdirfd\fP равно специальному значению \fBAT_FDCWD\fP, то \fIpathname\fP рассматривается относительно текущего рабочего каталога вызывающего процесса (как \fBchmod\fP()). .PP Если в \fIpathname\fP задан абсолютный путь, то \fIdirfd\fP игнорируется. .PP Значение \fIflags\fP может быть 0, или включать следующие флаги: .TP \fBAT_SYMLINK_NOFOLLOW\fP Если значение \fIpathname\fP является символьной ссылкой, не разыменовывать её, а изменить права на самой ссылке. Этот флаг пока не реализован. .PP Смотрите в \fBopenat\fP(2) объяснение необходимости \fBfchmodat\fP(). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, zero is returned. On error, \-1 is returned, and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ В зависимости от файловой системы могут также возвращаться другие ошибки, перечисленные далее. .PP Наиболее распространённые ошибки \fBchmod\fP() перечислены далее: .TP \fBEACCES\fP Поиск запрещён из\-за одного из частей префикса пути (См. также \fBpath_resolution\fP(7).) .TP \fBEBADF\fP (\fBfchmod\fP()) Файловый дескриптор \fIfd\fP не действителен. .TP \fBEBADF\fP (\fBfchmodat\fP()) \fIpathname\fP is relative but \fIdirfd\fP is neither \fBAT_FDCWD\fP nor a valid file descriptor. .TP \fBEFAULT\fP Аргумент \fIpathname\fP указывает за пределы доступного адресного пространства. .TP \fBEINVAL\fP (\fBfchmodat\fP()) Указано неверное значение в \fIflags\fP. .TP \fBEIO\fP Произошла ошибка ввода\-вывода. .TP \fBELOOP\fP Во время определения \fIpathname\fP встретилось слишком много символьных ссылок. .TP \fBENAMETOOLONG\fP Слишком длинное значение аргумента \fIpathname\fP. .TP \fBENOENT\fP Файл не существует. .TP \fBENOMEM\fP Недостаточное количество памяти ядра. .TP \fBENOTDIR\fP Компонент в префиксе пути не является каталогом. .TP \fBENOTDIR\fP (\fBfchmodat\fP()) Значение \fIpathname\fP содержит относительный путь и \fIdirfd\fP содержит файловый дескриптор, указывающий на файл, а не на каталог. .TP \fBENOTSUP\fP (\fBfchmodat\fP()) В \fIflags\fP указано \fBAT_SYMLINK_NOFOLLOW\fP, но оно не поддерживается. .TP \fBEPERM\fP Эффективный UID не совпадает с идентификатором владельца файла, а процесс не является привилегированным (Linux: не имеет мандата \fBCAP_FOWNER\fP). .TP \fBEPERM\fP Файл помечен как неизменяемый (immutable) или только для добавления (смотрите \fBioctl_iflags\fP(2)). .TP \fBEROFS\fP Указанный файл находится на файловой системе, смонтированной только для чтения. .SH ВЕРСИИ .SS "Отличия между библиотекой C и ядром" В этой странице описана обёрточная функция \fBfchmodat\fP() библиотеки GNU C, реализующая POSIX\-интерфейс. Данный интерфейс отличается от лежащего в основе системного вызова Linux тем, что имеет аргумент \fIflags\fP. .SS "Замечания по glibc" В старых ядрах, где \fBfchmodat\fP() отсутствует, обёрточная функция glibc использует \fBchmod\fP(). Если \fIpathname\fP является относительным путём, то glibc собирает путь относительно символической ссылки в \fI/proc/self/fd\fP, которая соответствует аргументу \fIdirfd\fP. .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ .TP \fBchmod\fP() .TQ \fBfchmod\fP() 4.4BSD, SVr4, POSIX.1\-2001. .TP \fBfchmodat\fP() POSIX.1\-2008. Linux 2.6.16, glibc 2.4. .SH "СМ. ТАКЖЕ" \fBchmod\fP(1), \fBchown\fP(2), \fBexecve\fP(2), \fBopen\fP(2), \fBstat\fP(2), \fBinode\fP(7), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitriy S. Seregin , Dmitry Bolkhovskikh , Katrin Kutepova , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .