все 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Сообщить о неточности