这是我喜欢做的一个虚构的例子。别把它看得太字面了。
假设我的进程是作为www数据运行的,我有一个lua脚本,名为thedevil.lua。它会试图删除,破坏和造成尽可能多的问题。我想启动一个进程(或加载一个共享对象),它有一个lua解释器,它将试图破坏我的所有网站,因为用户是www数据。
我能说让我们用有限的权限创建这个进程(或者加载一个库)吗?假设脚本在/var/www/devilscript/thedevil.lua
中。我想授予它/tmp/www/devilscript
和/var/www/devilscript/
的权限。有可能吗?我不想创建一个名为devilscript的新用户,并授予它有限的权限,而不是以该用户的身份运行进程。我只想说我是www数据,但我只想给这个进程/库一个子集,我可以做什么。
-编辑-你能告诉我用较低权限执行上述so或二进制文件的函数名吗?
-edit2-windows能像我要求的那样做吗?
最佳答案
是的,取决于您正在运行的操作系统,在现代UNIX系统中有各种沙箱方法可用。这取决于你在跑哪一个。在Linux下,几乎有太多——selinux、apparmor、tomoyo和其他。freebsd有一个强制访问控制系统和capipcum能力系统。Mac OS X也有沙箱系统。
大多数这样的系统允许您以相当细粒度的方式减少特定进程获得的特权。一般来说,能力系统比强制访问控制(mac)系统更容易使用,但它们的使用频率较低。
在旧的unix系统中执行这种权限限制的一种原始方法是“chrooting”进程,即使用chroot系统调用在文件层次结构的受限制部分运行它。不幸的是,这仍然是Unix系统中唯一可用的真正可移植的特权缩减形式——因此在许多系统守护进程的配置系统中都会遇到这种情况。
关于linux - 我可以加载权限受限的库或进程吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9473918/