4.3. 查找用于管理对非标准目录的访问的正确 SELinux 类型
如果您需要设置默认 SELinux 策略没有涵盖的访问控制规则,请首先搜索与您的用例匹配的布尔值。如果您无法找到合适的布尔值,您可以使用匹配的 SELinux 类型甚至创建本地策略模块。
先决条件
-
selinux-policy-doc
和setools-console
软件包已安装在您的系统中。
步骤
列出所有与 SELinux 相关的主题,并将结果限制为您要配置的组件。例如:
# man -k selinux | grep samba samba_net_selinux (8) - Security Enhanced Linux Policy for the samba_net processes samba_selinux (8) - Security Enhanced Linux Policy for the smbd processes …
在与您的场景对应的 man page 中,找到相关的 SELinux 布尔值、端口类型和文件类型。
请注意,只有安装
selinux-policy-doc
软件包后,man -k selinux
或apropos selinux
命令才可用。可选:您可以使用
semanage fcontext -l
命令显示默认位置上进程的默认映射,例如:# semanage fcontext -l | grep samba … /var/cache/samba(/.*)? all files system_u:object_r:samba_var_t:s0 … /var/spool/samba(/.*)? all files system_u:object_r:samba_spool_t:s0 …
使用
sesearch
命令显示默认 SELinux 策略中的规则。您可以通过列出对应的规则来查找要使用的类型和布尔值,例如:$ sesearch -A | grep samba | grep httpd … allow httpd_t cifs_t:dir { getattr open search }; [ use_samba_home_dirs && httpd_enable_homedirs ]:True …
SELinux 布尔值可能是您的配置问题最直接的解决方案。您可以使用
getsebool -a
命令显示所有可用的布尔值及其值,例如:$ getsebool -a | grep homedirs git_cgi_enable_homedirs --> off git_system_enable_homedirs --> off httpd_enable_homedirs --> off mock_enable_homedirs --> off mpd_enable_homedirs --> off openvpn_enable_homedirs --> on ssh_chroot_rw_homedirs --> off
您可以使用
sesearch
命令验证所选布尔值是否准确执行所需的内容,例如:$ sesearch -A | grep httpd_enable_homedirs … allow httpd_suexec_t autofs_t:dir { getattr open search }; [ use_nfs_home_dirs && httpd_enable_homedirs ]:True allow httpd_suexec_t autofs_t:dir { getattr open search }; [ use_samba_home_dirs && httpd_enable_homedirs ]:True …
如果没有与您的场景匹配,则找到适合您问题单的 SELinux 类型。您可以使用
sesearch
从默认策略查询对应的规则来查找您的文件类型,例如:$ sesearch -A -s httpd_t -c file -p read … allow httpd_t httpd_t:file { append getattr ioctl lock open read write }; allow httpd_t httpd_tmp_t:file { append create getattr ioctl link lock map open read rename setattr unlink write }; …
- 如果前面的解决方案没有满足您的场景,您可以在 SELinux 策略中添加自定义规则。如需更多信息 ,请参阅创建本地 SELinux 策略模块 部分。
其他资源
-
man -k selinux
命令提供的与 SELinux 相关的 man page -
sesearch (1)
,semanage-fcontext (8)
,semanage-boolean (8)
, 和getsebool (8)
手册页