【问题标题】:os.chroot Operation not permittedos.chroot 不允许操作
【发布时间】:2013-07-31 14:28:57
【问题描述】:

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

为什么会这样? 谢谢

【问题讨论】:

    标签: python linux chroot


    【解决方案1】:

    chroot() 只能由 root 完成。

    执行以下操作之一:

    1. 使用 sudo 运行脚本

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-03
          • 2021-02-10
          • 2021-01-01
          • 2014-11-01
          • 2014-06-30
          • 2012-03-19
          • 2023-04-03
          • 1970-01-01
          相关资源
          最近更新 更多