我正在使用python脚本来创建linux文件系统的副本。我在创建的/ tmp目录上的权限有问题。 / tmp目录应具有1777个权限,即:
ls -l /
drwxrwxrwt 17 root root 16384 2011-03-01 09:50 tmp
当我执行以下操作时,
os.mkdir('/mnt/tmp',1777)
我获得了奇怪的权限:
ls -l /
d-wxr----t 2 root root 4096 2011-03-01 09:53 tmp
然后我想知道umask和chmod,所以我尝试了这个:
os.mkdir('/mnt/tmp')
old_mask=os.umask(0000)
os.chmod('/mnt/tmp',1777)
os.umask(old_mask)
但我仍然获得了意外的权限:
ls -l /
d-wxrwS--t 2 root root 4096 2011-03-01 09:57 tmp
但是,如何为我提供创建目录的正确权限如下:
os.mkdir('/mnt/tmp')
os.system("chmod 1777 /mnt/tmp")
我应该注意到我正在通过sudo运行这个脚本,但是在/ etc / sudoers中没有提到任何umask设置。以实际root用户身份运行它没有任何区别。以正常用户身份运行它是不可能的,因为我正在制作FS的副本,其中必须包含只能访问root的文件。
这里有什么想法吗?任何帮助将不胜感激。
答案 0 :(得分:9)
您应该将权限作为八进制数提供。在Python 2.x中,只需使用01777
而不是1777
。在Python 3.x中,使用0o1777
。
答案 1 :(得分:1)
你的权限应该是八进制的(八进制中的777是十进制的511)。
在Python中,就像在C中一样,0555在基数8(八进制)中是555。 如果你想要八进制1777,请在你的代码中使用01777。