Linux: ディレクトリのPermissionについて
ディレクトリのPermissionについて、rwxのどれがどのような操作に影響しているのか気になったので試してみた。次のようなディレクトリを/tmp/testに用意。
# ll /tmp/test
drwx--x--x 2 root root 4096 11月 8 10:52 exe/
drwxr-xr-x 2 root root 4096 11月 8 10:52 exe_read/
drwx-wx-wx 2 root root 4096 11月 8 10:52 exe_write/
drwxr--r-- 2 root root 4096 11月 8 10:52 read/
drwxrw-rw- 2 root root 4096 11月 8 10:52 read_write/
drwxrwxrwx 2 root root 4096 11月 8 10:52 read_write_exe/
drwx-w--w- 2 root root 4096 11月 8 10:51 write/
次のようなコマンドを一般ユーザで実行して結果を確認する(今回は一番右側のothersのPermissionを参照する)
testdir=exe
ll /tmp/test/${testdir}
cat /tmp/test/${testdir}/read.txt
touch /tmp/test/${testdir}/touch.txt
chmod 777 /tmp/test/${testdir}
echo hogehoge >> /tmp/test/${testdir}/read.txt
次のような結果になった。
drwx--x--x 2 root root 4096 11月 8 10:52 exe/
OK: cat echo
NG: ls touch chmod
drwxr-xr-x 2 root root 4096 11月 8 10:52 exe_read/
OK: ls cat echo
NG: chmod touch
drwx-wx-wx 2 root root 4096 11月 8 10:52 exe_write/
OK: cat touch echo
NG: ls chmod
drwxr--r-- 2 root root 4096 11月 8 10:52 read/
OK: ls(ファイル名のみ、ファイルサイズ等は表示できず)
NG: cat touch chmod echo
drwxrw-rw- 2 root root 4096 11月 8 10:52 read_write/
OK: ls(ファイル名のみ、ファイルサイズ等は表示できず)
NG: cat touch chmod echo
drwxrwxrwx 2 root root 4096 11月 8 10:52 read_write_exe/
OK: ls cat touch echo
NG: chmod
drwx-w--w- 2 root root 4096 11月 8 10:51 write/
OK: 無し
NG: ls cat touch chmod echo
厳密な定義は調べないが、試した結果としては次みたいな感じ。
x (exe)の権限がある: 既存のファイルに追記が出来る、ファイルの中身を表示できる
r (read)の権限がある: lsが出来る(ディレクトリのListingが出来る)、xが無いとディレクトリ内のファイル情報は引き出せない
w (write)の権限がある:xとセットで設定しておくとファイルを作成できる(ディレクトリ内のファイル操作ができる)
xだけでcatとechoが出来るのは盲点。それぞれrとwが必要と思ってた。。。