我正在尝试编写一个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
为什么会这样? 感谢
答案 0 :(得分:4)
chroot()只能由root用户完成。
做其中一项:
使用sudo运行脚本
使脚本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