【问题标题】:Create a file for a different user为其他用户创建文件
【发布时间】: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 的时间窗口中存在竞争条件。

标签: python file-io chown


【解决方案1】:

问题是您没有以 root 身份创建新文件,这是必需的。在 SO 中查看 cmets 到 this 问题。应该能解决问题。

更新: 您需要超级用户权限才能执行此操作。因此,在运行程序时,请使用

sudo python yourprogramname.py 

这将允许您的 python 脚本超级用户权限。

【讨论】:

  • os.getenv('SUDO_UID') 为我返回 None。
  • 您是以超级用户身份运行的吗?使用sudo python 命令启动python。它会询问您的密码。然后在您输入密码后,它将像往常一样打开python。只有这一次它应该返回一个 id,比如 '1002' 或类似的东西。
猜你喜欢
  • 1970-01-01
  • 2021-09-25
  • 2021-04-06
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
相关资源
最近更新 更多