博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 文件添加标签,如何创建自定义SELinux标签
阅读量:5009 次
发布时间:2019-06-12

本文共 1734 字,大约阅读时间需要 5 分钟。

我写了一个服务/单个二进制应用程序,我试图在Fedora 24上运行,它运行使用systemd,二进制文件部署到/ srv / bot

我编写的这个服务/应用程序需要在此目录中创建/打开/读取和重命名文件.

但是当我的应用程序需要重命名时,输出有一个警告:

#!!!! WARNING: 'var_t' is a base type.

allow init_t var_t:file rename;

我google了一下,我发现我应该使用比基本类型更具体的SELinux标签,但在线的所有示例都显示了httpd / nginx / etc中的现有标签.

有没有办法可以为我自己的应用创建自定义标签?

我的想法是创建类似myapp_var_t的东西,使用

semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'

restorecon -R -v /srv/bot

以及将使用此自定义类型的自定义.pp文件

如果有更好的方法来解决它,那也是有效的.

谢谢

更新

基本上说,跑

sepolgen /path/to/binary

我能够得到一个模板,然后我可以编译成一个pp文件并加载,仍然会得到一些错误,但看起来我更接近我想做的事情.

如果我让它工作,我会更新这篇文章

解决方法:

以跑步为出发点

sepolgen /path/to/binary

这给你:

app.fc

app.sh

app.if

app.spec

app.te

要创建一个新的SELinux文件上下文以应用于保存程序/守护程序将修改的文件的父目录,您可以编辑app.te文件并添加:

type app_var_t;

files_type(app_var_t)

第一行声明了新类型,第二行调用了一个执行魔术并使其成为文件类型的宏(原来你不能在文件或目录上使用进程上下文行app_exec_t),有关不同的更多信息,请参阅“SELinux Types Revisited”类型

一旦声明了类型,你需要告诉SELinux你的应用程序可以使用它,在我添加的情况下

allow app_t app_var_t:dir { add_name remove_name write search};

allow app_t app_var_t:file { unlink create open rename write read };

这两行基本上说,允许作为我的应用程序域的app_t类型,使用上下文app_var_t编写/搜索/ etc目录,并允许它使用上下文app_var_t创建/打开/删除/ etc文件

拼图的最后一部分是以某种方式告诉SELinux哪个文件夹和文件应该获得每种类型,你通过编辑app.fc文件(fc =>文件上下文)来做到这一点

在我的情况下,这个文件只有两行:

/srv/bot/app -- gen_context(system_u:object_r:app_exec_t,s0)

/srv/bot(/.*)? gen_context(system_u:object_r:app_var_t,s0)

第一行直接指向我在服务器上部署的二进制文件,因此这个获取app_exec_t上下文.

第二行意味着:

Apply app_var_t to the directory /srv/bot and also to all files inside the dir /srv/bot

注意第一行如何 – 在路径和gen_context调用之间. – 表示,仅适用于文件.在第二种情况下,我们没有任何东西(只是空格),这意味着,适用于所有匹配的目录和文件,这是我想要的,另一种选择是-d只应用目录.

我现在有一个工作策略,我可以使用自定义策略部署我的应用程序,一切正常. (我的策略在.te文件中有很多条目,但它超出了这个问题的范围.)

额外的阅读材料帮助我找到了这个解决方案:

标签:selinux,linux,security,fedora

来源: https://codeday.me/bug/20190810/1637575.html

转载地址:http://qmggp.baihongyu.com/

你可能感兴趣的文章
Position is everything?(css定位学习的一些心得)(一)
查看>>
如何提高编程水平
查看>>
Jquery Uploadify3.21.与2.1版本 使用中存在的问题--记录三
查看>>
Linux查看进程的内存占用情况 分类: ubuntu ...
查看>>
[BZOJ 2818]Gcd
查看>>
FORM值传递与地址传递
查看>>
(译)yaml快速教程
查看>>
C:大数相加
查看>>
160. Intersection of Two Linked Lists
查看>>
人生苦短,我用python-- Day11
查看>>
JAVA Bean
查看>>
ehcache memcache redis 三大缓存男高音_转
查看>>
curd_3
查看>>
百度地图API示例之设置地图显示范围
查看>>
Java构造方法、重载及垃圾回收
查看>>
.Net Core AES加密解密
查看>>
Spring Quartz实现任务调度
查看>>
python | 桶排序、冒泡排序、选择排序、去重
查看>>
两个Html页面之间值得传递
查看>>
EasyUI datagrid 的多条件查询
查看>>