3

我正在尝试编写一个 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

为什么会这样?谢谢

4

3 回答 3

4

chroot() 只能由 root 完成。

执行以下操作之一:

  1. 使用 sudo 运行脚本

  2. 将脚本 setuid 设为 root,然后执行 setuid(geteuid()) 等效的 python 魔术

于 2013-07-31T14:31:42.960 回答
1

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

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

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

如前所述,这很重要.rpm;我不确定它是否相同.deb

于 2013-07-31T14:34:23.343 回答
0

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

于 2013-08-02T11:19:21.550 回答