一、selinux简介
1.selinux是什么
SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念
2.selinux的状态
状态 解释
Enforcing 警告并拒绝
Permissive 警告并允许
Disabled 关闭
注:产生的警告信息会保存在/var/log/message或/var/log/audit/audit.log
查看selinux状态命令
getenforce ##selinux状态
更改selinux的状态命令
setenforce 1 ##更改selinux的状态为Enforcing
setenforce 0 ##更改selinux的状态为Permissive
注:
(1)当selinux关闭时,该命令无法使用
(2)使用该命令只能切换开启时的两种状态,即Enforcing和Permissive
(3)使用该命令切换selinux状态时,不需要重启电脑
3.selinux帮助解决方案
系统中必须有setroubleshoot-server.x86_64软件
lftp报错后,若是与selinux有关的报错解决方案会生成在/var/log/message
cat /var/log/message ##查看
4.配置环境
vim /etc/sysconfig/selinux ##开启selinux
reboot ##重启电脑
二、selinux的使用
1.文件安全上下文对ftp服务的影响
(1)什么是安全上下文
ls -Z file ##查看文件安全上下文
public_content_t 为安全上下文
(2)安全上下文的作用
例如:在seliunx状态为Enforcing下, 如果安全上下文不一样 客户端是看不见文件的!
(3)更改文件安全上下文
临时更改
在重启selinux后,会恢复为原来目录的安全上下文
chcon -t public_content_t /var/ftp/file1 ##更改file1的安全上下文为public_content_t
永久更改
semanage fcontext -l | grep /redhat ##查看该文件是否有默认的安全上下文
semanage fcontext -a -t public_content_t '/rethat(/.*)?' ##永久更改目录安全上下文为public_content_t,使用该命令后须同步
restorecon -FvvR /redhat/ ##同步该目录安全上下文
2.本地用户上传权限的开启
getsebool -a | grep ftp ##查看关于ftp的所有sebool值
setsebool -P ftp_home_dir on ##打开selinux本地用户上传开关,-P为永久开启
chmod 775 /home/*
chgrp ftp /home/*
3.匿名用户上传权限的开启
vim /etc/vsftpd/vsftpd.conf ##在配置文件中打开匿名用户上传参数
setsebool -P ftpd_anon_write on ##打开selinux匿名用户上传开关,-P为永久开启
semanage fcontext -a -t public_content_rw_t /var/ftp/pub ##在安全上下文中加入可写的权限说明
restorecon -FvvR /var/ftp/pub/ ##同步该目录安全上下文
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub