Python Glossary English

все Python 3Linux · macOSosфункция

os.fchown

os — права и владелец

Как chown, но по открытому файловому дескриптору. Доступно на Unix.

Синтаксис

os.fchown(...)

Как и другие функции по дескриптору, защищает от гонок: владелец меняется у того файла, который открыт, даже если путь к нему успели подменить. Значение -1 оставляет uid или gid без изменений. Отдать файл чужому владельцу может только root, как и в chown; владелец своего файла может и без него оставить владельцем себя и сменить группу на одну из своих.

Примеры

import os
f = open('demo_fchown.txt', 'w')  # → ? открываем файл и дальше работаем через его дескриптор
os.fchown(f.fileno(), os.getuid(), os.getgid())  # → ? только Unix: владелец и группа — текущий пользователь
os.fchown(f.fileno(), -1, os.getgid())  # → ? только Unix: -1 = «не менять», меняется только группа
print(os.fstat(f.fileno()).st_uid == os.getuid())  # → ? True: os.fstat читает метаданные того же дескриптора (на Unix)
os.fchown(f.fileno(), 0, 0)  # → PermissionError, если скрипт запущен не от root
f.close()  # → ? закрываем файл; после этого os.fchown по этому дескриптору даст OSError

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности