Bash & 'su' 脚本给出错误“标准输入必须是 tty”

sha*_*ond 7 linux bash shell shell-script

伙计们,我遇到了bash脚本的问题,该脚本以不同的用户身份运行特定命令。

背景:运行在 Linux 机器(CentOS)上,脚本很简单,就是启动hudson-ci应用程序。

declare -r HOME=/home/hudson
declare -r RUNAS=hudson
declare -r HOME=/home/hudson
declare -r LOG=hudson.log
declare -r PID=hudson.pid
declare -r BINARY=hudson.war

su - ${RUNAS} -c "nohup java -jar ${HOME}/${BINARY} >> ${HOME}/${LOG} 2>&1; echo $! > ${HOME}/${PID}" &
Run Code Online (Sandbox Code Playgroud)

这是脚本的删节版本,运行时,脚本退出时显示“standard in must be a tty”。关于我可能做错了什么的任何想法?我已经尝试过Google 博士,但到目前为止所有的建议都没有帮助。

其他参考: Mandriva Linux 'su' 错误

Eri*_*ic3 12

在您的 /etc/sudoers 文件中,尝试注释掉“Defaults requiretty”这一行。这样做会带来安全隐患,因此您可能需要在下面添加以下行:

Defaults:[username] !requiretty
Run Code Online (Sandbox Code Playgroud)

请务必使用 visudo 命令来编辑此文件,而不是常规的文本编辑器。

  • /etc/sudoers 不适用于`sudo` 工具,而不适用于coreutils`su`? (5认同)
  • 这些都不适合我。 (4认同)