注:此处讨论的代码示例使用 SELinux 处理所有访问控制需求。我们的示例允许系统中的所有用户对 /data 下的所有文件和目录拥有完全的写访问权。但是,在理想部署中,您将需要应用一些 DAC 权限来实现进一步防御。所有经理有时候希望在 /data/mgr_r/bob/ 和 /data/final/bob/ 下创建文件,包括精确地使用 UNIX® 组权限。但是为了简单起见,让我们完全依赖 SELinux 来实施访问控制。首先,确保经理和收银员只能通过 register.py 程序访问 /data 下的任何文件。例如,Bob 将登录到 cashier_t 类型中的 cashier_r 角色。但是 cashier_t 无法读取 /data 下的数据。为此,他必须进入 cashier_register_t 类型,而他只能通过执行 /bin/register.py 来进入该类型。类似地,Mary 将登录到 mgr_t 类型中的 mgr_r 角色,但是必须执行 /bin/register.py 来进入 mgr_register_t,才能拥有对 /data 下数据的任何访问权。
1 | mount -oloop,offset=32256 -t ext2 gentoo.img /mnt |
1 2 | tar zxf selinuxregister.tgz -C /mnt umount /mnt |
1 2 | qemu -hda gentoo.img -m 512 -vnc :3 -kernel bzImage \ -append "ro root=/dev/hda1 -p" |
1 2 3 4 5 6 | cd /usr/src checkpolicy -c 19 -o policy.bin policy.conf cp policy.bin /etc/ rc-update add selinuxenforce default cp /etc/pam.d/system-auth /etc/pam.d/system-auth.orig cp /etc/pam.d/system-auth.new /etc/pam.d/system-auth |
1 2 3 4 5 6 7 8 9 10 11 12 | adduser mary passwd mary (passwd) mkdir /home/mary adduser boss passwd boss (passwd) mkdir /home/boss adduser bob passwd bob (passwd) mkdir /home/bob |
1 2 3 4 5 | mkdir /data mkdir /data/cashier_r mkdir /data/mgr_r mkdir /data/final chmod 777 /data/* |
1 2 | setfiles /usr/src/filecontexts / poweroff |
1 2 | qemu -hda gentoo.img -m 512 -vnc :3 -kernel bzImage \ -append "ro root=/dev/hda1" |
1 | ls /data |
1 | register bob 25.22 |
1 | register bob commit |
1 | register bob commit |
1 2 | register bob 27 register bob commit |
1 | cat /data/cashier_r/bob/(day) |
1 2 | register bob 25.22 register bob commit |
1 | cat /data/final/bob/(day) |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |