轮廓(profile)的作用是配置一些Tomoyo参数。先看一个例子:
轮廓的伪文件接口是/sys/kernel/security/tomoyo/profile,其格式是:第1行是轮廓的版本号其后各行开始于一个代表轮廓记录号的数字,随后是一个“-”,之后是记录的子类型,最后是对应的值。上面文件中第2到第4行共同构成了一个记录号为0的轮廓记录。
下面先看一下轮廓记录子类型 [18] :
(1)COMMENT
这部分就是一个描述性字符串,类似代码中的注释。比如
COMMENT=-----Learning Mode-----
上例表示这条轮廓记录让系统工作在Tomoyo学习模式中
(2)PREFERENCE
这部分包含两个子项,见表9-1。
表9-1 轮廓的PREFERENCE
这两个选项都和内核分配给Tomoyo的内存相关
3)CONFIG
这部分包含三个子部分,见表9-2。
表9-2 轮廓的CONFIG
其中mode最重要,它的取值的含义是:
●“disabled”表示Tomoyo不起作用。
●“learning”表示遇到不符合策略的访问请求时,Tomoyo不会拒绝访问,但会将访问请
求转换为策略加入内核的策略表中。
●“permissive”表示遇到不符合策略的访问请求时,Tomoyo不会拒绝,但是也不会将其
放入策略中。
●“enforcing”表示遇到不符合策略的访问请求时,Tomoyo会拒绝其访问。
“disabled”和“permissive”的区别在于,permissive会产生日志,disabled不会,也就是说在disabled模式下,grant_log和reject_log这两个参数没有作用。举个例子:(www.xing528.com)
上述轮廓语句的意思是:这条轮廓记录让系统工作于学习模式,符合策略的访问不会产生日志记录,不符合策略的访问会产生日志记录。
神奇的是,“CONFIG”可以被用来实现细粒度控制,见表9-3。
表9-3 轮廓CONFIG的细粒度
举个例子:
文件相关的操作处于学习模式,网络相关的操作处于强制模式
还可以更细,对具体操作规定模式,举个例子:
文件的getattr操作处于disabled模式,文件的其他操作处于强制模式
综合起来看一个轮廓的例子:
这个轮廓文件定义了两个记录。其中0号记录占了3行,1号记录占了6行。1号记录规定对文件的getattr操作,Tomoyo工作于disabled模式;对文件的其他操作,Tomoyo工作于learning模式;对network的所有操作,Tomoyo工作于enforcing模式;对其他操作,Tomoyo工作于permissive模式。
1.轮廓和策略
看一下前面举过的例子:
策略文件定义了系统中所有域的策略。每个域的策略的格式是:第一行是域的标识,也就是进程的执行历史;第二行是域使用的轮廓记录,不同的域可以使用不同的轮廓。这种设计又从另一个角度增加了Tomoyo的灵活性。
2.轮廓和名字空间
结合名字空间,轮廓的定义可以有些变化,它的记录各部分的头部可以标记上名字空间若没有标记则认为属于“<kernel>”。下面举个例子:
也就是说,轮廓记录号和名字空间有关。上例中有两个0号记录,一个属于“<kernel>”名字空间,另一个属于“</usr/sbin/httpd>”名字空间。下面看与之相关的domain_policy的内容:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。