Calender
Sun Mon Tue Wed Thu Fri Sat
 123456
78910111213
14151617181920
21222324252627
282930    
<< April 2019 >>
広告
SEARCH

SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
LINKS
PROFILE
OTHERS
SKYPE
PC: skype.jojo.jp
chat
iPad: iphone.jojo.jp
chat call
THANKS



本日:
昨日:
多言語
広告
 ▼▲ 作業日報 ▼△
    What's under the hood?
<< LinuxUSBブートデバイスの作成 | main | PostgreSQL バックアップ方式変更 >>
PHPでのroot権限コマンド実行方法
sudoerに実行コマンドを登録しNOPASSWDでexec("sudo xxx")する(sudoerには実行コマンドだけではなく引数も限定できます)...ただし運用中に管理がされなくなる可能性が大(どこで誰がこのコマンドを必要としているのかの把握が難しい)
suExecを導入し,root権限でcgiコマンドを実行...suExecパッケージ、モジュールインストールが必要、又VirtualHost単位
root実行用のcgiをバイナリで実装しsuidする...これがベストだが、PHP外のソース管理が必要となる
sshを実装している場合は、root権限実行用の鍵ファイルを作成しPHP上からローカルホスト(ループバック)へssh経由でコマンド実行
suidされたphp-cgiバイナリを作成(例えば/usr/bin/php_root等)
  root実行用はCGIに#!/usr/bin_root を指定してやる
※どの方法もそれなりにリスクはあります

5の検証用スクリプト
#!/usr/bin/php_root
<?php
echo "Content-Type: text/plain;¥n¥n";
exec('/usr/bin/whoami',$arr);
print_r($arr);
?>

自分的には開発段階では5の方法が一番気に入っています、本来は実行コマンドのロギング、制限をつけたPHPを作成すべきでしょうね。
| 開発関連 | 20:56 | comments(0) | trackbacks(0) |









http://blog.jojo.jp/trackback/1424900