[PHP-users 4529] Re: PHPでroot 実行するには?

harikawa php-users@php.gr.jp
Wed, 02 Jan 2002 00:07:27 +0900


針川@茅ヶ崎です。
あけましておめでとうございます。今年もよろしくお願い致します。

> 今、簡単なプログラムを作成しているのですが /home/~user にPHPからファイ
> ルを作成しようとするとパーミッションのエラーが出ます。(当たり前ですね。)
> そこで、それを実行するようにするためにそのプログラムにrootの権限を与える
> 必要があると思うのですが、これをするのは sudo でいいのでしょうか。

ちょうど、その当たりをやっていたところなので。
/home/~user への書き込みだけならルート権限の必要は無いでしょう。

sudoers はこんな感じでいかがですか?

Cmnd_Alias WEBCMD = /bin/chmod, /usr/bin/touch
nobody  ALL = (user) NOPASSWD: WEBCMD

user 権限で touch で空ファイル作り、一時的に chmod 666 にする。
書き込みが済んだら chmod 644 で戻し。(忘れると悲惨!)
必要があれば /bin/rm も追加して良いでしょうが、不要なら極力避けた方が
無難です。
user 権限に限っても nobody が chmod 使えるのはちょっと怖いので、fopen 
に渡すパスには十分注意が必要です。
他にいい手があれば私も知りたいです。
# suEXEC は共用スペース向きみたいなので、採用見送りました。

> Webで調べると、結構慎重にしないとセキュリティーホールになる可能性が高い
> ような感じを受けたのですが、他には何かいい方法は無いモノでしょうか。

管理に限って php の ftp関数使って localhost でログイン、という手を使っ
てます。普段は ssh portfoward で使っているので ftp は localhost からし
か利用できないようにしてます。
もちろん、ID とパスワードはコードに埋めず、フォームから入力します。
念のため、ssl 経由。一般サービスには向かないと思います。
~user に Web 経由のメンテをさせるということならこの方法も一案でしょう。

(((((((((   Soft-inn  針川英智  )))))))))
))))      http://www.softinn.to/     (((( 
(((         harikawa@softinn.to       )))
))))    Tel:0467-59-1003 Fax:1002    ((((
((((_______ 茅ヶ崎市共恵1-15-1 ______))))