ある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属性つけるなよってことで。
追記
このエントリは多大な勘違いで書いていたので修正した。