SSブログ

cronでのsudoの使用 [PC]

実はPX-W3U3で録画サーバを立てていたりします。

NUCで録画サーバと立てようと思うと、チューナーユニットはUSB接続のものが必要になってくると思うのですが、Linuxで使えるUSB接続のチューナーユニットってほとんどないですよね・・・・。

前置きが長いな。

この、PX-W3U3が安定しない・・・・、おそらく熱の問題だと思いますが、夏場は2日と持たずユニットがハングします(まぁエアコン使ってないのも問題なんでしょうけど)。

Linuxベースのシステムで、epgrec UNA版を利用させていただいているのですが、PT1でも同様にチューナユニットが不安定になることがあるようで、EPG更新時にエラーの場合システムを再起動する処理が入っていました、そこで、ちょいとソースをいじってPX-W3U3でも使えるようにしたのですが、リブートのロジックが走ってるのにリブートしない・・・・。

やっと本題。

epgrecのEPG更新時に、更新情報が取得できなかった場合にリブートするのですが、EPGの更新はcronで行います、従って、reboot処理もcron内で行われcronからsudoでshutdownコマンドを呼び出すことになります。

このことは、config.php内ににも以下の通りコメントがあります。
// PT1_REBOOTをTRUEにする場合は、root権限で visudoコマンドを実行して
// www-data ALL = (ALL) NOPASSWD: /sbin/shutdown
// の一行を追加してください。詳しくは visudoを調べてください。

この通りsudoの設定は修正したのですが、httpdのユーザからsudoでリブートできるのに、cronからのリブートだとコマンドは出ているのにリブートしません。

ふと、cron実行時にエラーが出ているのではないかと、root宛のメールを確認してみると

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

などとエラーが出ています、tty接続じゃないからsudo出来ないという事ですか・・・。

最近のディストリビューションだと、sudoの設定はデフォルトで
Defaults requiretty
となっており、sudoの利用はtty接続のみに制限されているようです、従ってcronでsudoを使用するためには、上記の設定に加えてsudoerに以下の設定を加えてこの制限を解除する必要があります。
Defaults:apache !requiretty
Defaults: requirettyをDefaults: !requirettyに変更しても良いのですがセキュリティ的にはあまり好ましくないと思われるので、必要なユーザのみ設定するのが良いかと。






nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0