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


ピックアップ記事

[2]:Interface Builder のみで Hello World

2010年11月19日 過去Blog
前回は、UITableViewを使って”HelloWorld”を表示しましたが、今回は、Interface Builderを使って、コードを書かずに"HelloWorld"を表示させてみます。 非常に簡単なアプリではありますが、Interface Builderを理解する最初のステップです。 今回の流れ: View Based Projectの新規作成 iPhone シュミレータで確認 UIの要素をホーム画面に追加 コードを実行 …
「[2]:Interface Builder のみで Hello World」をはてなブックマークに追加

xreaサーバ phpMyAdminへのログイン

2010年08月26日 過去Blog
二段階で認証があって毎回忘れてしまうので、メモ。。。 最初の認証は、xreaのデータベース画面下の方にある 「ページ入室の際はログ閲覧画面の認証パスワード(ユーザー名:****,パスワード:@@@@)をご利用下さい。」 の箇所の通り入力。 phpMyAdminの認証は使いたいデータベース名とそのパスワード。 ポップ認証 ユーザー名:userID,パスワード:wpec(4文字) ウェブ認証 …
「xreaサーバ phpMyAdminへのログイン」をはてなブックマークに追加

サーバの時刻調整

2010年03月05日 過去Blog
サーバの時刻設定 1. 時刻確認 date 2. 時刻設定 date -s "2006/02/20 19:03" linux上で、上記のコマンドを実行すれば、調整出来ます。 参照元:http://memorva.jp/memo/linux/date_ntp.php buy anabolics online…
「サーバの時刻調整」をはてなブックマークに追加

htmlファイルでphpを動かすための.htaccessファイルの設定

2009年11月20日 過去Blog
htmlファイルでphpを動かすための.htaccessファイルの設定 .htaccessファイル内に以下の行を記述します。 AddType application/x-httpd-php .htm .html 当然の前提条件として、htaccessの動作が許可されているサーバに限ります。…
「htmlファイルでphpを動かすための.htaccessファイルの設定」をはてなブックマークに追加

NSAssert,NSAssert2

2011年04月13日 過去Blog
NSAssert 指定した条件が間違っていればlogに文字列を書き込む NSAssert2 指定した条件が間違っていればlogに引数2つの文字列を書き込む http://www.oomori.com/cocoafw/Foundation/NSAssert2/NSAssert2.html free raspberry ketones…
「NSAssert,NSAssert2」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy