You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下如何通过Zabbix Agent使用sudo免密执行脚本?

Ubuntu 22.04.2 LTS下Zabbix用户sudo免密执行脚本配置问题

已执行的配置操作

  1. 通过visudo配置zabbix用户的sudo权限:
    zabbix ALL=(ALL) NOPASSWD:/root/market-report/docker-compose_restart zabbix-agent2
    
  2. 修改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免密执行脚本?


解决方法

  1. 修正visudo的免密规则格式
    原规则的命令写法不符合sudoers语法要求,多个免密命令需用逗号分隔,且每个命令必须是绝对路径。正确配置应为:

    zabbix ALL=(ALL) NOPASSWD: /root/market-report/docker-compose_restart, /usr/sbin/zabbix-agent2
    
    • 若zabbix-agent2实际路径不同,可通过which zabbix-agent2查询真实路径后替换
    • 逗号后必须加空格,否则规则不生效
  2. 验证sudoers配置语法
    修改完成后,务必执行以下命令检查配置是否合法:

    visudo -c
    

    只有输出/etc/sudoers: parsed OK,才说明配置正确。

  3. 确保脚本及目录的权限合规
    目标脚本需要具备可执行权限,且所在目录要允许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
    
  4. 重新测试免密执行
    再次执行测试命令,确认无需输入密码即可运行脚本:

    sudo -u zabbix sudo /root/market-report/docker-compose_restart
    

内容的提问来源于stack exchange,提问作者sivsoft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:15:02