[PHP-users 32138] php でroot権限の処理

Masaaki Suga suga @ tenrikyo.or.jp
2007年 5月 16日 (水) 08:52:34 JST


須賀です

今,Perlで書かれたcgiをPHPに移行する作業をしていますが
Perlのcgiがroot権限でしか読めないファイルを読み書きしたり
root権限でしかできない処理をしています

今のPerlの仕組みとしては

(1)aaa.htmlにformでsubmitでbbb.cgiを実行
(2)bbb.cgiの中身は
   /usr/local/bin/sudo ccc.pl
(3)ccc.plの中でroot権限でしか読めないファイルを読み書きしたり
   root権限でしかできない処理をする
(4)ccc.plでhtmlを吐き出し,そのhtmlのformのsubmitでbbb.cgiを実行
(5)bbb.cgiで実行されるccc.plで(3)とは別のroot権限でしかできない処理
   を実行する(このとき,postされた内容を使って処理する)

当然visudoでwwwユーザーのccc.plをNOPASSWDで許可しておく

これをPHPで同じように,しようとして
まず,bbb.cgiの中身をccc.phpとしてccc.phpはCLIとする
(先頭に#!/usr/local/bin/phpを記述する)
あとはPerlと同じ流れで
(1)aaa.htmlにformでsubmitでbbb.cgiを実行
(2)bbb.cgiの中身は
   /usr/local/bin/sudo ccc.php
(3)ccc.phpの中でroot権限でしか読めないファイルを読み書きしたり
   root権限でしかできない処理をする

とここまでは問題ないのですが,(4),(5)で
postされた内容を,ccc.phpで扱えません
ccc.phpがCLIなので,bbb.cgiを実行してもccc.phpには
postの内容は渡らないのが原因です

解決策として,(1),(4)ではbbb.cgiを実行でなくccc.php
を実行するとして,ccc.phpからddd.shを実行にする
ddd.shに中身は
/usr/local/bin/sudo eee.sh

eee.shで処理をして返り値として(5)のpostで返す内容を返す
(eee.sh自体をCLIのeee.phpとする方法もある)

phpでroot権限での処理をさせるときは,普通どのようなやり方
をされるのでしょうか

どなたかアドバイスください


よろしくお願いします

 -------------------------------
 須賀正明:suga @ tenrikyo.or.jp
 -------------------------------



PHP-users メーリングリストの案内