前言:以前一直以为sudo这个命令很鸡肋、没啥用,遇到了需要用的时候,才发现是我天真了sudo这个命令太好用了。
环境:zabbix-agent通过监控脚本监控docker容器的网络连接数,物理机的zabbix-agent docker容器 connection.sh脚本
问题:
脚本中用到了docker和nsenter命令
nsenter -t docker inspect -f {{.State.Pid}} contaner_name
-n ss -an | grep 80
,但是zabbix-agent执行这个脚本的时候报错/usr/bin/docker: Permission denied,
原因是zabbix-agent是通过zabbix程序用户来执行这个脚本的没有docker这个命令的运行权限,所以前面要加sudo提高权限,同时在/etc/sudoers 文件下面设置zabbix用户sudo提权后能有哪些权限。
解决方法、过程:
修改/etc/sudoers文件
root ALL=(ALL) ALL
zabbix ALL=(root) NOPASSWD:/usr/bin/docker
zabbix ALL=(root) NOPASSWD:/usr/bin/nsenter