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 &

原文地址:https://www.cnblogs.com/djlsunshine/p/9735099.html