我的python脚本执行的任务之一是提取整个Linux Root FS tarball,然后将文件从中复制到目标目录中。在这样做的时候,我遇到了特殊限制文件(如gshadow)的错误,如下所示:
File "script.py", line 553, in copy_rootfs
shutil.copy(sourceFileName,targetFileName)
File "/usr/lib/python2.6/shutil.py", line 88, in copy
copyfile(src, dst)
File "/usr/lib/python2.6/shutil.py", line 52, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 13] Permission denied: '/home/myuser/temp/home/embeduser/NFS/LinuxFS/etc/gshadow'
从tarball中提取的文件gshadow的权限如下:
myuser@host temp]$ ls -l home/embeduser/NFS/LinuxFS/etc/gshadow
---------- 1 myuser myuser 271 Nov 5 08:54 home/embeduser/NFS/LinuxFS/etc/gshadow
有没有办法可以实现这一点而无需以root身份运行我的python脚本?
答案 0 :(得分:1)
你不能用shutil
来做,但是很容易想出一些自定义解决方案。诀窍是gshadow
没有权限,但属于本地用户。因此,您可以使用os.chmod()
更改其权限,阅读它,然后(如有必要)更改权限。