OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

perl(CGI)から作成したディレクトリがFTPで消せないのはなぜ?

  • 困ってます
  • 質問No.142812
  • 閲覧数148
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 75% (3/4)

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

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

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

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

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

バカな質問だと思いますが分かる方がいらっしゃいましたら教えて下さい。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル13

ベストアンサー率 37% (419/1115)

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

mkdir($dir, 0777);

chmod(0777,$dir);

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

#万全を期すならchmodでリターン値を取りエラーチェックした方が良いでしょう。
お礼コメント
frogwork

お礼率 75% (3/4)

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

アクセスログの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:53
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル13

ベストアンサー率 37% (419/1115)

No.1の内容は試されましたか? もしうまくいかない様でしたら補足をお願いします。
No.1の内容は試されましたか?
もしうまくいかない様でしたら補足をお願いします。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ