Vine linux 3.2, apache2,proftpdを使用しています。
今はapacheの稼働するuser,groupはapache,apache(ディフォルト)で行っています。
proftpdでファイルを転送するために、ユーザーhogeのホームディレクトリ
/home/hoge/www をルートディレクトリとして公開。
ftpでhogeでログイン→アップロード→見れる
のですが、cgiなどはもちろんapache権限で実行されるため
cgiによって作成されたファイルをhogeが削除できません。
当たり前といえば当たり前なのですが、どうすればこの問題を解決できますか?
apacheをnobody:nobodyで起動させればと思いましたが、皆さんが実際に
どうやっているのかが気になりましたので質問させてもらいました。
皆さんがやっている方法などを教えてください。
> Vine linux 3.2, apache2,proftpdを使用しています。
>
> 今はapacheの稼働するuser,groupはapache,apache(ディフォルト)で行っています。
> proftpdでファイルを転送するために、ユーザーhogeのホームディレクトリ
> /home/hoge/www をルートディレクトリとして公開。
> ftpでhogeでログイン→アップロード→見れる
> のですが、cgiなどはもちろんapache権限で実行されるため
> cgiによって作成されたファイルをhogeが削除できません。
> 当たり前といえば当たり前なのですが、どうすればこの問題を解決できますか?
>
> apacheをnobody:nobodyで起動させればと思いましたが、皆さんが実際に
> どうやっているのかが気になりましたので質問させてもらいました。
Vine linux 3.2がSuEXECになっているか知りませんが、おやじの場合はバーチャルホストでSuEXECで動かしているので、SuexecUserGroup で一般ユーザ(FTPと同じユーザ。例えば、hogehoge:users)にして動かしています。そのため、メインホストは確かにapache:apacheですが、この場合、hogehoge:usersで動作するので何も問題はありません。SuexecUserGroup については下記を参照ください。
http://www.aconus.com/~oyaji/suse/apache_virtual_suse.htm
後は、削除するCGIを作るとか、SSHでログインして消すとか?ですかね?
Vineのapacheはsuexecは付いていません。むしろこれが普通です。
他人にサイト開放しCGIも許可するならsuexecが必須になります。
athさんが用意したCGIだけしか使わせなければあえてsuexecをつける必要はありません。
> cgiによって作成されたファイルをhogeが削除できません。
> 当たり前といえば当たり前なのですが、どうすればこの問題を解決できますか?
削除できますよ。削除権限が無いからでしょう。Unixではファイル削除権限はファイルの書込み許可でなくディレクトリーの書込み許可です。
多くのレンタルサーバーのように、ファイルは666ディレクトリーは777で行えば良いと思います。