xuyangus 发表于 2019-1-24 11:51:25

Zabbix中自定义Key执行时权限不够

前言
  平台上有一应用程序需要调用百度的某个接口,需要连接外网,所以编写了脚本来对百度外网的连通性进行测试。但在server端检测时出现权限不够的问题
一. Zabbix-agent 配置自定义key
  ~]# vim /etc/zabbix/zabbix-agent.conf
UserParameter=baidu_network_status
[*], /root/bin/baidu.sh $1
  脚本放置目录为/root/bin下
  需要重启zabbix-agent服务
~]# service zabbix-agent restart
二. 在Zabbix-Server端测试
http://i2.运维网.com/images/blog/201802/08/add025d3acf36490f278eb5df5159c9a.png
三. 问题排查
1. agent端查看脚本使用有执行权限
http://i2.运维网.com/images/blog/201802/08/b757395e80256e49ba8d469fc74a927f.png
  我们知道脚本的执行者是zabbix,而执行权限是所有人都可执行。直接执行脚本是可以执行的,那么我们切换用户身份执行以下
2. agent端切换用户身份执行
http://i2.运维网.com/images/blog/201802/08/9846c20a2d7c43e9a584e1d1e9049c06.png
  果真切换用户身份无法执行命令,这时我才猛然醒悟,zabbix用户是无法进入到root用户的家目录的,由下图可以看出,/root目录的权限是550,zabbix无法进入,更不用提执行命令了。
http://i2.运维网.com/images/blog/201802/08/b6e15a13bcc1d3228959510ab42c88c2.png
四. 解决问题
  将要运行的脚本放在zabbix用户可以执行的目录之下。为了统一规范,将所有脚本放置在/etc/zabbix/scripts目录下。
1.常见脚本目录
  ~]# mkdir -pv /etc/zabbix/scripts
~]# cp /root/bin/baidu.sh /etc/zabbix/scripts
2.修改zabbix-agent配置文件
http://i2.运维网.com/images/blog/201802/08/87197c4611d96556085cc8e3449d215f.png
3.重启zabbix-agent
  ~]# service zabbix-agent restart
五.server端测试key
http://i2.运维网.com/images/blog/201802/08/cd5d17c6c60d417665141f40123c63d0.png
可以看到此时能够获取值了。



页: [1]
查看完整版本: Zabbix中自定义Key执行时权限不够