Linuxのディレクトリー権限とファイル作成について

[上に] [前に] [次に]
まる [E-Mail] 1999/04/28(水) 14:45:53
perlで記述したCGIを実行して、データをディレクトリーdirの下の
ファイルに保存するCGIを作成したのですが、ファイルをOPENで、
上書きまたは追記用でオープンした場合,その対象ファイルが存在
しない場合はファイルを新規に作成してくれると思うのですが、
、この時ファイルを保存するディレクトリの権限は、全ての
フラグビットを立てて、「rwxrwxrwx」 にしなければ新規作成を
してないと思うのですが、このような権限の設定であっても、ファイルを新規作成してくれない場合があります。
ディレクトリの権限と、OPENコマンドによるそのディレクトリの下にファイルを新規作成する処理との関係を詳しく教えてください。
また、保存するためのファイルを、自分で新規に作成して時は、その
権限は、「rw-rw-rw-」にする必要がありますが、OPENコマンドによって作成された権限は「rw-r--r--」になると思うのですが,この関係を
教えてください。
基本的には、CGIプログラムのファイルやディレクトリに関する権限は、user,groupでなくてotherですよね?
ですから上書きや追記や読まれるファイルの権限のビットは絶対に、
「rw-rw-rw」である必要があるのですよね?

どなたかこの辺のことを詳しく解りやすく説明したいただけないでしょうか? よろしくお願いいたします。

B-Cus 1999/04/28(水) 15:19:04
> 「rwxrwxrwx」 にしなければ新規作成をしてないと思うのですが
> このような権限の設定であっても、ファイルを新規作成してくれない場合が
> あります。

777で置けないことなんてありましたっけ? 設定ミスじゃないでしょうか。

> OPENコマンドによって作成された権限は「rw-r--r--」になると思うのですが

新規ファイルのパーミッションは、umaskの値によって決まります。
umaskというのは「ビットをOFFにするパーミッション」のことです。

umask が 022 なら作成されるファイルは644です。
umask が 002 なら作成されるファイルは664です。
umask が 000 なら作成されるファイルは666です。

> 基本的には、CGIプログラムのファイルやディレクトリに関する権限は、
> user,groupでなくてotherですよね?

まぁそう言ってしまえばそうなんですけど、CGIを各ユーザの権限で
動かしているサイトもありますし、「基本的には」などと一般化
しない方がいいと思います。

要は「777が必要」なのではなく、「CGIの実行オーナー(nobodyだったり
各ユーザだったり)が読める/書き込めるパーミッション」が必要なわけで。

だから(もしnobody権限で動いているなら)ディレクトリは777じゃなくて
007や003でもいいし、ファイルは666じゃなくて006とかでもいいわけです。

[上に] [前に] [次に]