import os os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) os.lchmod(path, mode)
path
- str
путь в файловой системе,mode
- режим доступа,dir_fd=None
- путь относительно дескриптор каталога,follow_symlinks=True
- bool
, переходить ли по ссылкам. Значение по умолчанию для Windows - False
.Функция chmod()
модуля os
изменяет режим доступа к файлу или директории, указанного в path
.Функция os.lchmod()
эквивалентна вызову функции с следующими установленными аргументами os.chmod(path, mode, follow_symlinks=False)
.
Изменено в Python 3.13: добавлена поддержка дескриптора файла и аргумента
follow_symlinks
в Windows.
Аргумент mode
может принимать последние 3 цифры восьмеричного представления числа, например 0o755
или одно или несколько из следующих значений, значения которых приведены в модуле stat
:
mode
:stat.S_ISUID
- Устанавливает бит идентификатора пользователя.stat.S_ISGID
- Устанавливает бит идентификатора группы. Этот бит имеет несколько специальных применений.S_IXGRP
, бит set-group-ID указывает на обязательную блокировку файла/записей (смотрите также S_ENFMT
).stat.S_ISVTX
- Липкий бит. Когда этот бит установлен в каталоге, это означает, что файл в этом каталоге может быть переименован или удален только владельцем файла, владельцем каталога или привилегированным процессом.stat.S_IRWXU
- Маска устанавливает для пользователя права rwx
.stat.S_IRUSR
- Владелец имеет разрешение на чтение.stat.S_IWUSR
- Владелец имеет разрешение на запись.stat.S_IXUSR
- Владелец имеет разрешение на исполнение.,stat.S_IRWXG
- Маска устанавливает для группы права rwx
.stat.S_IRGRP
- Группа имеет разрешение на чтение.stat.S_IWGRP
- Группа имеет разрешение на запись.stat.S_IXGRP
- Группа имеет разрешение на исполнение.stat.S_IRWXO
- Маска устанавливает для других (не в группе) права rwx
.stat.S_IROTH
- Другие имеет разрешение на чтение.stat.S_IWOTH
- Другие имеет разрешение на запись.stat.S_IXOTH
- Другие имеет разрешение на исполнение.stat.S_ENFMT
- Система V принудительно блокирует файлы. Этот флаг используется совместно с S_ISGID
: блокировка файлов/записей применяется к файлам, для которых не установлен бит выполнения группы (S_IXGRP
),stat.S_IREAD
- Unix V7 синоним для S_IRUSR.stat.S_IWRITE
- Unix V7 синоним для S_IWUSR.stat.S_IEXEC
- Unix V7 синоним для S_IXUSR.Приведенные выше значения можно комбинировать побитовым ИЛИ '|'
, например stat.S_IRWXU|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH
. Данная комбинация установит разрешение rwxr-xr--
для пути, указанного в path
.
Аргумент path
может принимать объекты, представляющие путь файловой системы, такие как pathlib.PurePath
.
Функция chmod()
может поддерживать указание дескриптора файла, пути относительно дескрипторов каталога и не следовать символическим ссылкам follow_symlinks=False
.
Примечание. Несмотря на то, что Windows поддерживает os.chmod()
, можно установить для него флаг только для чтения через константы stat.S_IWRITE
и stat.S_IREAD
или соответствующее целочисленное значение. Все остальные биты игнорируются.
Вызывает событие аудита os.chmod
с аргументами path
, mode
, dir_fd
.
os.chmod()
>>> import os, stat >>> f = 'tt.py' >>> st = os.stat(f).st_mode >>> stat.filemode(st) # '-rw-rw-r--' >>> os.chmod(f, 0o754) >>> st = os.stat(f).st_mode >>> stat.filemode(st) # '-rwxr-xr--'
Этот пример переключает бит разрешения пользователя на выполнение:
import os import stat filename = 'tt.txt' if os.path.exists(filename): os.unlink(filename) with open(filename, 'wt') as f: f.write('contents') # Определим установленные разрешения existing_permissions = stat.S_IMODE(os.stat(filename).st_mode) if not os.access(filename, os.X_OK): print('Добавим разрешение на запуск "x"') new_permissions = existing_permissions | stat.S_IXUSR else: print('Удалим разрешения на выполнение "x"') # use xor to remove the user execute permission new_permissions = existing_permissions ^ stat.S_IXUSR os.chmod(filename, new_permissions)