什么是安全上下文?
安全上下是一个访问控制属性,是selinux中的重要组成部分,在进行移动时,不会改变文件的属性和权限,而复制的过程会改变文件的属性,而安全上下文是一个访问的凭证,特定的文件被特定的程序访问,安全上下文会关闭系统认为不安全的功能,当安全上下文相匹配时才允许访问。
安全上下文的作用
vim /etc/sysconfig/selinux
把selinux改为enforcing模式,重启系统,开启安全上下文的功能。
我们可以看到,开启安全上下文之后,使用lftp登陆时只能看到在目录里创建的文件,而看不到移动到目录的文件。那么,如何临时关闭这个功能呢?
chcon -t public_content_t /home/student/ -R
ls -Zd /home/student/
此时,重/mnt移动过来的文件也能看到了。
也可以永久关闭这个功能。
semanage fcontext -a -t public_content_t '/home/student(/.*)?'
semanage fcontext -l | grep student
restorecon -FvvR /home/student/ ##刷新上下文关系
这样,就永久关闭安全上下文的功能,重启计算机之后也不会改变。
如何允许本地用户上传文件
开启selinux的强制功能之后,本地用户和匿名用户都是默认不能上传文件的,如果想要上传文件,必须打开相应开关。
getsebool -a | grep ftp ##查看开关是否打开
setsebool -P ftp_home_dir on ##打开开关
查看开关是否打开
打开开关
之后就可以进行本地用户的文件的上传了。
当然如过上传失败可以查看/etc/vsftpd/vsftpd.conf文件是否有参数未修改,也可以查看/var/log/messages中的日志寻找解决方案。
如何允许匿名用户上传文件
同样,匿名用户也是默认不能上传文件的,需要打开相应开关。
setsebool -P ftpd_anon_write on ##打开开关
semanage fcontext -a -t public_content_rw_t /var/ftp/pub
restorecon -RvvF /var/ftp/pub/
上传成功!
selinux有两种模式,可以用getenforce进行查看
用setenforce临时更改。
其中Enforcing表示强制模式,Permissive表示警告模式。