deploy
Java (사용자로 실행되는 JVM tomcat
) 에서 다음 명령을 실행하려고 합니다 .
sudo -u deploy /path/to/my/bash/script.sh PARAM1 PARAM2
내 sudoers 파일에는 다음이 포함되어 있습니다.
tomcat ALL=(deploy) NOPASSWD: /path/to/my/bash/script.sh *
하지만 나는 sorry, you must have a tty to run sudo
Java 애플리케이션에 들어갔습니다. 그래서 호출을 다음과 같이 변경했습니다.
su --session-command="/path/to/my/bash/script.sh PARAM1 PARAM2" deploy
하지만 지금은 Java에 빠져있습니다 standard in must be a tty
.
확인하고 다음을 수행하면 sudo
비밀번호를 묻는 메시지가 표시되지 않지만 su
비밀번호를 묻는 메시지가 표시되는 것을 볼 수 있습니다.
[root@mybox bin]# sudo su tomcat
[tomcat@mybox bin]$ sudo -u deploy /path/to/my/bash/script.sh PARAM1 PARAM2
output of script with PARAM1 PARAM2
[tomcat@mybox bin]$ su --session-command="/path/to/my/bash/script.sh PARAM1 PARAM2" deploy
Password:
su: incorrect password
분명히 sudoers
그것을 위해서입니다 sudo
(따라서 이름). deploy
비밀번호 프롬프트 없이 명령을 실행하는 다른 방법이 있습니까 ?
Centos 6.3에서 개발 중이지만 결국에는 RHEL5에서 실행될 것입니다.
답변1
requiretty
에서 휴식을 취하실 수 있습니다 /etc/sudoer
.
sudoers 매뉴얼 페이지에서
requiretty If set, sudo will only run when the user is logged in to a real
tty. When this flag is set, sudo can only be run from a login
session and not via other means such as cron(8) or cgi-bin
scripts. This flag is off by default.
기본적으로 이 줄은 다음을 사용할 때 모든 사람이 tty 액세스 권한을 가져야 함을 의미합니다 sudo
.
Defaults requiretty
다음과 같이 사용자 및/또는 그룹별로 완화할 수 있습니다.
$ sudo visudo
# group
Defaults:%group !requiretty
# user
Defaults:user !requiretty
노트:방법.!
not