我想(通过代码)启动一个具有高度受限权限的进程。
- 可以保存文件,但只能保存在自己的文件夹中,并且有配额限制。
- 可以在配额内使用内存。
- CPU 时间(包括它启动的任何子进程)受配额限制。
- 不能与任何其他进程通信,除了它自己的进程以及通过 stdin/out 与我的 Controller 程序的接口(interface)。
- 无法与任何设备互动。
- 在网络上看不到任何其他内容。
(我正在构建一个类似网格的系统。启动的代码可能是有敌意的。)
这是我到目前为止所得到的... - 预先创建一些用户,grid00-grid99。按照配置给每一个磁盘/内存/CPU 配额。
启动进程...
- 选择一个未使用的 gridxx 用户。
- 在用户的主文件夹中创建一个文件夹。
- 该文件夹中的硬链接(hard link)/bin、/usr 等。
- 在该文件夹中创建一个新的/home/gridxx 和/tmp 文件夹。
- 复制程序文件。
- 切换到 gridxx 用户。
- chroot 到新文件夹。
- 启动新流程。
我错过了什么吗?
非常感谢。
最佳答案
标准资源使用限制(通过 ulimit
)可以处理前三个,SELinux 可以处理其他三个。只需为应用程序创建一个新域,分配适当的权限,然后就可以了(但不是它)。
关于linux - 如何在具有高度受限权限的 Linux 上启动进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3285805/