Linux ファイルシステムでの ACL

Linuxでファイルのアクセス権(パーミッション)以外のところでファイルへのアクセス制限がかかっているようなのだけどどうなっているの?」という質問があった。そりゃあ ACL だな。

ls の表示結果がこんな感じになる。11桁目に "+" がついているところが ACL が適用されているところ。

drwxrwxr-x   4 root root  4096  8月 10  2009 TEST1
drwxrwxr-x+ 15 root root  4096 10月 20  2011 TEST2
drwxrwxr-x  23 root root  4096  4月 26 13:12 TEST3
drwxrwxr-x+ 33 root root  4096 11月 10  2012 TEST4

ACL の中身を確認するのは getfacl

$ sudo getfacl TEST2
# file: TEST2
# owner: root
# group: root
user::rwx
user:test01:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:test01:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

これと同様の設定をするには setfacl を使う

$ sudo setfacl -R -d -m u:test01:rwx TEST02

-R でディレクトリを再帰検索して、-d でデフォルト値とする。デフォルトが入っていると、その後そのディレクトリに追加作成されたファイルなどは ACL を引き継ぐ動作をする。