我编写了一个服务/单个二进制应用程序,试图在Fedora 24上运行,它使用systemd运行,二进制文件已部署到 /srv/bot
我编写的此服务/应用程序需要在该目录中创建/打开/读取和重命名文件。
我首先开始基于SELinux创建新策略:允许进程在特定目录中创建任何文件
但是当我的应用需要重命名时,输出将显示警告:
#!!!! WARNING: 'var_t' is a base type.
allow init_t var_t:file rename;
我四处搜寻,发现我应该使用比基本类型更具体的SELinux标签,但是所有在线示例都向您展示了httpd / nginx / etc中的现有标签。
有没有一种方法可以仅为我自己的应用程序创建自定义标签?
我的想法是创建类似myapp_var_t的东西,使用
semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'
restorecon -R -v /srv/bot
和.pp
将使用此自定义类型的自定义文件
如果有更好的解决方法,那也可以。
谢谢
更新资料
经过更多搜索之后,我认为我要执行的操作的正确术语是创建新词types
,这使我进入了
https://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3036916
基本上说,运行
sepolgen /path/to/binary
而且我能够得到一个模板,然后将其编译成pp文件并加载,仍然会出现一些错误,但是看起来我已经接近要执行的操作了。
如果我可以使用,我会更新这篇文章