我有一个输出pid的脚本。我将权限更改为777。每个后续实例都将用新的pid覆盖该文件。尽管有777权限,python仍报告一个操作系统错误,即除非执行脚本的用户是文件的所有者,否则不允许执行该操作。(当然,我可以从shell中删除/覆盖该文件)。在
#!/usr/bin/python
import os
import time
f = open("/tmp/test.txt", 'w')
f.write("Hello, file!\n")
os.chmod("/tmp/test.txt", 0777)
f.close()
$ /tmp/myscript.py # fine
$ sudo -u other_user /tmp/myscript.py #not fine -- gives error
在Linux中,只有创建文件或根目录的用户才能更改其权限。如果调用
open
时文件不存在,则您是新文件的所有者,可以更改其权限。当文件已经存在时,它只是被截断,而现有的权限仍然有效。只捕捉并忽略错误是合理的,因为只有在正确设置了权限之后才会发生。在如果您在父目录中具有适当的权限,则可以删除该文件并每次创建一个新文件。但这不适用于/tmp,因为粘性位已经设置,只有所有者可以删除文件。在
$ /tmp/myscript.py
创建您拥有的文件。在并且}将更改您拥有的文件权限。在
$ sudo -u other_user /tmp/myscript.py
表示{同以下情况:
相关问题 更多 >
编程相关推荐