有没有办法在基于Linux的系统上为C提供唯一的权限?我基本上想要限制一个进程(由主机启动,如事件处理程序)编辑其工作目录之外的任何文件,并创建套接字等。
唯一的方法是让主机进程为它产生的每个进程创建一个新用户并在之后销毁用户吗?
答案 0 :(得分:2)
对此的标准答案是chroot
,它将进程的根目录(及其子目录)设置为给定目录。
但是,如果您想要一个更好的答案,允许您隔离流程的所有方面而不仅仅是其文件系统,请查看unshare
系统调用(包含在现代glibc
中作为函数)。这就是容器的构建方式。
答案 1 :(得分:1)
您可以使用旧的setuid技术将流程切换为nobody
uid和nogroup
gid。这些ID旨在使进程无法写入任何文件(在所有可写目录中除外)。