1.什么是selinux
内核级的加强型火墙
2.作用
控制哪些用户对哪些文件具有哪些访问权限,若要访问文件,必须具有普通访问权限和selinux访问权限
3.模式
Disabled | 不警告不拒绝 |
---|---|
Enforcing | 1 强制不可访问 |
Permissive | 0 警告但可以访问 |
getenforce可以查看selinux的状态
4.查看文件的安全上下文
public_content为安全上下文
5.设置selinux的状态为Enforcing
在/mnt下创建一个file,将其移动到/var/ftp下
在另外一台主机上匿名用户登陆,不能看到file
6.设置selinux的状态为Permissive
在另外一台主机上匿名用户登陆,就能看到file
7.将selinux的状态设置为Enforcing
若要访问文件file就需要改变安全上下文
临时改变安全上下文
更改后就可以访问文件file
8.永久更改安全上下文
新建/westos目录,在此目录下建立文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
修改匿名用户的家目录
重启服务
此时匿名用户登陆无法查看/westos文件里的内容
[root@localhost ~]# semanage fcontext -a -t public_content_t ‘/westos(/.*)?’
##永久更改安全上下文设定
[root@localhost ~]# semanage fcontext -l |grep /westos/ ##查看
[root@localhost ~]# restorecon -FvvR /westos ##刷新
此时查看/westos目录的安全设定发现已经被更改
匿名用户登陆查看
注:bool让系统的程序加上开关
bool值 布尔值
文件上的标签和所能访问的服务上的标签不一致则不能访问
9.设置本地用户上传文件
用本地用户连接服务器,上传文件,报错失败
查看ftp相关功能的状态,本地用户上传文件的功能没有开启
开启本地用胡上传文件的功能
本地用户连接并上传成功
10.设置匿名用户可写
匿名用户登陆,上传文件,上传失败,匿名用户默认不可写
修改/pub的权限
更改配置文件
vim /etc/vsftpd/vsftpd.conf
改为匿名用户可写
再次用匿名用户登陆,仍然不能上传
原因是未打开匿名用户可写开关
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> on
ftpd_anon_write --> off ##匿名用户可写
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@localhost ~]# setsebool -P ftpd_anon_write on
再次匿名用户登陆上传仍失败
原因是目录不可写
修改目录可写,再次上传文件
上传成功
11.查看报错
1.删除/var/ftp/pub目录,再次新建目录并更改权限和所有组
清空日志
var/log/audit/audit.log
匿名用户登陆并上传文件
查看日志
cat var/log/audit/audit.log
能够看到报错
cat /var/log/message
其中就有解决办法
日常遇到问题也可以查看日志,寻找解决办法。