2013-07-31 220 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