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


ピックアップ記事

mySQL上で登録された内容に一致する文字列を置き換え

2009年12月25日 過去Blog
以下のようにSQLを実行することで該当箇所が置き換えされます。 phpのstr_replaceのような感じ。 UPDATE `テーブル名` SET フィールド名 =REPLACE (フィールド名,"置き換え前文字列","置き換え後文字列"); limo service san diego…
「mySQL上で登録された内容に一致する文字列を置き換え」をはてなブックマークに追加

[PHP]Cannot use object of type stdClass as array

2011年03月24日 過去Blog
根本的な解決ではないかもしれませんが、「Cannot use object of type stdClass as array」エラーが出る場合は、配列の扱い方を以下のように変更する事で解決しました。 $row["catID"] ↓ $row->catID
「[PHP]Cannot use object of type stdClass as array」をはてなブックマークに追加

iPhoneアプリのメモリリークを検証する方法

2011年01月06日 過去Blog
この記事に関しては、未完結ですが、覚え書きとして、随時追加していきます。 以下のような方法があるらしい。 Instruments XCodeのメニューの「実行」→「パフォーマンスツールを使って開始」→「Leaks」を選択して、「Instruments」 Allocations Xcodeからは「実行」メニューの「パフォーマンスツールを使って実行」から利用することができます。 Xcodeでローカ…
「iPhoneアプリのメモリリークを検証する方法」をはてなブックマークに追加

MacのFTPソフト

2011年04月04日 過去Blog
windowsでは無料のFTPクライアントはたくさんあって、FFFTPのような定番ソフトもありますが、MacのFTPソフトがどれを使っても、なかなかいい感じのが見つかりません (^_^;A 今はFileZillaを使っています。最近使いはじめたばかりなので、使ってみての感想は、また記事に出来たらと思います。 MacユーザーのみなさんはFTPは何を使用されているんでしょうか? もし、おすすめのF…
「MacのFTPソフト」をはてなブックマークに追加

[LINUX] PHPでサーバにユーザーを追加 useradd

2010年02月02日 過去Blog
PHPからUSERADDを実行する $id = "username"; $passwd = crypt("passwd"); $cmd = "echo 'sudoPasswd' | sudo -S useradd -p $passwd $id"; exec($cmd, $output); ROOTディレクトリを表示 //ls -a /root $cmd2 = "echo…
「[LINUX] PHPでサーバにユーザーを追加 useradd」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy