在自定义模块中,有没有办法允许文件/目录的所有权限?

在自定义模块中,有没有办法允许文件/目录的所有权限?

我编写了一个自定义 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

相关内容