Linux,将用户/进程限制到一个文件夹,在docker容器中chroot?

Linux,将用户/进程限制到一个文件夹,在docker容器中chroot?

我正在寻找一种在一台服务器上运行多个 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,这样其他用户就看不到他们的文件了。

即使用户可以输入资源路径,您也可以净化他们输入的路径。将接受的路径限制在适当的目录中。

有多种方法可以安全地提供配置数据。您可能需要考虑使用服务存储库/注册表。如果您有密码或其他敏感数据,则应以加密格式存储。

相关内容