使所有新建目录具有777权限

5
我有一个脚本,运行时会在 /home/test/ 目录下创建一个文件夹,并在其中写入一些文件。当我直接运行这个脚本时,它能正常工作。但是当我从一个 Perl 脚本中调用它时,
$ret = `/home/..../testscript.py`

由于权限不足,它无法创建文件夹,或在创建后无法在其中写入内容。当Python执行open("/home/test/abcde/file1.txt", "w")时,该文件的权限为-rw-r--r--

我该怎么办才能解决这个问题?有没有一种方法可以递归地设置/home/test,使所有子目录都具有全局写入访问权限?或者可能有更好的解决方案?


1
你是如何创建这些目录的?在创建它们时,你应该能够设置权限。 - squiguy
os.system('chmod -R 777 /home/test'): - user1759572
os.mkdir("/home/test/abcde") - Andrew Latham
Related - inspectorG4dget
2
当您运行脚本时,您的umask是什么? - Barmar
这个 Perl 脚本是一个 CGI 文件,运行在我的本地机器上,并调用 Python 脚本。 - Andrew Latham
1个回答

12

放置:

os.umask(0000)

如果你无法更改Python脚本,请在它创建目录之前放置:

umask(0000)

在调用Python脚本之前,在Perl脚本中确定新文件或目录的权限是通过获取creat()mkdir()函数调用中指定的权限,然后掩码掉umask中指定的位。

通常情况下,应用程序在调用函数时指定06660777权限(取决于是否创建应该是可执行文件),而umask的一般值为022,它会关闭组和全局写入权限。如果您不想关闭它们,请使用上述umask值以保留在调用中指定的权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接