SELinux
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 &

浙公网安备 33010602011771号