2010年02月02日 過去Blog
ブラウザからPHPスクリプトにアクセスして、PHPプログラムからsudoコマンドを実行する方法です。 私の場合は、手元のfedoraが動いているサーバで試してみましたが、「anysense-devel」さんの記事通りに実行出来ましたので、ご紹介、というか今後の自分のためにもメモしておきます。
以下、参照元「anysense-devel」さんの記事です。
ご存知の通りPHPからコマンドを実行するにはexec()やsystem()等を使えばいいんですが、Apacheに実行権限が無いファイルを扱う場合はsudoしてから実行する必要があります。
<?PHP
$cmd = "echo 'password' | sudo -S ls /root";
exec($cmd, $output);
print_r($output);
?>
みたいに-Sを付けてやればパイプでパスワードを渡すことが出来ます。 ここで入力するのはもちろんapacheが動いているユーザーのパスワードです。 apacheがどのユーザー権限で動いているかはhttpd.confのUserディレクティブとGroupディレクティブで確認できます。 因みにCentOS5.1でyumでapacheをインストールした場合はapacheというグループのapacheというユーザーとして動いています。 PHPスクリプト内のexec()関数で呼び出されたコマンドもこのユーザーとして実行されます。 以下、Apacheを実行しているユーザーをapacheと仮定して書きます。apacheは環境に応じて適当に読み替えてください。 sudoする際に渡すパスワードはapacheのものですが、デフォルトではapacheユーザーにはパスワードがありません。パスワードが無い場合sudoできませんので何でもいいのでパスワードを指定してあげましょう。
sudo passwd apache
次にapacheユーザーがsudoできるようにsudoersファイルを編集します。ルート権限で
visudo
と入力するとsudoersファイルを編集できますので、末尾に
apache ALL=(ALL) ALL
と追記します。さらに
Defaults requiretty
という行をコメントアウト(行頭に#を追加)して端末を持たないユーザーからのsudoを許可します。 これでapacheユーザーからsudo出来るようになりました。冒頭のPHPスクリプトへブラウザからアクセスして/rootの中身が見れたら成功です。 http://hogehack.blog80.fc2.com/blog-entry-36.html

この投稿へのコメント

コメントはまだありません。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

tabBar内にABPeoplePickerNavigationControllerを表示させる

2011年01月17日 過去Blog
もともと入っている電話アプリなんかは、タブバーを選択すると連絡先が表示されるようになっていますが、それを実装するために、いろいろ試行錯誤してみましたが、以下のようにすることで、実装出来ました。 この件に関しては、あまり、情報がなかった(モーダルビューにpickerを表示させる例は多々ありましたが・・・)ので、スマートな方法かどうかは不明ですので、もし、もっとスマートな方法をご存知の方がいらっしゃいましたら、是非コメントください。…
「tabBar内にABPeoplePickerNavigationControllerを表示させる」をはてなブックマークに追加

iPhoneアプリをAppStoreに公開する手順(編集中)

2011年02月05日 過去Blog
iTunes Connectを利用してアプリケーションを送信し、App Storeでの公開を依頼するには、 以下のものが必要です。 ■ アプリケーションのバイナリ ■ iOS用のバイナリ:iPhoneおよびiPod touch用の57ピクセルのアイコンとオプションの114 ピクセルの高解像度アイコン、またはiPad用の50ピクセルのアイコンと72ピクセルのアイコン を含む パソコン用のApp…
「iPhoneアプリをAppStoreに公開する手順(編集中)」をはてなブックマークに追加

“URL file- access is disabled in the server configuration”というメッセージが表示された場合の対処法

2010年07月07日 過去Blog
■php.iniの設定が変更可能な場合 PHP コード スニペットを使用していて、ウェブページに "URL file-access is disabled in the server configuration" (URL ファイル アクセスはサーバーの設定で無効になっています) エラー メッセージが表示される場合は、ウェブマスターまたはホスティング プロバイダに連絡して、PHP サーバーの設定…
「“URL file- access is disabled in the server configuration”というメッセージが表示された場合の対処法」をはてなブックマークに追加

[UIColor] フォントの色を変えたい時

2010年12月13日 過去Blog
UIアイテムに表示させるフォントの色などの設定 self.TextLabel = [self newLabelWithPrimaryColor:[UIColor colorWithRed:0.0 green:0.5 blue:1.0 alpha:1.0] selectedColor:[UIColor whiteColor] fontSize:14.0 bold:YES]; 上記のようにす…
「[UIColor] フォントの色を変えたい時」をはてなブックマークに追加

PHP 配列から空白要素を削除する

2010年02月20日 過去Blog
配列 $array_exampleの要素のなかで、空白のものを削除。 $array_example = array_filter($array_example, 'strlen');
「PHP 配列から空白要素を削除する」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy