SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。
查看一个文件的上下文
查看进程
# ps axZ | grep httpd
查看目录的上下文
# ls -ldZ /var/www/html/
创建一个目录
# mkdir /www
把www重定向到目录www下的index.html的文件里面
# echo www > /www/index.html
查看
# ls /www/
创建软连接
# ln -s /www www
关闭防火墙
访问主机名IP
给/www添加权限
重启服务
# systemctl restart httpd
访问/www找不到
查看进程
# ps axZ | grep httpd
查看两个文件的上下文
# ls -ldZ /var/www/html/
# ls -ldZ /www
修改/www的上下文
# chcon -R -t httpd_sys_content_t /www/
# chcon -R --reference=/var/www/html /www
再次访问,可以访问了。
以上都是临时修改
重置上下文
# restorecon -R /www/
查看系统里的所有上下文
# semanage fcontext -l
查看具体的某个用grep
# semanage fcontext -l | grep '/var/www/html/'
添加上下文-a
# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
删除上下文-d
# semanage fcontext -d -t httpd_sys_content_t '/www(/.*)?'
通用的上下文
# chcon -R -t public_content_t /www/
添加Apache的端口
# vi /etc/httpd/conf/httpd.conf
添加Apache的端口808
重启失败
查看所有端口的上下文
#semanage port -l
查看80端口的上下文
# semanage port -l | grep '<80>'
添加端口
# semanage port -a -t http_port_t -p tcp 808
重启httpd服务无报错
删除端口
# semanage port -d -t http_port_t -p tcp 808
setenforce临时生效
查看selinux模式
# getenforce
修改配置文件临时生效
# vi /etc/sysconfig/selinux
两个配置文件,修改哪一个都可以
如果搭建了一个服务,然后在客户端上往里面写东西,写不进去,
应该从以下三个方面检查:
1、配置文件里面是否允许写
2、文件系统是否允许写
3、从selinux进行检查(上下文|布尔值)
安装服务
#yum install vsftpd ftp -y
重启服务
#systemctl restart vsftpd
在普通用户下创建几个文件
$ touch aa bb cc dd ee ff
匿名用户登录ftp
上传文件,没有成功
修改配置文件
# vi /etc/vsftpd/vsftpd.conf
允许匿名用户上传,写入
重启服务
#systemctl restart vsftpd
修改配置文件之后还是不能上传
修改权限
查看权限
# ls /var/ftp/ -ld
创建一个目录,赋予权限、
# chown ftp.ftp xx/
再次上传,还是失败
关闭selinux
# setenforce 0
上传成功
布尔值
查看系统中所有的布尔值
# getsebool -a
查看ftp的布尔值
# getsebool -a | grep ^ftp
开启布尔值
# setsebool ftpd_anon_write 1 or on
查看
# getsebool -a | grep ftpd_anon_write
关闭布尔值
# setsebool ftpd_anon_write 0 or off
设置成永久生效
# setsebool -P ftpd_anon_write on
图形化界面设置selinux
查看需要安装的图形化包
# yum whatprovides */system-config-selinux
安装
# yum install policycoreutils-gui-2.2.5-11.el7.x86_64 -y
开启selinux图形化界面
# system-config-selinux &