Bash & 'su' script giving an error "standard in must be a tty"
Folks, I'm having an issue with a bash script which runs a particular command as a different user.
The background: Running on a Linux box (CentOS), the script is quite simple, it's starting the hudson-ci application.
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}" &
This is the abridged version of the script, when run, the script exits with "standard in must be a tty". Any ideas on what I could be doing wrong? I've tried Dr Google and all the advice hasn't helped thus far.
Other reference: Mandriva Linux 'su' bug
Solution 1:
In your /etc/sudoers file, try commenting out the line that says "Defaults requiretty". There are security implications of doing so, so you might want to instead add this line below:
Defaults:[username] !requiretty
Be sure to use the visudo command to edit this file, rather than a regular text editor.