这是我喜欢做的一个想象中的例子。不要太过于字面意思。
假设我的进程以www-data运行,我有一个名为thedevil.lua的lua脚本。它会尝试删除,损坏并导致尽可能多的问题。我想启动一个具有lua解释器的进程(或加载一个共享对象),它将试图破坏我的所有网站,因为用户是www-data。
有没有办法可以让我们创建具有LIMITED权限的进程(或加载库)。假设脚本在/var/www/devilscript/thedevil.lua
中。我想为/tmp/www/devilscript
和/var/www/devilscript/
授予权限。那可能吗?我不想创建一个名为devilscript的新用户,并为其提供有限的权限,而不是以该用户身份运行该进程。我只是想说我是www-data,但我只想给这个进程/ lib一个我能做的部分。
-edit-你能给我一些执行所说的函数的名称或者具有较低权限的二进制文件吗? -edit2-窗户可以像我问的那样做吗?
答案 0 :(得分:2)
是的,根据您运行的操作系统,现代Unix系统中有各种各样的沙盒方法。这取决于你正在运行的是哪一个。在Linux下,有太多 - SELinux,Apparmor,Tomoyo等。 FreeBSD有一个强制访问控制系统以及Capsicum功能系统。 Mac OS X也有一个沙盒系统。
大多数此类系统允许您以相当精细的方式减少特定进程获得的权限。通常,功能系统比强制访问控制(MAC)系统更容易使用,但它们的使用频率较低。
在旧的Unix系统中进行这种特权限制的一种原始方法是“chroot”一个进程,即使用chroot系统调用在文件层次结构的受限部分中运行它。不幸的是,这仍然是Unix系统中唯一真正可移植的特权减少形式 - 因此您在许多系统守护进程的配置系统中遇到它。
答案 1 :(得分:1)
SELinux将允许您创建一个对各种文件上下文和资源具有受限访问权限的域,无论该进程运行的用户是什么(甚至是root用户)。