2013-07-31 166 views
1

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

然而,在这条线

os.chroot(tmpdir) 

我得到:

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

我也试着用同样的结果这个迷你型的教程:http://www.tutorialspoint.com/python/os_chroot.htm

为什么会是这样? 谢谢

回答

4

chroot()只能由root来完成。

执行下列操作之一:

  1. 使用sudo

  2. 运行该脚本将脚本setuid root的,并做了setuid(geteuid()),相当于蟒蛇魔术

1

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

我不确定您是否在正确的轨道上。我对.deb软件包了解不多,但在.rpm软件包中,您可以在文件列表中定义将哪些文件属性分配给哪些文件。

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

如上所述,这个计数为.rpm;我不确定.deb是否相同。

0

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