首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >compgen与SELinux

compgen与SELinux
EN

Unix & Linux用户
提问于 2017-10-01 10:01:43
回答 1查看 177关注 0票数 1

我有一个应用程序,浏览器外壳,我正在执行这个命令来获取可执行文件列表(列出来自$PATH的所有二进制文件)

代码语言:javascript
复制
compgen -A function -abck | sort | uniq

当我调用这个命令时,它返回可执行文件,但是我从SELinux中得到了很多错误,比如:

代码语言:javascript
复制
SELinux is preventing bash from getattr access on the file /usr/sbin/chronyd.

allow this access for now by executing:
# ausearch -c 'bash' --raw | audit2allow -M my-bash
# semodule -X 300 -i my-bash.pp

有什么办法可以防止这个错误吗?我希望我的应用程序工作在SELinux以及没有任何错误的盒子。

我可以更改PATH或执行一些命令来检查PATH是否可以在path变量中,这可能是/usr/sbin不能在PATH中。这样的命令存在吗?默认情况下,我有这样的路径:

代码语言:javascript
复制
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/games

这是sudo ausearch -c 'bash' --raw的结果

代码语言:javascript
复制
type=AVC msg=audit(1506851274.781:2921): avc:  denied  { getattr } for  pid=12298 comm="bash" path="/usr/sbin/xl2tpd" dev="sda1" ino=2239132 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:l2tpd_exec_t:s0 tclass=file permissive=1

对于| audit2why

代码语言:javascript
复制
type=AVC msg=audit(1506851274.781:2921): avc:  denied  { getattr } for  pid=12298 comm="bash" path="/usr/sbin/xl2tpd" dev="sda1" ino=2239132 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:l2tpd_exec_t:s0 tclass=file permissive=1

    Was caused by:
        Missing type enforcement (TE) allow rule.

        You can use audit2allow to generate a loadable module to allow this access.

是否有可能使我的代码与audit2allow一起工作?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-10-01 11:58:41

SELinux附带的默认策略旨在允许对每个应用程序进行典型的系统访问。与您的常规登录shell不同,您的"web“运行在web服务器上下文(httpd_t)中,其中应用了对web服务器的限制。您的web服务器也在允许的域中运行,这意味着策略规则不是强制执行的,而是日志记录的,因此您实际上不会在应用程序中看到任何拒绝权限的错误。

摆脱消息的最简单方法是遵循使用audit2allow的建议,在此之后,您可以将httpd_t设置为强制模式。audit2allow创建了一个新规则,允许为其生成拒绝消息的特定访问: httpd_t上下文允许getattr使用l2tpd_exec_t上下文文件的规则。

如果您计划继续使用来自web服务器的shell,则当您执行默认策略不允许的其他操作时(在httpd_t上下文中),您可能会看到更多的httpd_t权限错误。

理想情况下,您应该创建一个自定义策略,该策略具有一个明确的转换路径,该路径可以运行shell的(更多的)许可域。这允许您在不授予web服务器过度许可访问的情况下运行无限制的shell。如果它有用,则完全取决于如何从web服务器(脚本等)启动shell的详细信息。

如果您决定将httpd_t保持在允许的模式下,并且不需要任何日志消息,则可以将web服务器配置为在无限制的上下文中运行。无论哪种方式,对于web服务器来说,这实际上都与禁用SElinux一样。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/395437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档