【发布时间】:2015-02-11 16:51:58
【问题描述】:
我想创建一个文件(最好与 open(…) 一起使用)并让所有者与运行代码的人不同。
我尝试创建文件并使用os.chown 更改所有者,但这似乎不起作用。这是我尝试过的:
import os
import pwd
user=pwd.getpwnam('user')
with open('somefile', 'w') as f:
f.write('blah, blah')
os.chown('somefile', user.pw_uid, user.pw_gid)
我收到以下错误:
OSError: [Errno 1] Operation not permitted: 'somefile'
我原以为这是更改文件所有者的正确方法。
【问题讨论】:
-
你的代码没问题,但普通用户没有权限这样做。 (这是您无法编码的操作系统的一个有目的的限制。)您必须以具有适当权限的用户身份运行您的程序。但是请注意,在文件已经创建但不是
chown()ed 的时间窗口中存在竞争条件。