我正在研究 SELinux。
使用 SELinux,是否可以允许二进制文件访问其父进程打开的文件,而不能访问其他文件?
如果不能,那么我们就应该增强它。
答案1
是的,可以这样做。
SELinux 是一个标签系统,根据原始进程的安全上下文授予对文件(以及用户、进程等)执行不同操作的权限。
参考策略定义的是进程的安全上下文:
# ps -defZ | grep httpd
system_u:system_r:httpd_t:s0 root 1085 1 0 21:22 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
在此示例中,安全上下文具有以下元素:
system_u
:SELinux 用户system_r
:SELinux 角色httpd_t
:SELinux 类型强制属性。s0
:MLS/MCS 范围,与默认目标策略之外的策略相关。
并且还定义了进程可以访问哪些安全上下文:
# ll -dZ /srv/www/html/
drwxr-s---. root apache system_u:object_r:httpd_sys_content_t:s0 /srv/www/html/
# sesearch -s httpd_t -t httpd_sys_content_t -c file -p read -Ad
Found 1 semantic av rules:
allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open } ;
在上面的例子中,给定目录的安全上下文/srv/www/html
,您可以使用它来查找sesearch(1)
是否在策略中定义了标为 的进程httpd_t
可以对标为 的目录具有读访问权限httpd_sys_content_t
。
查看手册页以sesearch
了解更多选项。
因此,为了限制分叉进程访问其父进程打开的文件,您应该确保存在允许该操作的策略。