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