我想得到努巴在我的 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;