[SecretZone] 稲葉のコンサルティング裏日誌:コンサルティングで得たトピックや稲葉のノウハウ、事前調査の情報など、売上を激増させるコンサルティングの秘密を公開します!

Home > FAQ > 別のユーザーでシェルスクリプトを実行する (sudo -u)

稲葉の実績


稲葉の一押し商材!

現在の稲葉の一押し商材
http://inabamasaki.com/inaba_no_ichioshi.html

別のユーザーでシェルスクリプトを実行する (sudo -u)

人気ランキングにぜひご協力下さい。

MTの予約投稿がサーバーを専用サーバーに移行してからうまく動いていない事がわかりました。いくつかの原因が絡まっていましたが、その内の1つにスクリプトを実行するユーザーの違いがありました。


MTで予約投稿を行う場合、run-periodic-tasksスクリプトを呼び出すわけですが、これをMTが動いているユーザー(Webサーバーを実行しているユーザー)で行う必要があります。


ここから続き

レンタルサーバーの場合、root権も当然ないですし、ユーザーも1つしか割り当てられませんから、実行ユーザーの違いは気にならないかもしれません。また管理者側でうまく設定してあり、そういった事を意識しないですむようになっているかと思います。


しかし専用サーバーの場合、ターミナルでログインするユーザーと、MTが動いているユーザーが異なるため、問題が発生します。要は、ターミナルログインユーザーのcronでrun-periodic-tasksスクリプトを実行すると、書き込み権限がない為、投稿が失敗するのです。


これを回避する方法はいくつかありますが、今回は別のユーザーでシェルスクリプトを実行する方法を用いました。sudoコマンドを使います。


$ sudo -u ユーザー名 [コマンド:スクリプト]


こうすると、別のユーザーでコマンドやスクリプトを実行する事ができます。例えばMTがapacheというユーザーで動いているならば、MTを予約投稿するコマンドはこうなります。


$ cd [Path to MT]; sudo -u apache ./tools/run-periodic-tasks


ただし、sudoは通常パスワードを求められますから、パスワード無しでコマンドを実行できるよう、あらかじめ設定しておく必要があります。


sudo /usr/sbin/visudo を実行し、sudo の設定ファイル中に、

ユーザー名 ALL=(apache) NOPASSWD: [Path to MT]/tools/run-periodic-tasks

という行を追加します。


ユーザー名 ALL=(apache) NOPASSWD: ALL
グループ名 ALL=(apache) NOPASSWD: ALL

といった書き方でもOKです。


これで別のユーザーでシェルスクリプトを実行することができます。


人気ブログランキングへ blogram投票ボタン



>> 稲葉に質問相談する 〜 お気軽にどうぞ <<

稲葉のメッセージ : 2009年05月08日 20:15

トラックバック

このエントリーのトラックバックURL:
http://wangan.info/cgi-bin/mt/mt-tb.cgi/620

Menu

Entries

Archives

Link

バカ売れサイトの秘密。逆転の販売戦略
稲葉のコトバノチカラ、稼ぎの構造
稲葉正毅の心理学講座
情報商材レビュー "アンダーグラウンドシークレット"