我有一个Python 虚拟环境,Python 可执行文件位于该/bin
目录中。在这个 virtualenv 中,我将不得不执行一些不安全的代码,这可能会损坏我的系统。我尝试chmod a-r
在 virtualenv 上进行操作,现在没有人可以在那里写入,但其父目录现在不受保护。
所以我想我可以更改 的权限/bin/python
,以便它无法写入任何地方,我该怎么做?
我尝试过chmod a-r bin/python
,但即使在环境之外,仍然允许删除文件和目录。
答案1
首先,chmod a-r bin/python
不阻止 python 删除文件。它可以防止非所有者或不属于正确组的任何人读取该文件。
如果您希望在“监狱”中运行不安全的代码,我建议使用chroot监狱。请记住,为了 chroot 有效运行,python 可执行文件不应在 root 权限下运行。
答案2
Python 将在调用它的用户的权限下运行,因此您永远无法限制它可以触摸、操作和读取的内容。
答案3
实际上,chmod a-r bin/python
它会阻止文件的所有者、文件组中的用户以及所有其他用户读取该文件(当然超级用户除外)。chmod o-r bin/python
将阻止除所有者和文件组中的用户之外的所有用户读取该文件。可执行文件的文件权限不会影响其读取或编辑其他文件的能力。文件权限仅决定哪些用户可以读取、写入和执行其所应用的文件(以及其他一些事情)。
答案4
我看到几个选项:
- 使用虚拟机
- 在 chroot 内运行
- 在不同用户下运行
- 使用类似 apparmor 的 LKM 进行限制。
它们是兼容的,因此您可以应用多个。
如上所述,chroot 或其他用户不会阻止网络(ab)使用。
另外,请注意,对 /usr/bin/python 施加的限制将影响您运行的所有 python 程序。您可能有兴趣使用不同的文件名进行锁定而不影响系统的其余部分。