python创建tmp目录权限

Kyl*_*ham 3 python linux

我正在使用python脚本来创建linux文件系统的副本.我在创建的/ tmp目录上的权限有问题./ tmp目录应具有1777权限,即:

ls -l /
drwxrwxrwt  17 root     root 16384 2011-03-01 09:50 tmp
Run Code Online (Sandbox Code Playgroud)

当我做以下,

os.mkdir('/mnt/tmp',1777)
Run Code Online (Sandbox Code Playgroud)

我得到了奇怪的权限:

ls -l /
d-wxr----t 2 root root  4096 2011-03-01 09:53 tmp
Run Code Online (Sandbox Code Playgroud)

然后我想知道umask和chmod,所以我尝试了这个:

os.mkdir('/mnt/tmp')
old_mask=os.umask(0000)
os.chmod('/mnt/tmp',1777)
os.umask(old_mask)
Run Code Online (Sandbox Code Playgroud)

但我仍然得到意外的权限:

ls -l /
d-wxrwS--t 2 root root  4096 2011-03-01 09:57 tmp
Run Code Online (Sandbox Code Playgroud)

但是,什么能够为我提供创建目录的正确权限如下:

os.mkdir('/mnt/tmp')
os.system("chmod 1777 /mnt/tmp")
Run Code Online (Sandbox Code Playgroud)

我应该注意到我正在通过sudo运行这个脚本,但是在/ etc/sudoers中没有提到任何umask设置.以实际root用户身份运行它没有任何区别.它不可能像普通用户一样运行,因为我正在制作FS的副本,其中必须包含只能访问root的文件.

这里有什么想法?任何帮助将不胜感激.

Sve*_*ach 9

您应该将权限提供为八进制数.在Python 2.x中,只需使用01777而不是1777.在Python 3.x中,使用0o1777.