Bash 和‘su’脚本给出错误“标准输入必须是 tty”

Bash 和‘su’脚本给出错误“标准输入必须是 tty”

各位,我遇到了一个问题狂欢运行特定命令的脚本不同的用户

背景:在 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}" &

这是脚本的精简版本,运行时,脚本退出时显示“标准输入必须是 tty”。我可能做错了什么?我试过了谷歌博士但迄今为止所有的建议都无济于事。

其他参考: Mandriva Linux ‘su’ 漏洞

答案1

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

Defaults:[username] !requiretty

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

相关内容