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


ピックアップ記事

iPhoneのメールの受信エラー[ “i.softbank.jp” が応答しません]

2010年12月29日 過去Blog
twitterでも始めようかと思い、iPhoneから登録作業をしてたのですが、twitterに空メールを送った後に、以下のエラーが出てきて、送られてくるメールが受信出来ない状態になりました。 「imap.softbank.jp」が応答しません。メール設定で入力されているアカウント情報が正しい事を確認してください。 …
「iPhoneのメールの受信エラー[ “i.softbank.jp” が応答しません]」をはてなブックマークに追加

phpmyadmin のIPによるアクセス制限

2010年04月22日 過去Blog
# vi /etc/httpd/conf.d/phpmyadmin.conf ← phpMyAdmin用Apache設定ファイル作成 以下にアクセスを許可するIPアドレスを指定 order deny,allow deny from all allow from 127.0.0.1 allow from 192.168.3.      ←ローカルIP全てを許可する allow from 123.123.123.123  ←許可するグローバルIPアドレスを指定 allow from ::1 …
「phpmyadmin のIPによるアクセス制限」をはてなブックマークに追加

IE・FireFoxで使えるお気に入りボタン(ブックマークボタン)

2009年12月09日 過去Blog
<script type="text/javascript"> <!-- if(navigator.userAgent.indexOf("MSIE") > -1){ //Internet Explorer document.write('<!-'+'-[if IE]>'); document.write('<input type="button" valu…
「IE・FireFoxで使えるお気に入りボタン(ブックマークボタン)」をはてなブックマークに追加

PHP 配列の要素数を取得する

2010年06月11日 過去Blog
$array_count = count($array);
「PHP 配列の要素数を取得する」をはてなブックマークに追加

iPhoneのバックアップ/復元

2011年01月13日 過去Blog
iPhone 上のデータをバックアップ&復元する方法です。 バックアップ iTunesにつなぎます。 iTunes 上に表示されたiPhoneを右クリック(または「control」キーを押しながらクリック)して、「バックアップ」を選択します。 これでバックアップ完了です。とても簡単ですね。 …
「iPhoneのバックアップ/復元」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy