4.6. 布尔值
布尔值允许在运行时更改 SELinux 策略的部分,而不必知晓 SELinux 策略的编写。这允许更改,例如允许服务访问 NFS 卷,而无需重新加载或重新编译 SELinux 策略。
4.6.1. 列出布尔值
对于布尔值列表,请说明每个布尔值是什么,以及是否以 Linux root 用户身份运行 semanage boolean -l 命令。以下示例没有列出所有布尔值,输出会为了简洁而缩短:
~]#
semanage boolean -l
SELinux boolean State Default Description
smartmon_3ware (off , off) Determine whether smartmon can...
mpd_enable_homedirs (off , off) Determine whether mpd can traverse...
注意
要获得更详细的描述,请安装 selinux-policy-devel 软件包。
SELinux 布尔值
列列出了布尔值名称。Description
列列出了布尔值是 on 或 off,以及它们的功能。
getsebool -a 命令列出布尔值,无论是 on 还是 off,但不为每个布尔值提供描述。以下示例没有列出所有布尔值:
~]$
getsebool -a
cvs_read_shadow --> off
daemons_dump_core --> on
运行 getsebool boolean-name 命令,仅列出 boolean-name 布尔值的状态:
~]$
getsebool cvs_read_shadow
cvs_read_shadow --> off
使用空格分隔列表列出多个布尔值:
~]$
getsebool cvs_read_shadow daemons_dump_core
cvs_read_shadow --> off
daemons_dump_core --> on
4.6.2. 配置布尔值
在
setsebool
boolean_name on/off 形式运行 setsebool 工具,以启用或禁用布尔值。
以下示例演示了配置
httpd_can_network_connect_db
布尔值:
过程 4.5. 配置布尔值
- 默认情况下,
httpd_can_network_connect_db
布尔值为 off,防止 Apache HTTP 服务器脚本和模块连接到数据库服务器:~]$
getsebool httpd_can_network_connect_db httpd_can_network_connect_db --> off - 要临时启用 Apache HTTP 服务器脚本和模块来连接到数据库服务器,以 root 用户身份输入以下命令:
~]#
setsebool httpd_can_network_connect_db on - 使用
getsebool
工具验证布尔值是否已启用:~]$
getsebool httpd_can_network_connect_db httpd_can_network_connect_db --> on这允许 Apache HTTP 服务器脚本和模块连接到数据库服务器。 - 此更改在重新启动后不会保留。要使更改在重启后保留,请以 root 用户身份运行 setsebool -P boolean-name on 命令:[3]
~]#
setsebool -P httpd_can_network_connect_db on
4.6.3. Shell 自动完成
可以通过
getsebool
、setsebool
和 semanage
实用程序使用 shell 自动完成功能。使用带有 getsebool
和 setsebool
的自动完成功能,以完成命令行参数和布尔值。要只列出命令行参数,请在命令名称后添加连字符("-")并按 Tab 键:
~]#
setsebool -[Tab]
-P
要完成布尔值,请开始编写布尔值,然后按 Tab 键:
~]$
getsebool samba_[Tab]
samba_create_home_dirs samba_export_all_ro samba_run_unconfined
samba_domain_controller samba_export_all_rw samba_share_fusefs
samba_enable_home_dirs samba_portmapper samba_share_nfs
~]#
setsebool -P virt_use_[Tab]
virt_use_comm virt_use_nfs virt_use_sanlock
virt_use_execmem virt_use_rawip virt_use_usb
virt_use_fusefs virt_use_samba virt_use_xserver
semanage
工具与多个命令行参数一起使用,这些参数逐一完成。semanage 命令的第一个参数是一个选项,它指定 SELinux 策略管理哪些部分:
~]#
semanage [Tab]
boolean export import login node port
dontaudit fcontext interface module permissive user
然后,一个或多个命令行参数如下:
~]#
semanage fcontext -[Tab]
-a -D --equal --help -m -o
--add --delete -f -l --modify -S
-C --deleteall --ftype --list -n -t
-d -e -h --locallist --noheading --type
最后,完成特定 SELinux 条目的名称,如布尔值、SELinux 用户、域或其他条目。开始输入条目并按 Tab 键:
~]#
semanage fcontext -a -t samba<tab>
samba_etc_t samba_secrets_t
sambagui_exec_t samba_share_t
samba_initrc_exec_t samba_unconfined_script_exec_t
samba_log_t samba_unit_file_t
samba_net_exec_t
命令行参数可以链接到命令中:
~]#
semanage port -a -t http_port_t -p tcp 81
[3]
要临时恢复到默认行为,以 Linux root 用户身份运行 setsebool httpd_can_network_connect_db off 命令。对于在重启后保留的更改,请运行 setsebool -P httpd_can_network_connect_db off 命令。