dポイントプレゼントキャンペーン実施中!

Redhat linux + Perl(↓バージョン)

This is perl, v5.6.1 built for i386-linux
Copyright 1987-2001, Larry Wall

でunlinkとrenameがうまく使えないのは何故でしょうか?
mkdirやmvも使えなかったように思います。rmやmkdirなどの
linuxコマンドの権限は700にいじってあります。

関係あるのでしょうか?ただ755に戻してmvをしてみましたが
やっぱり使えませんでした。私のミスでなければrootで
実行してもうまく動きませんでした。使える関数使えない関数
あるのでしょうか。もしそうだとしたら、その環境使える関数の
リストを列挙するスクリプトやコマンドはあるのでしょうか?
よろしくお願いします

A 回答 (3件)

具体的にunlinkやrenameをどのように記述していますか?



ファイルの構成やディレクトリの構成とかも書いて頂けるとより詳しく解説できます。

この回答への補足

ありがとうございます。テストしてみたのは
以下の様なシンプルなものと

#!/usr/bin/perl
print "Content-Type: text/plain\n\nOk!";

rename ("./guest.htm", "./guest.bak");

こちらのソースに$lockfileを設定したものなどです
$lockfile ="./filename";や
$lockfile ="filename";等を加えて

http://homepage1.nifty.com/glass/tom_neko/web/we …

補足日時:2005/06/29 18:02
    • good
    • 0
この回答へのお礼

構成を書き忘れました。

ファイルは全て同じフォルダにおいています。

お礼日時:2005/06/29 18:07

パーミッションの問題と言うよりもそのファイルの所有者の問題じゃないですか?



unlinkやrenameがきかないファイルの所有者が「nobody」になっていませんか?

例えば
open D, "> a.txt";
print D '';
close D;

unlink "a.txt";

これでファイルが作れて削除できるのであれば所有者の問題です。

この回答への補足

よく見ると質問文自体間違っていて意味不明ですね。パーミッションの適応範囲については少し調べてみることにします。皆様こんな質問に付き合っていただきましてありがとうございました。

補足日時:2005/06/29 20:00
    • good
    • 0
この回答へのお礼

ありがとうございます。こちらのテストコードを実行してみてファイルも出力されない事に気づいたので、ためしにこのフォルダの所属している親フォルダ、祖先フォルダのパーミッションを全て777にしてやってみたらファイルが出力され、そしてunlinkもすることができました。次に他のフォルダでは祖先ホルダのパーミッションが755などでも書き込みができていたので何かしっくりこなかったので、親フォルダだけを777にしてみたところこちらもファイルを作成、削除、リネームすることができました。とりえずこれで質問の件の理由は分かったのですけど、祖先フォルダが影響するのはどんな時なのでしょうか。

実行属性は祖先まで影響するのですよね?混乱してしまいました。ファイルの属性については分かりやすいのですけど、フォルダの属性がよく分からないです。フォルダの実行属性ってプログラムがフォルダの中身を見る権限なのでしょうか?Rとの違いもよくわからないです。。

お礼日時:2005/06/29 19:24

mv, mkdir などのコマンドのパーミッションは全然関係ないです.


ちょっと気になるのは当該ディレクトリのパーミッションですかねぇ.
まあ気になるといえば Perl のバージョンも気になりますが....
    • good
    • 0
この回答へのお礼

やっぱりコマンドのパーミッションは関係なかったのですね。ずばり当該ディレクトリのパーミッションが駄目だったみたいです。あほな質問をしてしまいなさけなく思ってます。すみません。ご返信ありがとうございました

お礼日時:2005/06/29 19:26

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