プロが教える店舗&オフィスのセキュリティ対策術

HTMLページからそのCGIを叩くと『年月』の名前のディレクトリを作って、
その中に日毎のアクセスログファイルを作成するCGIを作っています。

ディレクトリを作成するパールは以下です。
mkdir($dir, 0777);

しかし実行すると$dirのパーミッションは755になってしまいます、
その中に作成されるファイルは正常に作成されるのですが、
そのディレクトリ/ファイル共にFTPから削除/パーミッションの変更が
出来なくなってしまいます。

telnetから入って削除しようとしても普通のユーザー権限では無理で
削除する為にはルートにならなければなりません。

なぜでしょう?FTPから操作できる権限のディレクトリを作る方法が
あるのでしょうか?

バカな質問だと思いますが分かる方がいらっしゃいましたら教えて下さい。

A 回答 (2件)

これはCGIのせいではないと思います。


恐らくサーバーのOSの設定で新規ディレクトリを作成するときのパーミッションに制限がかけられているのでしょう。(初期状態でも何らかの制限はかかっていると思います)
そこで解決方法なのですが、新規作成時が駄目なら作成後にパーミッションを変更すれば良いのではないでしょうか。
例えば、

mkdir($dir, 0777);

chmod(0777,$dir);

といった感じでしょうか。
お試し下さい。

#万全を期すならchmodでリターン値を取りエラーチェックした方が良いでしょう。
    • good
    • 0
この回答へのお礼

返答遅くなって申し訳ないです。なんかせっかくいただいていた
ご返事の内容がメールで届いてなかったようで、見つけるまでに
時間がたってしまいました。

アクセスログのCGIは無理矢理月毎に1枚のファイルにするように
仕様変更され納品しました。ただこの問題はその後もずっと気に
かかっていていました。

以下のperlで試してみました。

-----------------------------------------
#!/usr/local/bin/perl

$dir = 'data';

mkdir($dir, 0777);

chmod(0777,$dir);

$txt = 'test';
$file = "$dir/test.dat";

open(OUT, ">$file");
print OUT "$txt";
close(OUT);

print "Content-type: text/html\n\n";
print "test OK!";

exit;
-----------------------------------------

すると見事成功しました。これで今後このような仕様の仕事がきても
怖がらなくてすみそうです。
本当にありがとうございました。

お礼日時:2001/10/04 17:01

No.1の内容は試されましたか?


もしうまくいかない様でしたら補足をお願いします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!