我无法找到关于什么命令的信息,大概是来自setools
,我应该使用它来查找文件系统上由 SELinux 标记为特定文件上下文 ( fcontext
) 的所有文件。
此刻我可以手动列出文件及其各自的fcontext
文件/etc/selinux/targeted/contexts/files
,然后是我想查看的grep
具体内容。fcontext
[root@FedPadSSD files]# cat file_contexts |grep ifconfig_exec_t
/bin/ip -- system_u:object_r:ifconfig_exec_t:s0
/sbin/ip -- system_u:object_r:ifconfig_exec_t:s0
/sbin/tc -- system_u:object_r:ifconfig_exec_t:s0
/usr/bin/ip -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ip -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/tc -- system_u:object_r:ifconfig_exec_t:s0
/sbin/ethtool -- system_u:object_r:ifconfig_exec_t:s0
/sbin/ifconfig -- system_u:object_r:ifconfig_exec_t:s0
/sbin/iwconfig -- system_u:object_r:ifconfig_exec_t:s0
/sbin/mii-tool -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ethtool -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ifconfig -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/iwconfig -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/mii-tool -- system_u:object_r:ifconfig_exec_t:s0
/sbin/ipx_configure -- system_u:object_r:ifconfig_exec_t:s0
/sbin/ipx_interface -- system_u:object_r:ifconfig_exec_t:s0
/sbin/ipx_internal_net -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ipx_configure -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ipx_interface -- system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ipx_internal_net -- system_u:object_r:ifconfig_exec_t:s0
这样做的问题是,大多数时候,当你这样做时,似乎会出现一些错误或缺失/不完整的情况手动因为它与 SELinux“数据库”相关(因为没有更好的词)。 因此,我想知道setools
包或相关包中是否已经存在某些东西,可以实现此目的,而不必费心处理系统范围的配置文件。
答案1
semanage fcontext -l | grep whatever_exec_t
可能是找到特定上下文的标签规则的最佳方法。
如果您希望搜索当前文件上下文而不是标签规则,则可以使用ls -Z
,但 SELinux 感知find
支持 的-context <glob>
测试和%Z
格式说明符-printf
。请注意,整个上下文字符串都与 匹配<glob>
,因此仅在与类型匹配时使用通配符。我的 Centos 7.3 上的示例:
#find / -xdev -type f -context '*ifconfig_exec_t*' -printf '%-50Z%p\n'
system_u:object_r:ifconfig_exec_t:s0 /usr/sbin/ip
unconfined_u:object_r:ifconfig_exec_t:s0 /usr/sbin/ifconfig
system_u:object_r:ifconfig_exec_t:s0 /usr/sbin/ethtool
system_u:object_r:ifconfig_exec_t:s0 /usr/sbin/iw
unconfined_u:object_r:ifconfig_exec_t:s0 /usr/sbin/mii-tool
system_u:object_r:ifconfig_exec_t:s0 /usr/sbin/tc
答案2
如果您的发行版打包了ifconfig_selinux
手册页(Fedora 将其包含在selinux-策略开发),它会告诉你:
The following file types are defined for ifconfig:
ifconfig_exec_t
- Set files with the ifconfig_exec_t type, if you want to transition an
executable to the ifconfig_t domain.
Paths:
/bin/ip, /sbin/ip, /sbin/tc, /usr/bin/ip, /usr/sbin/ip,
/usr/sbin/tc, /sbin/ethtool, /sbin/ifconfig, /sbin/iwconfig,
/sbin/mii-tool, /usr/sbin/ethtool, /usr/sbin/ifconfig,
/usr/sbin/iwconfig, /usr/sbin/mii-tool, /sbin/ipx_configure,
/sbin/ipx_interface, /sbin/ipx_internal_net, /usr/sbin/ipx_config‐
ure, /usr/sbin/ipx_interface, /usr/sbin/ipx_internal_net
您还可以使用 ifconfig_exec_tsesearch -all -t ifconfig_exec_t
来查看对目标为 ifconfig_exec_t 的文件进行哪些转换,这可能会帮助您找到具有该上下文的文件。
答案3
目前在 RHEL7.1 上——我不确定这是否一直存在并且我错过了——我可以执行以下命令来获取所有文件上下文的列表,然后将输出通过管道传输到grep
:
# semanage fcontext -l |grep ifconfig_exec_t
/bin/ip regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/ethtool regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/ifconfig regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/ip regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/ipx_configure regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/ipx_interface regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/ipx_internal_net regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/iw regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/iwconfig regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/mii-tool regular file system_u:object_r:ifconfig_exec_t:s0
/sbin/tc regular file system_u:object_r:ifconfig_exec_t:s0
/usr/bin/ip regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ethtool regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ifconfig regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ip regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ipx_configure regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ipx_interface regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/ipx_internal_net regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/iw regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/iwconfig regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/mii-tool regular file system_u:object_r:ifconfig_exec_t:s0
/usr/sbin/tc regular file system_u:object_r:ifconfig_exec_t:s0
答案4
find 命令允许您按安全上下文进行搜索。
例如,让我们搜索“unlabeled_t”类型的所有文件。
find / -type f -context *unlabeled_t*
第一部分“find / -type f”告诉我们搜索系统上的所有常规文件。
“-context *unlabeled_t*”过滤器向我们显示 unlabeled_t 类型的所有文件。我们必须在开头和结尾使用通配符,因为我们不关心开头的用户/角色,也不关心结尾的 MLS/MCS 上下文。