【问题标题】:User doesn't have permission to use os.chmod( )用户无权使用 os.chmod()
【发布时间】:2016-11-21 12:38:39
【问题描述】:

我正在尝试打开一个新文件并立即为其授予完整的系统读/写/执行权限。我这样做是这样的:

csvout = open("/Users/me/Google Drive/documentation/report.csv","w")
os.chmod("/Users/me/Google Drive/documentation/report.csv", 0o777)

此命令适用于我和另一位同事(她从她的帐户:/Users/coworker/ 运行它,但将其保存到我的帐户中的目录中,我已授予该目录完整的读/写权限)。但是,第二位同事在到达 os.chmod 行时收到错误,因为他显然没有权限在文件上使用 chmod。

有时 report.csv 文件在运行之前就存在,有时它不存在,但我看不出这会如何改变任何东西,因为无论如何打开文件时使用“w”选项都会覆盖它。

当父目录启用完整系统权限时,导致只有某些用户无法使用 chmod 命令的问题可能是什么?

【问题讨论】:

  • 你的问题到底是什么?
  • @FredLarson 为澄清而编辑
  • 只有文件的所有者才能更改权限。因此,如果在同事运行脚本时该文件已经存在,它将归前一个用户所有,他们将无法更改权限。
  • @Barmar 对,但是文件不会被覆盖,因为 open 命令使用了 'w' 选项?
  • 您无法覆盖您没有写入权限的文件。

标签: python file-permissions


【解决方案1】:

只有文件的所有者(或超级用户)才能更改其权限。当第二个用户运行脚本时,他们不是所有者(第一个用户是),所以他们得到一个错误。

第一个运行脚本的用户将创建文件,然后给它777 权限,允许任何人写入文件。

然后下一个用户将能够打开文件进行写入。当他们尝试使用os.chmod() 时,他们会收到错误消息,因为他们不是文件所有者。但既然它已经拥有所需的权限,这应该不是问题。

在对os.chmod() 的调用周围使用try 块来忽略错误。

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2017-04-06
    • 2019-07-06
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2018-11-07
    • 2016-03-18
    相关资源
    最近更新 更多