一、selinux的功能
selinux是内核级的加强型火墙。
当selinux开启后,会给系统中的每一个文件以及每一个程序加载安全上下文,具有特定安全上下文的程序只能访问特定安全上下文的文件
二、selinux的状态
selinux有三种状态:
disabled | 关闭状态 |
---|---|
enforcing | 强制状态 |
permissive | 警告状态 |
可以使用命令getenforce
来查看系统当前selinux的状态
可以使用命令setenforce来设置selinux的临时状态
setenforce 0 | 警告状态 |
---|---|
setenforce 1 | 强制状态 |
一个小测试
当服务端系统中的selinux是关闭状态时
在/mnt中建立文件并将这个文件移动到/var/ftp中
在客户端登录ftp服务可以看到移动来的文件
用命令查看文件的安全上下文属性为空
用命令查看程序的安全上下文属性为空
将selinux服务开启
在配置文件/etc/sysconfig/selinux中更改selinux的状态,注意:更改后需要重启系统
再次重复上述操作
在/mnt下建立文件file1查看文件安全上下文并将文件移动到/var/ftp。并且查看vsftpd程序的安全上下文
在客户端测试能不能看到移动来的文件file1,结果显示不能,因为文件file1和程序的安全上下文不一致
三、安全上下文
1、临时安全上下文
查看/var/ftp目录下文件的属性,file1的安全上下文为mnt_t,而其余文件都为public_content_t
临时更改文件file1的安全上下文
更改完成后在客户端可以看到文件file1
又一个小测试
建立目录/mnt/wang以及文件/mnt/file,查看他们的安全上下文,用临时更改安全上下文的方式将/mnt目录以及下属的所有文件的安全上下文都改为public_content_t,将selinux改为disabled重启系统,再将selinux改为enforcing重启系统,发现/mnt下的文件安全上下文又改回来了,证明通过chcon来更改安全上下文的方式是临时的
2、永久更改文件或目录的安全上下文
步骤1:建立目录/text/hh{1…3},并且查看/text的内核安全上下文列表发现没有信息,再查看/var/ftp目录显示是有信息的
步骤2:在内核安全上下文列表中永久更改/text的安全上下文。其中'(/.*)?'
是指将目录以及目录中包含的所有内容的安全上下文都进行修改,包括在此目录中新建的文件以及目录
步骤3:在更改了内核安全信息列表以后只是添加了信息,当前是不生效的,需要重新刷新文件安全上下文
四、SEBOOL
sebool是selinux对服务功能添加的开关
目前系统中selinux的状态为enforcing,在vsftpd配置文件中设定匿名用户可以登录以及匿名用户可以上传文件
将/var/ftp/pub的权限改为777并且将其安全上下文改为可写的
匿名用户登录并上传文件,结果显示文件权限限制
出现上述结果是由于在selinux中对匿名用户的写功能的开关是关闭的
将写功能打开再次上传文件,结果显示可以成功上传
五、selinux的排错
排错用到的命令为sealert -a /var/log/audit/audit.log
建立文件/mnt/yyqx并移动到/var/ftp/中,但是匿名用户登陆时不显示文件yyqx。
对上述错误原因进行盘查会给出出错原因以及更改方案