使所有新目录具有777权限

And*_*ham 5 python unix perl file-permissions

我有一个脚本,在运行时,在里面创建一个目录/home/test/,然后在其中写入一些文件.当我运行此脚本时,它工作正常.但是,当我从perl脚本调用它时

$ret = `/home/..../testscript.py`
Run Code Online (Sandbox Code Playgroud)

它没有权限,因此无法创建文件夹,或者在创建文件夹后无法在其中写入.看起来像Python一样open("/home/test/abcde/file1.txt", "w"),该文件具有权限-rw-r--r--

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

Bar*_*mar 12

放:

os.umask(0000)
Run Code Online (Sandbox Code Playgroud)

在Python脚本中创建目录之前.如果您无法更改Python脚本,请执行以下操作:

umask(0000)
Run Code Online (Sandbox Code Playgroud)

在调用Python脚本之前的Perl脚本中.

当创建一个新文件或目录时,权限通过取在调用中指定的权限决定creat()mkdir(),然后掩蔽掉了在指定的位umask.

通常,应用程序在调用函数时指定06660777权限(取决于它们是否创建了应该可执行的内容).umaskis 的常见值022,它关闭组和世界写入权限.如果您不希望它们关闭,请使用上述umask值来保留调用中指定的权限.