sudo: sorry, you must have a tty to run sudo

※当サイトではアフィリエイト広告を利用しています
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を許可する設定を行うのが無難かもしれません。

 

コメント