1

我的 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 脚本?

4

1 回答 1

1

你不能用 来做到这一点shutil,但很容易想出一些自定义的解决方案。诀窍是gshadow没有权限,但属于本地用户。因此,您可以使用 更改其权限os.chmod(),阅读它,然后(如有必要)将权限更改回来。

于 2013-01-08T12:51:51.817 回答