Ubuntu 22.04下如何通过Zabbix Agent使用sudo免密执行脚本?
Ubuntu 22.04.2 LTS下Zabbix用户sudo免密执行脚本配置问题
已执行的配置操作
- 通过
visudo配置zabbix用户的sudo权限:zabbix ALL=(ALL) NOPASSWD:/root/market-report/docker-compose_restart zabbix-agent2 - 修改Zabbix Agent2配置文件,开启系统命令执行权限:
# nano /etc/zabbix/zabbix_agent2.conf AllowKey=system.run[*]
报错信息
执行操作时出现以下错误:
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required
后续尝试的配置
添加了tty相关的sudo配置:
# visudo Defaults:zabbix !requiretty
测试结果
执行以下命令测试时,仍提示输入zabbix用户密码:
sudo -u zabbix sudo /root/market-report/docker-compose_restart
请问还需配置什么才能实现sudo免密执行脚本?
解决方法
修正visudo的免密规则格式
原规则的命令写法不符合sudoers语法要求,多个免密命令需用逗号分隔,且每个命令必须是绝对路径。正确配置应为:zabbix ALL=(ALL) NOPASSWD: /root/market-report/docker-compose_restart, /usr/sbin/zabbix-agent2- 若
zabbix-agent2实际路径不同,可通过which zabbix-agent2查询真实路径后替换 - 逗号后必须加空格,否则规则不生效
- 若
验证sudoers配置语法
修改完成后,务必执行以下命令检查配置是否合法:visudo -c只有输出
/etc/sudoers: parsed OK,才说明配置正确。确保脚本及目录的权限合规
目标脚本需要具备可执行权限,且所在目录要允许zabbix用户访问:# 给脚本添加执行权限 chmod +x /root/market-report/docker-compose_restart # 确保脚本归属root用户(避免权限过大) chown root:root /root/market-report/docker-compose_restart # 给目录添加执行权限(让zabbix能进入目录) chmod +x /root chmod +x /root/market-report重新测试免密执行
再次执行测试命令,确认无需输入密码即可运行脚本:sudo -u zabbix sudo /root/market-report/docker-compose_restart
内容的提问来源于stack exchange,提问作者sivsoft
相关产品推荐
相关产品推荐

