それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

パーミッションのrwxのxとrの関係

あるWikiを見ていた。

chmod - ファイルのアクセス権の変更

r 読み取り可能、ディレクトリの場合は一覧許可
w 書き込み可能、ディレクトリの場合は作成許可
x 実 行を許可、ディレクトリの場合は侵入許可

上位ディレクトリの侵入パーミッション (x) さえ切ってしまえば、 下位のディレクトリ、ファイルへアクセスも不可能になります。 読み取り許可 (r) はなく、侵入許可 (x) はある場合、 ls などでディレクトリ内を参照することはできませんが、 ディレクトリ内のファイルを直接指定してファイルを参照することはできます。

知らなかった。読み取り許可は与えなくても実行許可を与えると、ディレクトリ内部へ移動可能なのですよ。よく考えたら当たり前なのですが。


「x」は削除だと思ってました。

数年前の新人時代に

「ディレクトリの実行は、削除するってことだよ。」

と先輩から教わりました。

「ディレクトリの実行=削除」は間違いじゃんね?

実行フラグ[x]をハズしてみると削除できた。
takuya@cheese:/var/www$ chmod 600 hoge
takuya@cheese:/var/www$ ls -alt
合計 20
drwxrwxrwx  3 www-data www-data 4096 2009-11-27 15:55 .
drw-------  2 takuya   takuya   4096 2009-11-27 15:55 hoge
-rw-r--r--  1 www-data www-data   18 2009-07-14 20:26 index.php
-rw-r--r--  1 www-data www-data   45 2009-07-14 16:47 index.html
drwxr-xr-x 16 root     root     4096 2009-07-14 16:47 ..
takuya@cheese:/var/www$ rm hoge -rf

で、R/Xの関係なんだけど。

これから応用すると、ディレクトリ内部一覧が見えない。

けど、その下へはアクセス可能なんて事が出来る。

takuya@cheese:/var/www$ chmod 311 hoge/
takuya@cheese:/var/www$ ls -alt
合計 20
drwxrwxr-x  3 www-data www-data 4096 2009-11-27 15:31 .
d-wx--x--x  2 takuya   takuya   4096 2009-11-27 15:31 hoge
-rw-r--r--  1 www-data www-data   18 2009-07-14 20:26 index.php
-rw-r--r--  1 www-data www-data   45 2009-07-14 16:47 index.html
drwxr-xr-x 16 root     root     4096 2009-07-14 16:47 ..
takuya@cheese:/var/www$ mkdir hoge/fuga
takuya@cheese:/var/www$ ls hoge/
ls: ディレクトリhoge/を開けません: Permission denied
takuya@cheese:/var/www$ cd hoge/fuga
takuya@cheese:/var/www/hoge/fuga$ #見られないけど入れる。

当たり前だけどね。共用サーバーとか使ってるときディレクトリにX属性つけるなよってことで。



追記

このエントリは多大な勘違いで書いていたので修正した。