现在来作点有意思的事情! 我们将会建立一个 SE Linux 用户并分配给他一个角色,然后为用户设定默认的安全上下文。 在旧的SE Linux环境下, 封装程序的建立用 vipw (svipw)来设置,比如, useradd (suseradd), passwd (spasswd), chfn (schfn) 等, 在新的 SE Linux环境下, 这些程序有其它的名称。
5.1 建立一个新的用户
我们现在建立一个新用户。我们叫它setest。
转换到 sysadm_r:sysadm_t 角色:用户。 现在用 useradd 命令添加用户setest:
root@kaos:~# id
uid=0(root) gid=0(root) groups=0(root) context=faye:sysadm_r:sysadm_t sid=398
运行id命令检查确认你的 uid 是 0 并且你的身份是在sysadm_r:sysadm_t 角色:域中。 如果你的uid是你其它似有用户的, 请先用 su 命令转换乘 root 身份, 然后运行newrole -r 命令。
root@kaos:~# useradd -c "SE Linux test user" -m -d /home/setest -g users -s /bin/bash -u 1005 setest
root@kaos:~# finger setest
Login: setest Name: SE Linux test user
Directory: /home/setest Shell: /bin/bash
Never logged in.
No mail.
No Plan.
root@kaos:~# passwd setest
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
setest 用户现在已经添加完了。
5.2 给用户分配角色和申请改变
现在我们想给setest用户设置一个角色。 我们希望他可以访问user_r 角色。 需要配置的文件是/etc/selinux/users ,你现在可以用你最喜欢的编辑器打开他,并先浏览一遍。
在文件的结尾添加如下内容:
user setest roles { user_r };
这行的意思是允许 setest 用户进入user_r 角色。 如果你还希望 setest 用户还可以访问sysadm_r 角色, 你可以添加:
user setest roles { user_r sysadm_r };
我们现在要让我们的设置生效,所以我们可以在sysadm_r:sysadm_t 角色:域的情况下运行以下命令:
make -C /etc/selinux load
这将花费一段时间,这段时间里会创建策略的数据文件并用gzip 压缩。如果命令成功执行并退出, 你将看到以下提示:
Success
touch tmp/load
make: Lea">ving directory `/usr/share/selinux/policy/current'
在默认的角色user_r下的用户是不允许向 /etc/selinux/users 文件添加内容的。如果你想要他们可以使用 user_r 之外的一个用户角色或者让他们能够改变他们自己的密码,就要他们加入这一个文件,或在 SE Linux 的记录信息的适当部分添加他们的用户名。
现在我们来设置一个缺省的安全上下文。