|
使用Fedora Core 8
默认情况下,Fedora 8是将SELinux起用了的,它集成了最新的SELinux技术,可载入的策略模块,她使得自定义,semanage和RBAC管理更容易。(semanage用于配置SELinux策略必须的元素,它不需要改变或重新从策略代码编译)
让我们从非常无趣的几乎是默认的安装开始,首先从http://fedoraproject.org/get-fedora下载Fedora-8-i386-DVD.iso,为了方便你可以将起重新命名为f8.img,在qemu下你可以将其作为一个cdrom镜像来安装Fedora 8:
dd if=/dev/zero of=f8.img bs=1G seek=10 count=1 qemu -hda f8.img -cdrom f8.iso -boot d -m 1024 -vnc 3 然后,启动VNCviewer: vncviewer :3
在VNC窗口里,选择默认的安装目录,但有一个例外:当询问安装什么包时,反选“办公和生产力”,选择“软件开发”。
当安装完毕后,重新启动后,创建一个非root用户,最后,当镜像准备好了后,用这个用户登陆。
打开一个浏览器窗口然后下载代码包,地址是http://www.ibm.com/developerworks/views/download.jsp?contentid=288774&filename=code_for_f8.tgz&method=http&locale=worldwide,将其保存到你的home目录~myuser/cash_register_f8.tgz。
从顶层左方的菜单“应用程序”开始,选择系统工具终端,然后输入su - ,回车再输入root用户的密码打开一个root shell,现在你已经为安装安全帐簿会计系统作好准备了。 (注意:如果系统太慢以至于不能忍受,你可以退出X-window,将系统运行在级别3下,可以敲入/sbin/init 3来实现,你也可以用/sbin/init 5来重新启动X-window重新进入级别5,在级别3下,用root登陆)
首先,强制一个后台进程yum退出,因为你可以手工运行yum: killall -9 yum-updatesd 紧接着安装SELinux策略模块开发工具包: yum install selinux-policy-devel.noarch 现在拷贝样例策略模块目录,拷贝现金帐簿策略文件到样例目录并编译它们:
cd /usr/share/selinux/
cp -r devel cash_register
cd cash_register
rm example.*
tar zxf ~myuser/cash_register_f8.tgz
mv register.py /bin
make
|
策略被编译成一个在文件cash_register.pp中的二进制策略模块,要载入它:
semodule -i cash_register.pp
下一步,创建用户mary和bob:
adduser bob
adduser mary
passwd bob
passwd mary
|
用户创建好了,设置RBAC以便他们登陆到合适的角色:
semanage user -a -R cashier_r -P cashier bob_u
semanage login -a -s bob_u bob
semanage user -a -R mgr_r -P mgr mary_u
semanage login -a -s mary_u mary
|
semanage用户管理命令创建了一个新的SELinux用户,SELinux用户不是Linux用户名,但是SELinux上下文的第一部分(id –Z返回的内容)是附加到一个进程和文件的,如果你在终端里敲入id –Z,将会看到system_u或unconfined_u,你的Linux用户名和SELinux用户名是可以相同的,他们不是单独联系的,但是,登陆进程为你的安全上下文使用Linux用户名来选择一个SELinux用户,与前面章节讨论的一样,SELinux用户是受与其有关联的角色限制的,同样,SELinux角色也受与其关联的SELinux域(类型)限制。
你正在使用semanage创建两个SELinux用户,mary_u和bob_u,同时,你也正在指定与其关联的角色,用户bob_u或许仅仅使用cashier_r角色,mary_u仅仅使用mgr_r角色,你还必须给用户home目录类型指定一个前缀。对mary而言,指定mgr,它将为她的home目录扩展为mgr_home_dir_t,并为那里面的文件扩大为mgr_home_t。
Semanage登陆命令把Linux用户名捆绑到SELinux用户上,我们指出mary以mary_u登陆,bob以bob_u登陆。
我们还需要为现金帐簿数据创建预备目录结构:
mkdir /data
mkdir /data/final
mkdir /data/cashier_r
mkdir /data/mgr_r
chmod 777 /data/cashier_r
chmod 777 /data/mgr_r
chmod 777 /data/final
|
最后,重新标记所有创建并安装的文件,同时包括为新用户创建的目录: fixfiles -f relabel /data /bin/register.py /home
注意此时我们在策略里并没有定义SELinux用户,相反地,semanage命令创建了用户并将其与合适的角色进行了关联。
如果你只希望bob以cashier_r角色,mary以mgr_r角色登陆的话,所有事情都很好,但是或许你需要用户charlie既能以cashier_r登陆,也能以mgr_r登陆,这就需要一点改动了,首先创建用户:
adduser charlie
passwd charlie
semanage user -a -R mgr_r -R cashier_r -P mgr charlie_u
semanage login -a -s charlie_u charlie
|
然后告诉PAM模块charlie想以什么角色登陆,首先打开/etc/pam.d/login并替换下面这一行:
session required pam_selinux.so open 为: session required pam_selinux.so open select_context
这将告诉pam_selinux.so模块用户将能选择一个默认的上下文登陆,紧接着告诉系统基于角色charlie_r的用户的默认类型,再次登陆时,Charlie将允许除默认角色(mgr_r,我们在semanage命令中列出来了)之外再指定一个角色,当你创建用户时可以使用-R标记指定任何一个角色,SELinux将使用需要的角色与其关联的默然类型,因此你必须为cashier_r指定一个默认的类型: echo "cashier_r:cashier_t" >> \ /etc/selinux/targeted/contexts/default_type
现在Charlie登陆到终端(按Ctrl-Alt-F2转到一个终端下或按前面叙述的进入级别3),他将被问及要以什么角色登陆,默认的将是mgr_r,但是他可以用cashier_r登陆,如果他这样做了,他将能作为一个出纳存储他自己的数据,但是由于我们已经定义了策略,他将不能读取他home目录下的任何文件。
注意register.py不能防止Charlie为他自己的现今帐簿存储数据,不管是作为经理还是出纳登陆,他都可以提交数据,当然,这样的一个改变将非常容易实施。 上一页 [1] [2] [3]
|