第5章 SELinux
getenforce 查看SELinux状态 Enforcing是开着,Permissive关了
vim /etc/selinux/config SELinux的配置文件
ll /etc/sysconfig/selinux 连接文件也指到SELinux的配置文件
Enforcing 默认系统起来强制打开
Permissive 不相当于关闭,只是不用规则限制你,但是会记录
disabled 不读取安全策略
这些状态都是系统启动后再设置的,因为SELinux是在内核里直接启动的
vim /boot/grub2/grub.cfg 去内核传参数直接就启动给禁用了,在linux16 最后加个SELinux=0
/////////////////////////////
安装apache
echo html > /var/www/html/index.html 测试页面
systemctl restart httpd 重启
mkdir /local 别名
echo qintest > /local/index.html
ln -s /local/ /var/www/html/soft 软连接
这时候打开firefox 自己是肯定能访问192.168.100.1的,但是2号机器就不行了,只能ping通
firewall-cmd --permanent --add-service=http 常规添加服务
firewall-cmd --reload 重读配置
好了2号机器就能访问192.168.100.1了
然后访问http://192.168.100.1/soft/ 发现1号机自己和2号机都无法访问,被拒绝了
但是你setenforce 0 把 SELinux关了就可以访问了。
因为这个local地下的文件没有试别出来,不是网页类型的使用selinux个禁止访问了
ll -Z /var/www/ 看看网页的类型
chcon -R -t httpd_sys_script_exec_t /local/ 方法1 对/local/文件夹下的所有文件做递归,修改成httpd_sys_script_exec_t类型
改了类型就可以访问http://192.168.100.1/soft/ 了
chcon -R --reference /var/www/ /local/ 方法2 参考/var/www/ 目录上下文,把/local/改的一样
semanage fcontext -a -t httpd_sys_content_t '/local(/.*)?' 方法3 直接往内核修改local底下的文件类型(永久生效)
man semanage-fcontext 偷懒不会写怎么办就man一下,然后/example一下然后复制改一下就好了
restorecon -FRv /local 还得还原一下或者重启一下才生效
////////////////端口上下文
装apache,开防火墙,开selinux
echo 80 > /var/www/html/index.html 测试页
mkdir /var/www/8899
echo 8899 > /var/www/8899/index.html 测试页
vim /etc/httpd/conf.d/0.conf 配置一下
vim /etc/httpd/conf.d/8899.conf 配置一下
vim /etc/httpd/conf/httpd.conf 主配置文件加个端口8899监听
systemctl restart httpd 别忘了重启服务,然后发现有问题,因为开着selinux
semanage port -l 看端口
semanage port -l | grep http 查看http端口,因为端口没有8899所以出错了
semanage port -a -t http_port_t -p tcp 8899 往规则里加入tcp 8899端口
这样子就没问题了
这样子本机是可以访问之前的80和8899测试页面的,别的机器肯定不行
firewall-cmd --permanent --add-service=http 加服务
firewall-cmd --reload 重新读配置
这样子操作之后别的机器可以访问192.168.10.1但是不能访问8899端口的
firewall-cmd --permanent --add-port=8899/tcp 添加端口
firewall-cmd --reload 重新读配置
好了别的机器也可以访问8899了
//////////////////////////////布尔值
getsebool -a
system-config-selinux 图形化selinux,但是没有装
yum provides system-config-selinux 可以查看用什么包可以装这服务
直接复制安装 yum install -y policycoreutils-gui
这样子system-config-selinux就可以打开selinux图形化界面辣
只要是off就不能写,只能读
setsebool samba_export_all_rw on 这样子就打开了samba_export_all_rw,临时生效
setsebool -P samba_export_all_rw on 加了-P以后就永久生效了
如果发现操作中出现了关于布尔值的问题,就把这个服务布尔值全on一个一个试,比直接关selinux好