Top過去ログ目次掲示板

作成日:2004年03月07日 作成:おやじ
掲示板で過去に質問された内容です。

No.2740 nobodyの設定


No.2740 投稿時間:2004年03月07日(Sun) 13:59 投稿者名:なるせ URL:
タイトル:nobodyの設定

最近Linuxのサーバーの勉強をしている者です
質問なんですが、PHPやPerlで画像付BBSを利用してテストしています
画像をUPするとNobodyの所有者になるのですが、(/home/~User)FTPでつなげ
Nobodyのファイルを削除しようとしても削除できません。
Rootで入り込めればできるのですが、いろいろ不都合な点もありまして困ってます
Freeのサーバーで試験した所ちゃんと削除できるのになんで削除できなくなるかわかりません
httpd.confの設定だと思うのですが...


No.2744 投稿時間:2004年03月07日(Sun) 21:29 投稿者名:データベース初心者 URL:
タイトル:Re: nobodyの設定

???

home/~User ですよね? まずnobody というのはおかしくありませんか?
home/~User の所有者は User になっていると思います。
httpd.conf というよりは所有権の設定 chmod chown 等だと思います。


> 最近Linuxのサーバーの勉強をしている者です
> 質問なんですが、PHPやPerlで画像付BBSを利用してテストしています
> 画像をUPするとNobodyの所有者になるのですが、(/home/~User)FTPでつなげ
> Nobodyのファイルを削除しようとしても削除できません。
> Rootで入り込めればできるのですが、いろいろ不都合な点もありまして困ってます
> Freeのサーバーで試験した所ちゃんと削除できるのになんで削除できなくなるかわかりません
> httpd.confの設定だと思うのですが...


No.2748 投稿時間:2004年03月08日(Mon) 02:00 投稿者名:Ton URL:
タイトル:Re: nobodyの設定

>質問なんですが、PHPやPerlで画像付BBSを利用してテストしています
>画像をUPするとNobodyの所有者になるのですが、(/home/~User)FTPでつなげ
>Nobodyのファイルを削除しようとしても削除できません。
私もちょっと前に悩んだのですが、これってディレクトリを自動作成するCGIで試してるのではないですか?
ディレクトリの所有者がnobody なら FTPでの削除はできません
もしディレクトリを自動作成するCGIならCGIでプログラムを作った方が楽ですよ

httpd.confで対策しようとするのは大きな間違いで、ファイルシステムやユーザー管理を変更しなとだめです

ディレクトリの自動作成を止めて、FTP等でパーミッション(707/606等)で作成されたらいかがですか?


No.2749 投稿時間:2004年03月08日(Mon) 02:13 投稿者名:Ton URL:
タイトル:Re^2: nobodyの設定

もし nobodyのディレクトリ ファイルを削除したい場合の参考スクリプトをPHP(4.3.4)で作りましたので
-------------------------------------------------------------------
<?php
$md = '/home/USER-ID/public_html/KOKOwoKESU'; // ここを削除したい
if(file_exists ($md)==TRUE){
dir_unlink($md);
rmdir($md);
echo "ファイル及びディレクトリを削除<br>\n";
}
else{
echo "削除ファイル/ディレクトリがありません<br>\n";
}

function dir_unlink($dir)
{
$dh = opendir($dir);
while(false !== ($filename = readdir($dh))){
$w_fname=$dir.'/'.$filename;
if(is_file($w_fname)){
$ef=unlink($w_fname);
if($ef==FALSE) return $ef;
}
}
closedir($dh);
clearstatcache();
return TRUE;
}
?>
----------------------------------------------------
ただし、phpのセーフモードでは試してないです

追記;
$md = '/home/USER-ID/public_html/KOKOwoKESU'; // ここを削除したい
ここを消したいディテクトリに変更して下さい。

例)
/home/test/public_html/bbs に CGI 本体
/home/test/public_html/bbs/thmb が 自動作成するディレクトリ

上記の場合は
md$ = '/home/test/public_html/bbs/thmb' と 記述して下さい


No.2752 投稿時間:2004年03月08日(Mon) 05:22 投稿者名:なるせ URL:
タイトル:Re^3: nobodyの設定

データベース初心者様、Ton様ありがとうございます
FTPで確認したところ、フォルダの所有者がnobodyになっていました
そこをUserと同じ所有者で実験したところ削除できるようになりました
あと、phpのプログラムで消したいところをホームページから選ぶことはできますか?


No.2766 投稿時間:2004年03月08日(Mon) 17:02 投稿者名:Ton URL:
タイトル:Re^4: nobodyの設定

> あと、phpのプログラムで消したいところをホームページから選ぶことはできますか?
おやじ様のHPでスクリプトをお教えすると長くなりそうで迷惑がかかりますので
メールを頂ければスクリプトをお送り致します


No.2775 投稿時間:2004年03月09日(Tue) 00:37 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/
タイトル:suEXEC環境でApacheを構築すれば解決します。

> 最近Linuxのサーバーの勉強をしている者です
> 質問なんですが、PHPやPerlで画像付BBSを利用してテストしています
> 画像をUPするとNobodyの所有者になるのですが、(/home/~User)FTPでつなげ
> Nobodyのファイルを削除しようとしても削除できません。
> Rootで入り込めればできるのですが、いろいろ不都合な点もありまして困ってます
> Freeのサーバーで試験した所ちゃんと削除できるのになんで削除できなくなるかわかりません
> httpd.confの設定だと思うのですが...

 この問題は、httpd.confの設定では解決しません。suEXEC環境でApacheを構築すれば解決します。
使われたサーバはsuEXEC環境で構築されていたのでしょう。レンタルサーバ等はセキュリティ面から
suEXEC環境になっているものが多いはずです。
 SuEXEC環境なら全てそのユーザ権限で動作しますから、upした画像もそのユーザになるので、
FTPでアクセスして消すことができます。suEXEC環境を作るには、コンパイルからやり直せばできます。
但し、おやじはやっとことはないですが。セキュリティ面では、suEXEC環境のほうが優れていますが、
いくつか制約事項がでてきますので、CGIの見直し等も必要になるかもしれません。
 興味のあるテーマですから、チャレンジしてみたい気はしますが。



掲示板▲頁先頭