ディレクトリのパーミッション
基礎的なことを再確認してばっかりな気がするけど、結構正確に理解してなかった気がする。
ディレクトリに書き込み(w)不可能かつ実行(x)不可能だとファイルの作成と追記が不可。
ディレクトリが実行(x)不可能だと追記が不可。
追記
kitokitoki: これ、僕もいっつも忘れてて、そのたびに調べ直してます。
はてなブックマーク - ディレクトリのパーミッション/ - Humanity
超基礎的なことだったのでid:kitokitokiさんにこう言ってブクマしてもらってうれしかったので、言葉だとわかりにくいので表作ってみた。表組み記法便利。
やれること | r-- | r-x | rw- | rwx |
---|---|---|---|---|
ファイルの作成 | 不可能 | 不可能 | 不可能 | 可能 |
ファイルへの追記 | 不可能 | 可能 | 不可能 | 可能 |
ls dir/ | データのみ読み出し可能*1 | 可能 | データのみ読み出し可能 | 可能 |
見づらくなりそうだったのでrがない場合は分けた。
やれること | --- | --x | -w- | -wx |
---|---|---|---|---|
ファイルの作成 | 不可能 | 不可能 | 不可能 | 可能 |
ファイルへの追記 | 不可能 | 可能 | 不可能 | 可能 |
ls dir/ | 不可能 | 不可能 | 不可能 | 不可能 |
ls dir/に関してはrがあればファイルのリストを読み出し可能、xがあるとメタデータも読み出し可能ってことか。
試した時のログ *2
$ mkdir root $ ls root/ $ touch root/{foo,bar,baz} $ ls -ld root/ drwxr-xr-x 2 tyru tyru 4096 2012-04-15 19:53 root/ $ sudo chown root:root root/ [sudo] password for tyru: $ ls -ld root/ drwxr-xr-x 2 root root 4096 2012-04-15 19:53 root/ $ ls -l root/ 合計 0 -rw-r--r-- 1 tyru tyru 0 2012-04-15 19:53 bar -rw-r--r-- 1 tyru tyru 0 2012-04-15 19:53 baz -rw-r--r-- 1 tyru tyru 0 2012-04-15 19:53 foo $ echo hehehe >root/foo zsh: ファイルが存在します: root/foo $ echo hehehe >>root/foo [1] $ touch root/hoge touch: `root/hoge'にtouchできませんでした: 許可がありません $ sudo chmod g-x root/ [1] $ sudo chmod o-x root/ $ l -ld root/ drwxr--r-- 2 root root 4.0K 2012-04-15 19:53 root/ $ echo hehehe >>root/foo zsh: 許可がありません: root/foo $ touch root/hoge [1] touch: `root/hoge'にtouchできませんでした: 許可がありません $ sudo chmod g+w root/ [20] $ sudo chmod o+w root/ $ ls root/ ls: root/barにアクセスできません: 許可がありません ls: root/fooにアクセスできません: 許可がありません ls: root/bazにアクセスできません: 許可がありません bar baz foo $ touch root/hoge [1] touch: `root/hoge'にtouchできませんでした: 許可がありません $ ls -ld root/ [1] drwxrw-rw- 2 root root 4096 2012-04-15 19:53 root/ $ sudo chmod 777 root/ $ touch root/hoge