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


ピックアップ記事

linux サーバのバックアップ箇所

2010年04月06日 過去Blog
■データベース関連 phpmyadmin データベース ■ユーザドキュメント関連 /home/ 内 ■ユーザ関連 /etc/passwd /etc/shadow /etc/group ■サーバ設定 /etc/ 内 バーチャルホストやvsftp,httpd関連の設定 メール関連の設定 buy valium roche…
「linux サーバのバックアップ箇所」をはてなブックマークに追加

php OS環境に合わせて自動改行

2010年06月08日 過去Blog
PHP_EOL PHPには定義済み定数に「PHP_EOL」があり、これを使用することで改行を表示させることができます。 Linux、Mac、Windowsなどの異なるOS環境間で改行コードを内部的に自動で切り替えてくれます。 例えば、Macの場合には「¥n」や「¥n¥r」、「¥r¥n」などとコードに記載しても、改行表示されません。
「php OS環境に合わせて自動改行」をはてなブックマークに追加

デジカメのメモリやUSBメモリのデータを誤って削除、フォーマットしてしまった場合の復元方法

2010年10月07日 過去Blog
以下のフリーソフトで復元できました。 http://www.powerdatarecovery.com/ 日本の有料の物も試してみましたが、上記の無料のソフトのほうが精度が高かったです。 anabolic pharma - your personal online pharmacy store…
「デジカメのメモリやUSBメモリのデータを誤って削除、フォーマットしてしまった場合の復元方法」をはてなブックマークに追加

zencart META内のauthor、generatorの設定

2010年06月29日 過去Blog
includes/templates/テンプレート名/common 内のhtml_header.phpを編集。 What is Darvocet?…
「zencart META内のauthor、generatorの設定」をはてなブックマークに追加

外部SQLiteデータベースを更新した場合

2010年12月09日 過去Blog
アプリケーションの外部でデータベースを変更した場合、プログラム内のデータベースを入れ替えても反映されないので、そういう場合は、既にシミュレータまたは、デバイスにインストールされている該当アプリを一度アンインストールしてから、再度ビルド&実行することで、データベースも最新のものが反映される模様。 http://oknamulti.by/…
「外部SQLiteデータベースを更新した場合」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy