开发者

python creating tmp directory permissions

开发者 https://www.devze.com 2023-02-13 23:25 出处:网络
I\'m using a python script to create a copy of a linux filesystem.I\'m having trouble with the permissions on the created /tmp directory.The /tmp directory should have 1777 per开发者_JS百科missions, i

I'm using a python script to create a copy of a linux filesystem. I'm having trouble with the permissions on the created /tmp directory. The /tmp directory should have 1777 per开发者_JS百科missions, i.e.:

ls -l /
drwxrwxrwt  17 root     root 16384 2011-03-01 09:50 tmp

when I do the following,

os.mkdir('/mnt/tmp',1777)

I get strange permissions:

ls -l /
d-wxr----t 2 root root  4096 2011-03-01 09:53 tmp

Then I wondered about umask and chmod, so I tried this:

os.mkdir('/mnt/tmp')
old_mask=os.umask(0000)
os.chmod('/mnt/tmp',1777)
os.umask(old_mask)

but I still get unexpected permissions:

ls -l /
d-wxrwS--t 2 root root  4096 2011-03-01 09:57 tmp

However, what DOES give me the correct permissions of the created directory is the following:

os.mkdir('/mnt/tmp')
os.system("chmod 1777 /mnt/tmp")

I should note that I'm running this script through sudo, but there is no mention of any umask settings in /etc/sudoers. Running it as the actual root user makes no difference. It is impossible to run it as a normal user, since I'm making a copy of the FS, which has to include the files accessible only to root.

Any ideas here? Any help would be greatly appreciated.


You should provide the permissions as an octal number. In Python 2.x, simply use 01777 instead of 1777. In Python 3.x, use 0o1777.


Your permission should be in octal (777 in octal is 511 in decimal).

In Python, like in C, 0555 is 555 in base 8 (octal). If you want 1777 in octal, use 01777 in your code.

0

精彩评论

暂无评论...
验证码 换一张
取 消