![v2-15081bef1619f2f09ad4a9e1d444a7ec_1440w.jpg?source=172ae18b](http://img-03.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-15081bef1619f2f09ad4a9e1d444a7ec_1440w.jpg?source=172ae18b)
Semanage是用于配置SELinux策略某些元素而无需修改或重新编译策略源的工具。 这包括将Linux用户名映射到SELinux用户身份以及对象(如网络端口,接口和主机)的安全上下文映射。
简介
Semanage是用于配置SELinux策略某些元素而无需修改或重新编译策略源的工具。 这包括将Linux用户名映射到SELinux用户身份以及对象(如网络端口,接口和主机)的安全上下文映射。
实验环境
Centos7.7操作系统
Selinux已经开启
开启方式:
[root@localhost ~]# sed -i '/^SELINUX/s/disabled/enforcing/g' /etc/selinux/config
# 然后重启一下操作系统
[root@localhost ~]# reboot
# 重启完成之后检查一下是否是enforcing模式
[root@localhost ~]# getenforce
Enforcing
常用参数
- port: 管理定义的网络端口类型
- fcontext: 管理定义的文件上下文
- -l: 列出所有记录
- -a: 添加记录
- -m: 修改记录
- -d: 删除记录
- -t: 添加的类型
- -p: 指定添加的端口是tcp或udp协议的,port子命令下使用
- -e: 目标路径参考原路径的上下文类型,fcontext子命令下使用
列出所有定义的端口
使用semanage port命令列出所有端口
[root@localhost ~]# semanage port -l
SELinux Port Type Proto Port Number
afs3_callback_port_t tcp 7001
afs3_callback_port_t udp 7001
afs_bos_port_t udp 7007
afs_fs_port_t tcp 2040
afs_fs_port_t udp 7000, 7005
afs_ka_port_t udp 7004
afs_pt_port_t tcp 7002
afs_pt_port_t udp 7002
afs_vl_port_t udp 7003
agentx_port_t tcp 705
agentx_port_t udp 705
amanda_port_t tcp 10080-10083
amanda_port_t udp 10080-10082
…
…
![v2-e5bc7b8371676234d9e8c7b014a7541e_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-e5bc7b8371676234d9e8c7b014a7541e_b.jpg)
列出指定的端口类型的端口
[root@localhost ~]# semanage port -l|grep -w http_port_t
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
![v2-436d5020f0d9da7d0cc8bbc3c6e8ac68_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-436d5020f0d9da7d0cc8bbc3c6e8ac68_b.png)
通过查询端口号来列出端口类型
[root@localhost ~]# semanage port -l|grep -w 53
dns_port_t tcp 53
dns_port_t udp 53
[root@localhost ~]# semanage port -l|grep -w 20
ftp_data_port_t tcp 20
[root@localhost ~]# semanage port -l|grep -w 21
ftp_port_t tcp 21, 989, 990
![v2-af75a1942ca02bf13f242e08a4edfdcd_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-af75a1942ca02bf13f242e08a4edfdcd_b.jpg)
创建、添加、修改端口
通过下面的命令为http添加新端口
[root@localhost ~]#
[root@localhost ~]# semanage port -a -t http_port_t -p tcp 8888
[root@localhost ~]#
# 查看新添加的端口
[root@localhost ~]# semanage port -l|grep -w 8888
http_port_t tcp 8888, 80, 81, 443, 488, 8008, 8009, 8443, 9000
# 也可以使用-C参数查看自定义的端口号
[root@localhost ~]# semanage port -lC
SELinux Port Type Proto Port Number
http_port_t tcp 8888
![v2-cac0e15f674dbb74177fec640396f79b_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-cac0e15f674dbb74177fec640396f79b_b.jpg)
添加一个范围的端口
[root@localhost ~]# semanage port -a -t http_port_t -p tcp 11180-11188
[root@localhost ~]#
[root@localhost ~]# semanage port -lC
SELinux Port Type Proto Port Number
http_port_t tcp 8888, 11180-11188
![v2-de21720dce18ed700cd6bd27f740216b_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-de21720dce18ed700cd6bd27f740216b_b.jpg)
删除端口
[root@localhost ~]# semanage port -d -t http_port_t -p tcp 8888
[root@localhost ~]#
[root@localhost ~]# semanage port -d -t http_port_t -p tcp 11180-11188
[root@localhost ~]#
# 查看一下,已经没有自定义的端口了
[root@localhost ~]# semanage port -lC
![v2-105aa76e3be8062ece15288b2d5bcced_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-105aa76e3be8062ece15288b2d5bcced_b.jpg)
修改安全上下文
为samba共享目录添加安全上下文
# 没添加安全上下文之前是default_t
[root@localhost ~]# ll -dZ /share/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /share/
[root@localhost ~]# semanage fcontext -a -t samba_share_t '/share(/.*)?'
# 恢复文件默认的安全上下文
[root@localhost ~]# restorecon -Rv /share
restorecon reset /share context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:samba_share_t:s0
# 查看一下文件夹已经变成samba_share_t了
[root@localhost ~]# ll -dZ /share
drwxr-xr-x. root root unconfined_u:object_r:samba_share_t:s0 /share
![v2-48c8f9a9c2837a0f5e70ef1f0479083a_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-48c8f9a9c2837a0f5e70ef1f0479083a_b.jpg)
为nfs共享目录添加读写
[root@localhost ~]# ll -dZ /nfsshare/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /nfsshare/
[root@localhost ~]#
[root@localhost ~]# semanage fcontext -a -t public_content_rw_t '/nfsshare(/.*)?'
[root@localhost ~]# restorecon -Rv /nfsshare
[root@localhost ~]# ll -dZ /nfsshare/
drwxr-xr-x. root root unconfined_u:object_r:public_content_rw_t:s0 /nfsshare/
![v2-eb1f375b04819d680c0a80bc548e6f9c_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-eb1f375b04819d680c0a80bc548e6f9c_b.jpg)
总结
本文讲述了添加、修改和删除端口,修改安全上下文。如果你的系统有安装桌面,可以安装图形化管理软件 policycoreutils-gui来进行管理。
[root@localhost ~]# yum -y install policycoreutils-gui
# system-config-selinux执行该命令打开图形化管理界面
[root@localhost ~]# system-config-selinux
![v2-7848eeece09ecb72bce95465e7f1a970_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=00854c98-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-7848eeece09ecb72bce95465e7f1a970_b.jpg)