su가 비밀번호를 묻는 것을 방지

su가 비밀번호를 묻는 것을 방지

deployJava (사용자로 실행되는 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 sudoJava 애플리케이션에 들어갔습니다. 그래서 호출을 다음과 같이 변경했습니다.

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

보다스도&Sudoers자세한 내용은 매뉴얼 페이지를 참조하세요.

관련 정보