6.6.13、SELinux 策略规则的开启和关闭

关注公众号 “融码一生”,领取全套 PDF / 电子书

  • 默认情况下,并不是所有的规则都处于开启状态,因此,虽然我们无需修改规则的具体内容,但学习如何开启和关闭规则,还是很有必要的。

1、查询策略规则是否开启

  • getsebool 命令:查询规则的开启和关闭状态
    • getsebool [-a] [规则名]
      • -a 选项:列出所有规则的开启状态
# getsebool 命令明确地列出了规则的开启状态
getsebool -a
:<<!
abrt_anon_write --> off
abrt_handle_event --> off
allow_console_login --> on
allow_cvs_read_shadow --> off
allow_daemons_dump_core --> on
allow_daemons_use_tcp_wrapper --> off
…省略部分输出…
!
  • 除此之外,还可以使用semanage boolean -l命令(此命令需手动安装),此命令的输出结果同 getsebool 命令相比,多了默认状态、当前状态以及相关描述等信息。

2、修改规则的开启状态

  • setsebool 命令:开启和关闭某个规则(修改规则的开启与关闭状态)。
  • 我们应先通过 sesearch 命令确认这个规则的作用:
    • setsebool [-P] 规则名=[0|1]
      • -P 选项:将改变写入配置文件,永久生效。
      • 规则名:0 代表将该规则关闭,1 代表将该规则开启
# 查询和apache相关的规则
getsebool -a | grep httpd
:<<!
…省略部分输出…
httpd_enable_homedirs --> off
…省略部分输出…
#发现httpd_enable_homedirs规则是开启的,这个规则主要用于允许apache进程访问用户的家目录
#如果不开启这个规则,那么apache的userdir功能将不能使用
!

# 开启httpd_enable_homedirs规则
setsebool -P httpd_enable_homedirs=1

# 查询规则状态是开启
getsebool httpd_enable_homedirs
:<<!
httpd_enable_homedirs --> on
!

# 关闭规则
setsebool -P httpd_enable_homedirs=0

# 查询规则状态是关闭
getsebool httpd_enable_homedirs
:<<!
httpd_enable_homedirs --> off
!

3、SELinux 导致 vsftpd 不能正常登录

  • vsftpd 是 CentOS 默认的文件服务器,该服务主要进行文件的下载和上传。
  • 如果启动了 SELinux,会发现 vsftpd 服务不能登录:
# 安装vsftpd服务器端
yum -y install vsftpd

# 安装ftp命令,也就是ftp客户端
yum -y install ftp

# 添加测试用户,并配置密码
useradd user
passwd user

# 启动vsftpd服务
service vsftpd start

# 登录本机的ftp
ftp 192.168.4.210
:<<!
Connected to 192.168.4.210 (192.168.4.210).2.0 (vsFTPd 2.2.2)
Name (192.168.4.210:root):user ←输入用户名
3.1 Please specify the password.
Password: ←输入密码
5.0 OOPS:cannot change directory:/home/user
Login failed.
!

# 登录报错,不能正常登录
# 这很奇怪,vsftpd 是只要安装并启动就可以正常使用的,不用修改任何配置文件,
# 因为默认配置是非常完善而且正确的。这时我们考虑是 SELinux 引起的问题,可
# 以使用前面章节中关于日志查看的三个命令中的任意一个,来看看是否有关于 vsftpd 
# 的报错。命令如下:
# 分析SELinux的日志
audit2why < /var/log/audit/audit.log
:<<!
type-AVC msg-audit(1370428985.525:1146) : avc: denied {search } for pid-28408 comm-"vsftpd" name="home" dev=sda3    ino=1046530 scontext=unconfined_u:system_r:ftpd_t:s0-s0:c0.ol023
tcontext=system_u:object_r:home_root_t:s0 tclass=dir
# 有关于vsftpd的错.看来确实是SELinux引起的不能登陆 ...省略部分输出...
Was caused by:
One of the following booleans was set incorrectly.
Description:
Allow ftp servers to login to local users and read/write all files on the system, governed by DAC.
Allow access by executing:
# setsebool -P allow_ftpd_full_access 1
Description:
Allow ftp to read and write files in the user home directories
Allow access by executing:
#   setsebool -P ftp_home_dir 1
!

# 建议执行此命令,运行ftp读取和写入用户的家目录
# 既然给出了建议命令,我们就试试吧:
# 开启 ftp_home_dir 规则
setsebool -P ftp_home_dir 1
ftp 192.168.4.210
:<<!
Connected to 192.168.4.210 (192.168.4.210).2.0 (vsFTPd 2.2.2)
Name (192.168.4.210:root):user ←输入用户名
3.1 Please specify the password.
Password: ←输入密码
2.0 Login successful. ←登录成功
!
  • 以上例子学习了如何通过日志来解决因为规则没有开启而导致的 SELinux 问题。

关注公众号 “融码一生”,领取全套 PDF / 电子书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

融码一生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值