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


ピックアップ記事

WHOIS pending delete から 取得可能になるまで

2010年03月24日 過去Blog
中古ドメインを探す際、whois の pending delete 表示から取得可能になるまでの期間は5日間? …
「WHOIS pending delete から 取得可能になるまで」をはてなブックマークに追加

Firefox で ヤフーサイトエクスプローラーが表示されない場合

2010年06月18日 過去Blog
ページの自動転送設定が正しくありません。 などと表示されて、Yahooのサイトエクスプローラが表示されない場合は、yahoo.co.jpに関するクッキーをブラウザから削除することでエラーが出なくなります。 movers los angeles…
「Firefox で ヤフーサイトエクスプローラーが表示されない場合」をはてなブックマークに追加

iphoneアプリ開発の備忘録

2010年11月19日 過去Blog
iphoneアプリの開発に着手したので備忘録設置しました。 私自身、分からないことだらけのiphone開発ですが、同じような境遇の方にとって少しでも参考になれば、うれしいですが、現時点では、参考になれそうな記事を書ける自信なし。。。(汗 iphoneアプリ開発が脚光を浴びて、それなりに時間が経っていますが、未だに日本語での情報は少ないので、自分が勉強していく上で役に立った情報や、海外のチュート…
「iphoneアプリ開発の備忘録」をはてなブックマークに追加

[5]:配列データを使って、UITableViewと連携させる

2010年12月01日 過去Blog
今回のチュートリアルは、配列データを使って、UITableViewと連携させる方法です。SQLやXMLのデータを表示させるための要素になるでしょう。 今回は「フルーツ」をテーマに、名称のほか、いくつかの追加情報をもつ「フルーツオブジェクトの配列」を作成します。UITabeleViewに各フルーツの名称を表示させ、名称がクリックされるとviewが遷移し、そのフルーツの詳細情報を表示させます。 今回の記事は以下の記事を既読の方を想定しています。 [4]:View間での移動について [3]:Interface Builder と Xcode を接続する方法 [2]:Interface Builder のみで Hello World 今回学ぶこと: Navigation-Based Application の新規作成 フルーツClassのオブジェクト作成 NSArray 配列を作成し、書き込む 新規ビューの追加 viewとコードを接続する オブジェクトのデータをUITableViewに書き込む viewを遷移させ、選択された行に基づくデータを表示させる …
「[5]:配列データを使って、UITableViewと連携させる」をはてなブックマークに追加

[6]:SQLiteを使ってToDoリストアプリを作成(1)

2010年12月01日 過去Blog
このブログのチュートリアルを順に読み進めてくださった方なら、このチュートリアルがUITableVIewを優先的に取り組んできたことをご存知かと思います。 この理由としては、多くのアプリケーションが、このシンプルなコントロールを使って開発されているからです。 今回はUITableViewの最後のチュートリアルとして、今までのチュートリアルで学んできたことをすべて使い、SQLiteの技術を追加し、ToDoリストを作成していきます。 また、多くの機能を持ったテーブルセルを追加し、iPhoneが提供している他のコントロールについても学んでいきます。 過去の記事を既読の方を想定していますので、まだの方は、そちらの記事に先に目を通されることをおすすめします。 このチュートリアルは、いくつかのシリーズから成り立つので、過去の記事に比べ少し長くなります。この最初のチュートリアルで学ぶことは以下です。 今回学ぶこと: Navigation-Based Application の新規作成 データベースの作成 プロジェクトにデータベースの追加 SQLite3のフレームワークを追加 ToDoクラスのオブジェクトの作成 データベースの初期化 …
「[6]:SQLiteを使ってToDoリストアプリを作成(1)」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy