我编写了一个自定义 selinux 模块,如下所示:
require {
type my_app_t;
type my_app_file_t;
class file { getattr lock open read write execute execute_no_trans ioctl append setattr };
class dir { write search getattr };
}
allow my_app_t my_app_file_t:file { append setattr write getattr execute read open execute_no_trans lock ioctl};
allow my_app_t my_app_file_t:dir { write search getattr};
这大部分工作正常,但我厌倦了每次在audit.log中出现新的拒绝时都添加新的权限。有没有什么方法可以只允许给定上下文的文件/目录的所有权限?例如:
require {
type my_app_t;
type my_app_file_t;
class file { * };
class dir { * };
}
allow my_app_t my_app_file_t:file { * };
allow my_app_t my_app_file_t:dir { * };
答案1
您应该考虑使用参考策略宏。使用参考策略宏,然后您可以使用manage_files_pattern
宏来允许所有访问,例如:
manage_files_pattern(my_app_t, my_app_file_t, my_app_file_t)
还有宏对于其他常用的模式,位于/policy/support
在参考政策来源中。
如果my_app_t
由参考策略模块定义,则可能已经存在一个接口,您可以使用该接口来允许访问。接口记录在参考策略 API 文档(由selinux-policy-doc
包提供)中,也可以使用在线的(但是有点过时了)。
构建参考策略模块的最简单方法是使用selinux-policy-devel
发行版的 SELinux 策略开发包(或类似包)中的 makefile,例如:make -f /usr/share/selinux/devel/Makefile my_app.pp
。