さて,問題です.いま,以下のような状態です.
$ id
uid=503(bar) gid=100(users) groups=100(users)
$ ls -la ../
total 16
drwxr-xr-x 4 root root 4096 Mar 17 23:30 .
drwxr-xr-x 3 root root 4096 Mar 17 23:30 ..
drwx---r-x 2 bar users 4096 Mar 17 23:59 bar
drwx---r-x 2 foo users 4096 Mar 17 23:34 foo
注目すべき点は次の通り.
- 現在のアカウントは bar
- 一つ上のディレクトリのパーミッションは a+x
- 同じ階層にあるディレクトリ foo の owner は foo で,group は bar と同じ.
- 同じ階層にあるディレクトリ foo の パーミッションは 705
ここで,以下のコマンドを実行するとどうなるでしょうか?
$ ls ../foo/
o+rx なので,普通にみることができると思っていたのですが,実際は違いました.
正解は,
$ ls ../foo/
/bin/ls: ../foo/: Permission denied
ソースを読む元気がないので状況から想像すると,パーミッションの判定は,一番緩いものが適用されるのではなくて,owner や group がマッチする条件が優先されるみたいですね.試しに.
$ chmod 077 .
としてみると,自分だけ読み書きできないディレクトリになりました.
4年ほど *nix を使い続けていますが,まだまだ知らないことがたくさんあるようです.

コメントする