.\" -*- coding: UTF-8 -*- .\" Copyright 1992, Drew Eckhardt .\" Copyright 2006-2014, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH chmod 2 "8 февраля 2026 г." "Справочные страницы Linux 6.17" .SH НАИМЕНОВАНИЕ chmod, fchmod, fchmodat \- изменяет права доступа к файлу .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP,\ \fI\-lc\fP) .SH ОБЗОР .nf \fB#include \fP .P \fBint chmod(const char *\fP\fIpath\fP\fB, mode_t \fP\fImode\fP\fB);\fP \fBint fchmod(int \fP\fIfd\fP\fB, mode_t \fP\fImode\fP\fB);\fP .P \fB#include \fP /* определения констант AT_* */ \fB#include \fP .P \fBint fchmodat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpath\fP\fB, mode_t \fP\fImode\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P .nf .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) \fBfchmod\fP(): Начиная с glibc 2.24: _POSIX_C_SOURCE >= 199309L glibc 2.19 до glibc 2.23 _POSIX_C_SOURCE glibc 2.16 до glibc 2.19: _BSD_SOURCE || _POSIX_C_SOURCE glibc 2.12 до glibc 2.16: _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L glibc 2.11 и ранее: _BSD_SOURCE || _XOPEN_SOURCE >= 500 .fi .P \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() changes the mode of the file specified whose pathname is given in \fIpath\fP, which is dereferenced if it is a symbolic link. .IP \[bu] Вызов \fBfchown\fP() изменяет режим файла, задаваемого открытым файловым дескриптором \fIfd\fP. .P Новый режим файла указывается в \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) все остальные могут выполнять файл или искать в каталоге .P Эффективный идентификатор пользователя (UID) вызывающего процесса должен совпадать с UID владельца файла или процесс должен быть привилегированным (Linux: у него должен быть мандат \fBCAP_FOWNER\fP). .P Если вызывающий процесс не является привилегированным (Linux: не имеет мандата \fBCAP_FSETID\fP), а группа\-владелец файла не совпадает с эффективным групповым ID процесса или одним из его дополнительных групповых идентификаторов, то бит \fBS_ISGID\fP будет сброшен, но ошибки при этом не возникнет. .P В зависимости от файловой системы в целях безопасности биты выполнения set\-user\-ID и set\-group\-ID могут сбрасываться при записи в файл (в Linux это происходит, если записывающий процесс не имеет мандата \fBCAP_FSETID\fP). В некоторых файловых системах только суперпользователь может устанавливать закрепляющий бит, который может иметь специальное назначение. Значения закрепляющего бита, set\-user\-ID и set\-group\-ID для каталогов смотрите в \fBinode\fP(7). .P .\" .\" В файловых системах NFS ограничивающие права сразу начинают действовать даже уже на открытые файлы, так как контроль доступа выполняется сервером, но открытые файлы находятся в ведении клиента. Распространение прав может откладываться для других клиентов, если у них установлен атрибут кэширования. .SS fchmodat() Системный вызов \fBfchmodat\fP() работает также как системный вызов \fBchmod\fP(), за исключением случаев, описанных здесь. .P If \fIpath\fP is relative, then it is interpreted relative to the directory referred to by the file descriptor \fIdirfd\fP (rather than relative to the current working directory of the calling process, as is done by \fBchmod\fP() for a relative pathname). .P If \fIpath\fP is relative and \fIdirfd\fP is the special value \fBAT_FDCWD\fP, then \fIpath\fP is interpreted relative to the current working directory of the calling process (like \fBchmod\fP()). .P If \fIpath\fP is absolute, then \fIdirfd\fP is ignored. .P \fIflags\fP can either be 0, or include the following flags: .TP \fBAT_EMPTY_PATH\fP (since Linux 6.6) .\" commit 5daeb41a6fc9d0d81cb2291884b7410e062d8fa1 .\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed If \fIpath\fP is an empty string, operate on the file referred to by \fIdirfd\fP (which may have been obtained using the \fBopen\fP(2) \fBO_PATH\fP flag). In this case, \fIdirfd\fP can refer to any type of file, not just a directory. If \fIdirfd\fP is \fBAT_FDCWD\fP, the call operates on the current working directory. This flag is Linux\-specific; define \fB_GNU_SOURCE\fP to obtain its definition. .TP \fBAT_SYMLINK_NOFOLLOW\fP If \fIpath\fP is a symbolic link, do not dereference it: instead operate on the link itself. .P Смотрите в \fBopenat\fP(2) объяснение необходимости \fBfchmodat\fP(). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении возвращается 0. При ошибке возвращается \-1, а в \fIerrno\fP содержится код ошибки. .SH ОШИБКИ В зависимости от файловой системы могут также возвращаться другие ошибки, перечисленные далее. .P Наиболее распространённые ошибки \fBchmod\fP() перечислены далее: .TP \fBEACCES\fP Поиск запрещён из\-за одного из частей префикса пути (См. также \fBpath_resolution\fP(7).) .TP \fBEBADF\fP (\fBfchmod\fP()) Файловый дескриптор \fIfd\fP не действителен. .TP \fBEBADF\fP (\fBfchmodat\fP()) \fIpath\fP is relative but \fIdirfd\fP is neither \fBAT_FDCWD\fP nor a valid file descriptor. .TP \fBEFAULT\fP Аргумент \fIpath\fP указывает за пределы доступного адресного пространства. .TP \fBEINVAL\fP (\fBfchmodat\fP()) Указано неверное значение в \fIflags\fP. .TP \fBEIO\fP Произошла ошибка ввода\-вывода. .TP \fBELOOP\fP Во время определения \fIpath\fP встретилось слишком много символьных ссылок. .TP \fBENAMETOOLONG\fP \fIpath\fP слишком длинен. .TP \fBENOENT\fP Файл не существует. .TP \fBENOMEM\fP Недостаточное количество памяти ядра. .TP \fBENOTDIR\fP Компонент в префиксе пути не является каталогом. .TP \fBENOTDIR\fP (\fBfchmodat\fP()) \fIpath\fP is relative and \fIdirfd\fP is a file descriptor referring to a file other than a directory. .TP \fBENOTSUP\fP (\fBfchmodat\fP()) В \fIflags\fP указано \fBAT_SYMLINK_NOFOLLOW\fP, но оно не поддерживается. .TP \fBEPERM\fP Эффективный UID не совпадает с идентификатором владельца файла, а процесс не является привилегированным (Linux: не имеет мандата \fBCAP_FOWNER\fP). .TP \fBEPERM\fP Файл помечен как неизменяемый (immutable) или только для добавления (смотрите \fBFS_IOC_SETFLAGS\fP(2const)). .TP \fBEROFS\fP Указанный файл находится на файловой системе, смонтированной только для чтения. .SH ВЕРСИИ .SS "Отличия между библиотекой C и ядром" В этой странице описана обёрточная функция \fBfchmodat\fP() библиотеки GNU C, реализующая POSIX\-интерфейс. Данный интерфейс отличается от лежащего в основе системного вызова Linux тем, что имеет аргумент \fIflags\fP. .SS "Замечания по glibc" On older kernels where \fBfchmodat\fP() is unavailable, the glibc wrapper function falls back to the use of \fBchmod\fP(). When \fIpath\fP is a relative pathname, glibc constructs a pathname based on the symbolic link in \fI/proc/self/fd\fP that corresponds to the \fIdirfd\fP argument. .SH СТАНДАРТЫ POSIX.1\-2024. .SH ИСТОРИЯ .TP \fBchmod\fP() SVr4, POSIX.1\-1988, 4.4BSD. .TP \fBfchmod\fP() SVr4, 4.4BSD, SUSv1, POSIX.1\-1996. .TP \fBfchmodat\fP() POSIX.1\-2008. Linux 2.6.16, glibc 2.4. .TP \fBAT_SYMLINK_NOFOLLOW\fP POSIX.1\-2008, glibc 2.32, Linux 6.5. .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 Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .