Selinux的应用示例
笔者:刘洋
一、 建立用户关联
1、 在RHEL5中,默认的targeted策略中,只存在三个 selinux用户,分别是system_u、root、user_u,表示系统拥有都,管理员和其他所有用户,可以用以下命令列出selinux用户:
#semanage user -l
2、 为了使linux的普通用户和selinux 的user_u建立联系,执行以下的命令:
#useradd bob
#useradd tom
#useradd lisi
#semanage login –a bob
#semanage login –a tom
#semanage login –a lisi
3、 可以用以下命令查看结果:
#semanage login -l
可以发现用户bob tom lisi 已经与user_u建立了联系
二、 配置类别
1、在selinux中,类别有两种表示方法,一种是由系统识别的,使用的是一些代码;还有一种是可以供人阅读的字符串。需要一种机制把这两种方法联系起来,这个任务是由配置文件setrans.conf承担的,首先看一下当前的类别情况:
#chcat -L
2、可以看到目前有两种类别,现在在该文件中加入以下内容,表示要添加Marketing和Personnel两个类别,代号分别为s0:c1和s0:c2
#cd /etc/selinux/targeted
#vim setrans.conf
加入s0:c1=Marketing
S0:c2=Personnel
现执行chcat –L查看,可以发现这两个类别已经添加上了
3、 为了使添加的类别在系统中生效,需要重启服务:
#service mcstrans restart
三、 把类别分配给用户
1、 假设用户bob是业务部的,tom是人力资源部的,lisi是财务部的,执行以下命令表示把这两个类别分配给用户
#chcat –l -- +Marketing bob
#chcat –l -- +Personnel tom
#chcat -l -- +Marketing,+Personnel lisi
2、 用以下命令查看用户所分配到的类别:
#chcat -L -l bob
注意用户只有在下一次登录的时候才能生效
四、 把类别分配给文件
1、 假设用户bob在自己的主目录下创建一个文件tom.txt
#su - bob
$echo “tom.txt”>tom.txt
2、 用命令查看该文件初始的安全上下文
$ls -Z
此时文件还没有分到类别
3、用以下命令把Marketing 分给tom.txt文件
$chcat -- +Marketing tom.txt
注意tom自己 是不属于Marketing的
4、然后再查看tom.txt,按照selinux的规定tom是不能查看tom.txt 内容的,现在tom可以查看是因为现在的selinux处于随意的状态,此时会在/var/log/messages中留下记录
5、用root用户使用命令使selinux处于强制状态
#setenforce 1
Tom再查看时将不会成功