- 论坛徽章:
- 3
|
首先你可以假设你有一个程序 1)这个应用程序默认存放在那个目录下 ,我给这个文件打什么样的Label,执行这个程序后会切换到哪个域 2) 这个程序执行时会不会Fork,能不能接收信号。如果会fork,能接收信号,就必须写授权语句授权 3)这个应用程序能不能卸载驱动,能不能挂载文件系统等等.
每一步都需要考虑。我有一次写一个授权应用程序执行的策略模块,就因为没有授权指定域访问/proc/<pid>文件的权限,结果执行程序总是提示权限拒绝。
其次确定你selinux要用在哪里?是在嵌入式产品上,还是在桌面环境上。
如果是桌面环境,就直接学习selinux社区开发的reference policy。可以说社区已经提供了大部分应用程序的SElinux策略,你所做的就是为自己需要的应用程序加一个新的模块,只要调用其他模块提供的接口。可实现简单策略模块如1)只有A用户能够打开文件C,只有B用户能打开文件D。A用户执行的进程能够访问文件C,B用户打开的进程能够访问D。 或者2)所有用户都可以执行程序C,但执行后的进程不继承用户的域,自动切换到特定域,以此限制程序的权限 。3)限制进程加载卸载驱动。相关资料参考Dan walsh的博客, Reference policy的官网,RP手册。
如果是嵌入式环境,在你动手写策略模块之前,则要学习怎么移植selinux到目标平台中,然后考虑是裁剪NSA的Example Policy还是裁剪Reference policy来满足嵌入式环境的基本需求。基本可以说要靠自己动手来丰衣足食。SEAndroid和大部分嵌入式设备都使用NSA的Example policy来进行裁剪。相关资料可参考 Security Enhanced Linux on Embedded Systems, 或者 SEAndroid的相关文档。
|
评分
-
查看全部评分
|