semanage设置selinux文件上下文的问题

semanage设置selinux文件上下文需使用绝对路径


SELinux中的安全上下文(context)是策略和规则检查的对象,可以通过 chcon命令或者 semanage命令修改文件的安全上下文,但是这两者是有区别的。chcon的修改为临时的,立即生效,即修改操作作用于内存;semanage修改是永久性的,即修改操作作用于文件,但不会立即生效,需要通过 restorecon命令还原context的默认值或者重启系统生效。
使用semanage永久修改安全上下文的过程中初学者容易犯一个错误,即对被修改对象(文件/目录)使用相对路径。这在修改过程中不会有任何出错提示,但是修改过后用restorecon还原安全上下文的默认设置后,发现上下文并不会有任何改动。

[root@server1 ~]# ll -Zd /www #查看www目录的上下文
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /www
[root@server1 ~]# cd /
[root@server1 /]# semanage fcontext -a -t public_content_t www   #www使用相对路径。
[root@server1 /]# restorecon -R /www #重新读取www目录的上下文配置
[root@server1 /]# ll -dZ /www
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /www #发现上下文并没有变化
[root@server1 /]# 

把修改对象换为绝对路径:

[root@server1 /]# semanage fcontext -a -t public_content_t   /www   #www使用的绝对路径
[root@server1 /]# restorecon -R /www
[root@server1 /]# ll -dZ /www
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /www #修改成功

这下没有问题了。究其原因是因为semanage在修改安全上下文过程中会将文件/目录和安全上下文值之间做一个映射记录,所以在使用restorecon还原的时候实际上是去将记录值读出来。如果用相对路径如www,就会添加一条类似www : unconfined_u:object_r:public_content_t:s0 这样的记录,这样得记录添加进相应的文件当然没问题,但是在还原的时候将不知道这个www是哪儿的,相当于是一条无效记录了。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值