1

私のPythonスクリプトが行うタスクの1つは、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 

Pythonスクリプトをrootとして実行せずにこれを実現する方法はありますか?

4

1 に答える 1

1

でそれを行うことはできませんがshutil、カスタムソリューションを思い付くのは簡単です。秘訣は、gshadow権限はありませんが、ローカルユーザーに属していることです。したがって、で権限を変更しos.chmod()、それを読んでから、(必要に応じて)権限を元に戻すことができます。

于 2013-01-08T12:51:51.817 に答える