リモートからバッチを実行するとsudo関連のエラーが発生する



リモートからsudoが利用できない現象


リモートからバッチスクリプトを実行する際に、sudo関連の問題でエラーとなり実行に失敗する。
しかし、ローカルで実施する際は、問題は発生しない。



エラーログ

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





リモートからsudoが利用できない原因


端末からでないとsudoが利用できない設定が/etc/sudoersに記述されているため。


sshオプション(-t)による対応 -対応1


sshに-tオプションをつけて実行すると、解決でいることを確認した。
sshのmanにも-tをつけると強制的にttyを割り当てるという旨の説明が書かれています。

※cronから実行すると-tオプションを付けた状態でも回避できない。
その場合は、以下の対応2を実施する。


sudoの設定による対応 -対応2


以下のようにsudoersファイルの[Defaults reuiretty]をコメントアウトすることで
解決できます。
・全ユーザを許可する

# visudo
========
#Defaults requiretty
Defaults !requiretty

========



・特定のユーザのみ許可したい場合は次のように設定します。

# visudo
========
#Defaults requiretty
Defaults:hogehoge !requiretty

========






HA構成のシステムを担当するエンジニアにお奨めする書籍


Linux高信頼サーバ構築ガイド クラスタリング編

Linux高信頼サーバ構築ガイド クラスタリング編 (Industrial Computing Series)

新品価格
¥3,780から
(2011/5/7 19:06時点)




Linuxで作るアドバンストシステム構築ガイド

Linuxで作るアドバンストシステム構築ガイド (18Network Server Construction Guide)

新品価格
¥3,990から
(2011/5/7 19:09時点)





お奨め書籍




Google+