sudo: sorry, you must have a tty to run sudo sudo を実行するには tty がなければいけません。
1.事象
Javaで、sudoコマンドを含むシェルスクリプトを実行しようとしたところ、上記のエラーが発生しました。
シェルの実行にも失敗していました。
別の手段として、cronからバッチ処理として実行したところ、同じようにエラーが発生して失敗しました。
2.原因
端末(tty)でない状態でsudoを実行しようとした場合、初期状態ではセキュリティ上許可しないようになっています。
3.対応方法
visudoコマンドを使用して「/etc/sudoers」ファイルを修正します。
# 全てのユーザの sudoコマンドをttyでなくても許可する場合 #Defaults requiretty #コメントアウトする # 「testuser」のみ sudoコマンドをttyでなくても許可する場合 Defaults:testuser !requiretty
4.注意点
どこからでもsudoが出来るようになってしまうため、セキュリティ面での懸念があります。
そのため、特定のユーザのみsudoを許可する設定を行うのが無難かもしれません。
コメント