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

Ansible配置sudoers实现跨用户执行Tomcat shutdown脚本问题求助

解决方案

路径修正说明

你需要在shutdown.sh、startup.sh前添加你的CATALINA_HOME下bin目录的完整绝对路径。举个例子,如果你的CATALINA_HOME为/home/user2/services/tomcat,那么完整的脚本路径就是/home/user2/services/tomcat/bin/shutdown.sh和/home/user2/services/tomcat/bin/startup.sh,直接替换你现有sudoers配置中的相对路径即可。

完整sudoers配置参考

针对你遇到的4个问题,补充环境变量放行规则后,完整配置如下(替换为你实际的脚本路径):

# 免密执行启停脚本规则
user1 ALL=(user2) NOPASSWD: /home/user2/services/tomcat/bin/shutdown.sh, /home/user2/services/tomcat/bin/startup.sh
# 允许user1执行sudo时保留JAVA相关环境变量
Defaults:user1 env_keep += "JAVA_HOME JRE_HOME CATALINA_HOME"
# 可选配置:如果需要使用sudo -i方式加载user2全环境执行,补充以下规则
user1 ALL=(user2) NOPASSWD: /bin/bash -c /home/user2/services/tomcat/bin/shutdown.sh, /bin/bash -c /home/user2/services/tomcat/bin/startup.sh

可用执行命令

配置生效后,以下命令均可正常执行:

  • 手动指定变量执行(最稳定,不依赖环境配置):sudo -u user2 JAVA_HOME=/path/to/your/java_home /home/user2/services/tomcat/bin/shutdown.sh
  • 继承当前user1的JAVA环境变量执行:sudo -E -u user2 /home/user2/services/tomcat/bin/shutdown.sh
  • 加载user2的完整用户环境执行(配置了可选规则时可用):sudo -i -u user2 /home/user2/services/tomcat/bin/shutdown.sh

注意事项

  • 修改sudoers必须使用visudo命令操作,避免语法错误导致sudo功能完全失效
  • 如果在sudoers.d目录下新增单独配置文件,需确保文件权限为0440,所有者为root

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:06:03