记一次由selinux引起的使用cat查看文件报错Permission denied的问题排查
事件起因:如下
1、在服务器上root用户,定期会生成一个文件,到/tmp目录,如:qq_5201351.txt,给other加上了r读取
2、zabbix端会周期性取这台服务器/tmp/qq_5201351.txt文件内容的(只能通过agent方式,system.run[cat /tmp/qq_5201351.txt]方式获取)
但是zabbix的web界面的返回结果异常,报错:cat: /tmp/qq_5201351.txt: Permission denied
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
冷静分析:到底是没有权限执行cat命令,还是文件的权限不够(公司服务器都做过很强的安全加固)
排查过程:如下
1、查看文件的权限,结果为-rw-r--r-- ,按理说其他用户就应该有读的权限,查检facl 也没有问题
2、将上面的cat命令替换成ls或者stat,都能够返回有结果,难道是命令的问题,倒也有可能?
a、将cat命令,写成绝对路径,/bin/cat 【还是报错】
b、查看/bin/cat对于zabbix用户是否有执行权限 【有权限】
c、查看cat文件是否设置有facl 【没有设置facl】
[root@qq5201351 ~]# getfacl /bin/cat
getfacl: Removing leading '/' from absolute path names
# file: bin/cat
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
d、对比stat命令与cat命令的selinux相关的Context信息(权限与Context信息都是一样的):
[root@qq5201351 ~]# ls -lZ /bin/stat
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 /bin/stat
[root@qq5201351 ~]# ls -lZ /bin/cat
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 /bin/cat
[root@qq5201351 ~]#
3、到此基本断定问题还是出在文件的可能性较大,由于公司服务器是做过非常严格的安全加固,zabbix用户没有家目录,shell也还是/sbin/nologin
开始想要su到zabbix分析,但非常困难(非技术困难,困于流程和安全审计),于是最后分析qq_5201351.txt的selinux安全上下文信息:
[root@qq5201351 ~]# ls -lZ /tmp/qq_5201351.txt
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/qq_5201351.txt
4、到此笔者能想到的也就只有是selinux的安全上下文配置了,于是思考去找一个zabbix用户绝对有权限的文件呢?
这里笔者想到通过查看进程,能否找到zabbix用户进程用到的配置文件,居然还真能找到一个,如下:
[root@qq5201351 ~]# ps -ef|grep ^zabbix
zabbix 986 1 0 May18 ? 00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
5、然后将命令上方改成system.run[cat /etc/zabbix/zabbix_agentd.conf] ,以文本方式取值,果然如猜想的那样,成功取得文件内容
6、最后对比/etc/zabbix/zabbix_agentd.conf与/tmp/qq_5201351.txt文件Context配置的差异,如下
[root@qq5201351 ~]# ls -lZ /etc/zabbix/zabbix_agentd.conf
-rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/zabbix/zabbix_agentd.conf
[root@qq5201351 ~]#
[root@qq5201351 ~]# ls -lZ /tmp/qq_5201351.txt
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/qq_5201351.txt
说明:这里selinux的Context其实分为了4段,用户信息,角色信息、类型信息、范围信息,通过对比分析,加上测试,最终发现是类型信息影响了
于是,将qq_5201351.txt的类型信息部分,也修改为etc_t 问题得到解决,修改配置的命令如下:
chcon -t etc_t /tmp/qq_5201351.txt
补充一点:修改用户信息(-u, --user=xx),角色信息(-r, --role=xx),范围信息(-l, --range=范围),修改类型也可以--type=xx
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/13720110.html
记一次由selinux引起的使用cat查看文件报错Permission denied的问题排查的更多相关文章
- 记一次root用户在本地登录及SSH连接均遭遇permission denied的问题排查经过
某日一位老师反映,机房的6号节点无法登录了.一开始以为是为节点防火墙配置IP白名单时忘记了加进去,但随后发现此节点并未进行白名单配置,密码也一直未有变更,于是在自己的电脑上连接,发现终端里很快显示出了 ...
- apache 访问权限出错,apache selinux 权限问题, (13) Permission Denied
今天在使用 httpd 做文件服务器的时候,发现 png 图像没有打开,但是原本www/html 文件夹内部的文件就可以打开.后来猜测是selinux 的问题,之前一直想写一篇关于selinux 的博 ...
- 记Git报错-refusing to merge unrelated histories
记Git报错-refusing to merge unrelated histories 系统:win7 git版本: 2.16.2.windows.1 问题 1.本地初始化了git仓库,放了一些 ...
- ansible报错Aborting, target uses selinux but python bindings (libselinux-python) aren't installed【转】
报错内容: TASK [activemq : jvm configuration] ********************************************************** ...
- centos 关闭selinux 临时关闭selinux 报错 setenforce: setenforce() failed
关闭selinux的方法有两种:临时关闭和永久关闭. 查看selinux的状态:estatus [root@--- ~]# sestatus SELinux status: enabled SELin ...
- ansible报错Aborting, target uses selinux but python bindings (libselinux-python) aren't installed
报错内容: TASK [activemq : jvm configuration] ********************************************************** ...
- mysql启动报错,与selinux相关
mysql启动报错,与selinux相关 如果遇到报错,可能的情况是 selinux 的关系,可以安装 setroubleshoot-server 工具,使用 sealert -a /var/log/ ...
- 记一次用python 的ConfigParser读取配置文件编码报错
记一次用python 的ConfigParser读取配置文件编码报错 ...... raise MissingSectionHeaderError(fpname, lineno, line)Confi ...
- vmware启动报错:Failed to load SELinux policy. Freezing
修改 : SELINUX=disabled 正确 误修改: SELINUXTYPE=disabled 错误 导致无法开机 错误结果 重启后 机器就报 Failed to load SELi ...
随机推荐
- JavaScript学习系列博客_6_JavaScript中的算数运算符
运算符(操作符) 在JS中 +.-.*./.%这些都是算数运算符,typeof也是一个运算符,它的操作结果就是得到一个描述变量数据类型的字符串. + 运算符 1.两个值在都没有string类型的值的情 ...
- CVE-2020-15778 OpenSSH命令注入漏洞复现
一.漏洞概要 OpenSSH 8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令.目前绝大多数linux系统受影响. 参考链接:https://githu ...
- rabbit rpm地址
rabbitmq 官方源: https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/ erlang 清华源(包含erlang所有版本): https:/ ...
- Tugnsten Fabric-MPLS-三层转发
1.网络拓扑图如下: 2.场景:虚机1.1.1.3 ping 虚机3.3.3.3(两个虚机加入到虚拟路由器里面了,所以可以互通) 3.查看虚机1.1.1.3所对应的VRF: 4.其中41为mpls标签 ...
- [转]camera教程
camera教程 Lens一般由几片透镜组成透镜结构,按材质可分为塑胶透镜(plastic)或玻璃透镜(glass),玻璃镜片比树脂镜片贵.塑胶透镜其实是树脂镜片,透光率和感光性等光学指标比不上镀膜镜 ...
- latex:矩阵环境
矩阵的最大列数值是在MaxMatrixCols计数器中设定的,默认值是10.可使用计数器设置命令修改其值,例如需要用到15列:\setcounter{MaxMatrixCols}{15};当超宽矩阵排 ...
- 分布式一致性算法 Paxos、Raft、Zab的区别与联系
什么是分布式系统? 拿一个最简单的例子,就比如说我们的图书管理系统.之前的系统包含了所有的功能,比如用户注册登录.管理员功能.图书借阅管理等.这叫做集中式系统.也就是一个人干了好几件事. 后来随着功能 ...
- 认证授权:学习OIDC
前言 上一篇文章介绍了OAuth2.0协议的相关内容,知道OAuth2.0是一个授权协议,无法提供完善的身份认证功能.那么什么来解决身份认证功能呢?——OIDC是一个不错的解决方案.接下来进一步来了解 ...
- vue mixin混入
基本结构 export default { data() { return {} }, computed: { }, methods: { }, filters: { }, created() { } ...
- SqlAnalyzer1.01 源码
源码下载:https://files.cnblogs.com/files/heyang78/SqlAnalyzer-20200529-2.rar 现有功能:不带函数允许嵌套的select ...fro ...