基于文件的 SELinux 布尔值

基于文件的 SELinux 布尔值

我想得到努巴在我的 Debian 服务器上以 SELinux 强制模式运行。 Numba 构建于LLVMs jit 编译器。问题是,LLVM 坚持拥有内存,它同时是可写和可执行的。 A错误报告已经等待了很长时间,并且看不到修复的迹象。

SELinux 中有一个布尔变量,allow_execmem我可以在系统范围内设置它,以允许 LLVM 运行。不过,我不想有这样一个不安全的环境。

我想要做的是创建另一个布尔变量,以使用此权限集运行某一类程序,或者创建一个文件上下文,该文件上下文向某些可执行文件授予相同的权限。创建一个新的布尔值可能与httpd_execmem.

我看到的是,只有一组受限的权限,我可以在文件级别设置:

# ls /sys/fs/selinux/class/file/perms
追加audit_access 创建入口点 execmod 执行
execute_no_trans getattr ioctl 链接锁 mounton 打开  
quoteon 读取 relabelfrom relabelto 重命名 setattr swapon  
取消链接写入

因此,如果我正确地看到这一点,那么简单地创建一个类型并为某些用户添加权限是行不通的。有没有直接的方法可以做到这一点?我怎样才能创建一个新的布尔值httpd_execmem

答案1

似乎有效的是创建一个自己的模块,如下所示:

module llvm 1.0;

require {
        class process { execmem };
};
type llvm_t;    
allow llvm_t self:process execmem;

不幸的是,事实证明,我无法在主目录中的文件上设置任何类型,因为它们包含在 ecryptfs 挂载中。所以我最终允许整个不受限制的域与 execmem 一起使用。这比我所希望的更宽松,但仍然比允许系统上的所有进程 execmem 好得多。

module llvm 1.0;

require {
        type unconfined_t;
        class process { execmem };
};
allow unconfined_t self:process execmem;

相关内容