![Linux,将用户/进程限制到一个文件夹,在docker容器中chroot?](https://linux22.com/image/689299/Linux%EF%BC%8C%E5%B0%86%E7%94%A8%E6%88%B7%2F%E8%BF%9B%E7%A8%8B%E9%99%90%E5%88%B6%E5%88%B0%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E5%9C%A8docker%E5%AE%B9%E5%99%A8%E4%B8%ADchroot%EF%BC%9F.png)
我正在寻找一种在一台服务器上运行多个 python/php 应用程序的方法。每个应用程序都在其自己的 /bob_app 文件夹中。
我需要让用户不能运行如下操作:
>>> import glob
>>> glob.glob("/*")
['/boot', '/cdrom', '/dev', '/lib64', '/run', '/initrd.img', '/sys', '/media', '/var', '/etc', '/srv', '/initrd.img.old', '/root', '/sbin', '/tmp', '/opt', '/vmlinuz', '/usr', '/home', '/lost+found', '/bin', '/proc', '/lib', '/mnt', '/vmlinuz.old']
或者 php 等等效项。应用程序应该只能看到它们正在运行的文件夹的内容,而看不到该文件夹上方的任何内容。
编辑:应用程序位于docker容器中,我确信在docker中使用chroot环境并不是正确的做法。
答案1
如果您可以控制应用程序,那么他们是否可以看到其他应用程序路径就无关紧要了。如果应用程序使用不同的 UID 运行,您只需将应用程序目录的权限设置为 700,这样其他用户就看不到他们的文件了。
即使用户可以输入资源路径,您也可以净化他们输入的路径。将接受的路径限制在适当的目录中。
有多种方法可以安全地提供配置数据。您可能需要考虑使用服务存储库/注册表。如果您有密码或其他敏感数据,则应以加密格式存储。