今天在使用quotacheck 命令进行磁盘配额的时候,发现不能正确执行,如图:
发现Permission denied... 而ls -l /tmp/sdb1其权限是755,何况我是 root ,排除文件本身权限
带来的问题.查看日志:
很明显, SELinux阻止了这次操作, 理论上,关了 SELinux就万事大吉了,命令是: setenforce 0 即可
但我不希望这么做,关闭 SELinux本身就会带来安全上的一些问题,所以, 我开始追根溯源,
探究更完美的解决方案.在 messages里很清楚的说明要我们执行:
sealert -l 6a1d5e10-5a8a-4b53-beff-f75ab9520ff7
执行后, 结果如图(part):
显然,标识为quota_t的context 是不能写入标识为dir 的文件里,需要更改 /tmp/sdb1的 context .
这里就需要根据具体实际情况来匹配不同的上下文,这里我选择 user_home_dir_t的 context, 执行如下命令:
semanage -a -t user_home_dir_t‘/tmp/sdb1’
restorecon -v‘/tmp/sdb1’
两条命令执行完毕之后再执行
quotacheck /tmp/sdb1
成功执行!
总结: SELinux总会在平时的生产工作中带来各种各样的麻烦,但为了安全这是有必要的, SELinux在一定程度上保护了系统,
至少在被入侵之后能够尽可能的降低攻击带来的后果.
因此, SELinux尽可能不要关了,出现类似的问题应该根据实际情况对 SELinux进行正确的配置才是解决问题的最好办法.