Python不会覆盖777fi

2024-03-29 08:46:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个输出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

Tags: 文件实例pytestimporttxt脚本权限
2条回答

在Linux中,只有创建文件或根目录的用户才能更改其权限。如果调用open时文件不存在,则您是新文件的所有者,可以更改其权限。当文件已经存在时,它只是被截断,而现有的权限仍然有效。只捕捉并忽略错误是合理的,因为只有在正确设置了权限之后才会发生。在

如果您在父目录中具有适当的权限,则可以删除该文件并每次创建一个新文件。但这不适用于/tmp,因为粘性位已经设置,只有所有者可以删除文件。在

$ /tmp/myscript.py创建您拥有的文件。在

并且$ sudo -u other_user /tmp/myscript.py表示{}将更改您拥有的文件权限。在

同以下情况:

account1$ touch /tmp/test.txt
account1$ chmod 777 /tmp/test.txt
su account2
account2$ chmod 777  /tmp/test.txt 
#chmod: changing permissions of `test.txt': Operation not permitted

相关问题 更多 >