題 Bash&'su'腳本給出錯誤“標準必須是tty”


伙計們,我有一個問題 慶典 以特定命令運行的腳本 不同的用戶

背景:在Linux機器(CentOS)上運行,腳本非常簡單,它正在啟動 哈德森慈 應用。

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'錯誤


7
2018-03-13 01:43


起源




答案:


在/ etc / sudoers文件中,嘗試註釋掉“Defaults requiretty”的行。這樣做有安全隱患,因此您可能希望在下面添加以下行:

Defaults:[username] !requiretty

請務必使用visudo命令編輯此文件,而不是常規文本編輯器。


11
2018-03-13 03:41



您還可以通過指定可以發出無tty命令的用戶來限制刪除限制的範圍,從而使安全管理員更快樂。看到: serverfault.com/questions/111064/... - benvolioT
這些都不適合我。 - Cerin
/ etc / sudoers不適用於 sudo 工具,而不是coreutils su? - Felipe Alvarez
你為什麼要用 visudo ?請展開 - 8bitjunkie
@ 8bitjunkie這就是為什麼要用的 visudo  unix.stackexchange.com/questions/27594/... - MadMike