ディレクトリのパーミッション


ファイルのパーミッション

r そのファイルを参照できる
w そのファイルに書き込みできる
x そのファイルを実行できる

ディレクトリのパーミッション

r そのディレクトリを ls できる
w そのディレクトリの中でファイルを作成・消去できる
x そのディレクトリの中および、その管理ファイルにアクセスできる

ファイルのパーミッションは常識的なものですが、ディレクトリパーミッションについてはすんなりと受け入れがたいものです。しかし、inodeのディレクトリ取り扱いが見てみると、なる程と受け入れることが可能です。

ファイルもディレクトリもinodeベースで構造は同じものです。ファイルそのもの管理はファイルのinodeが行い、その中身はinodeにひもずくデータブロックに収められます。ディレクトリにもinodeが割り当てられ、そこからひもずくデータブロックに、このディレクトリ下のファイル/ディレクトリが、管理情報として収められています。

ファイルを作成すると、そのファイルのinodeがつくられるのはもちろん。同時にそのディレクトリのデータブロックに、このファイルのinodeおよびファイル名等が収められます。ファイルを削除すれば、おなじように、ファイルのinodeが削除され、同時にディレクトリのデータブロック上のこのファイルに関する情報も削除されます。
[kitamura@localhost test]$ ls -l
drwxrwxr-x 2 kitamura kitamura 4096 dir 

[kitamura@localhost dir]$ ls
a  b

[kitamura@localhost dir]$ cat a
aaa

[kitamura@localhost dir]$ cat b
bbb
ディレクトリのパーミッションで-rとすると、ディレクトリのデータブロックが見えないと言うこと。すなわちlsできないことを意味します。しかしファイルの削除、およびファイルの中を読み書きすることは可能なのです。
[kitamura@localhost test]$ ls -l
d-wx-wx--x 2 kitamura kitamura 4096 dir <- 読み込みパーミッション削除

[kitamura@localhost dir]$ ls
ls: cannot open directory .: 許可がありません

[kitamura@localhost dir]$ echo ccc > c
[kitamura@localhost dir]$ cat c
ccc
ディレクトリのパーミッションで-wとすると、lsで見えますが、ディレクトリのデータブロックに書き込めないということで、削除とか新規作成ができないことになります。もちろんファイルの中を読み書きすることは可能です。
[kitamura@localhost test]$ ls -l
dr-xr-xr-x 2 kitamura kitamura 4096 dir <- 書き込みパーミッション削除

[kitamura@localhost dir]$ ls
a  b  c

[kitamura@localhost dir]$ cat a
aaa

[kitamura@localhost dir]$ echo ddd > d
bash: d:許可がありません
そしてxは、ディレクトリの読み書きはでき、そのファイルの中身がみれない。となりそうですが、ディレクトリ/ファイルの中身を読み書きできるか。ということのようです。
[kitamura@localhost test]$ ls -l
drw-rw-r-- 2 kitamura kitamura 4096 dir <- 実行パーミッション削除

[kitamura@localhost dir]$ ls
ls: cannot open directory .: 許可がありません

[kitamura@localhost dir]$ echo ddd > d
bash: d: 許可がありません

[kitamura@localhost dir]$ cat a
cat: a: 許可がありません
ディレクトリのinodeブロックに設定されている(ファイルならファイル自身の実態)各ファイルのinode情報(実効/読み込み/書き込み)にかかる処理ができないこと。

最終更新 2014/02/28 14:16:07 - north
(2010/03/10 17:22:04 作成)


検索

アクセス数
3698128
最近のコメント
コアダンプファイル - sakaia
list_head構造体 - yocto_no_yomikata
勧告ロックと強制ロック - wataash
LKMからのファイル出力 - 重松 宏昌
kprobe - ななし
ksetの実装 - スーパーコピー
カーネルスレッドとは - ノース
カーネルスレッドとは - nbyst
asmlinkageってなに? - ノース
asmlinkageってなに? - よろしく
Adsense
広告情報が設定されていません。