os.chroot不允许操作

时间:2013-07-31 14:28:57

标签: python linux chroot

我正在尝试编写一个python脚本来生成一个debian包。 我正在临时文件夹中生成所需的文件夹结构。为了将/ usr和子文件夹的uid和gid更改为root,我想到了使用chroot。

然而,在这一行

os.chroot(tmpdir)

我明白了:

OSError: [Errno 1] Operation not permitted: '/tmp/tmpVnTqW7/myproj'

我也尝试过这个迷你教程,结果相同:http://www.tutorialspoint.com/python/os_chroot.htm

为什么会这样? 感谢

3 个答案:

答案 0 :(得分:4)

chroot()只能由root用户完成。

做其中一项:

  1. 使用sudo运行脚本

  2. 使脚本setuid root,并执行setuid(geteuid())等效的python magic

答案 1 :(得分:1)

  

我正在临时文件夹中生成所需的文件夹结构。为了将/ usr和子文件夹的uid和gid更改为root,我想到了使用chroot。

我不确定你是否走在正确的轨道上。我对.deb包知之甚少,但在.rpm包中,您可以在文件列表中定义要分配给哪些文件的文件属性。

所以你不要在文件系统中设置它们,而只是告诉系统应该发生什么。

如上所述,这属于.rpm;我不确定.deb是否相同。

答案 2 :(得分:0)

而不是chroot到目录,你应该使用fakeroot执行dpkg-deb:fakeroot dpkg-deb -z8 -Zgzip --build myproj