ACL (アクセス制御リスト Access Control List)

kernel 2.6から搭載されたアクセス制御機能で、個別のユーザ・グループ対する許可設定が行える。

細かいアクセス制御ができるが、家で普通に使うなら従来のパーミッションで十分。

 

対応ファイルシステム

Ext2/Ext3、JFS、XFS、ReiserFS(最初の頃は非対応だった)

Ext2/Ext3、ReiserFSで使うには/etc/fstab?にaclオプションが必要らしいのだが、Fedoraは無くても大丈夫なようだ。カーネルの設定でそうなってるのかな?

setfacl: file: Operation not supported

とエラーが出る場合は

/dev/sda2  /home  ext3 defaults,acl  0 2

のように、/etc/fstab?のハードディスク行へaclを付けて再起動
その場限りなら mount -o acl,remount / でもいける

ファイル・ディレクトリにACLが設定されているかどうか

ls -l のモード右端に + が付いていればACLが付いている

$ ls
-rw-------+ 1 root root 21 2008-04-19 03:07 hoge.txt

getfacl

ACLを表示する

$ getfacl hoge.txt
 # file: hoge.txt
 # owner: root
 # group: root
 user::rw-
 user:sawa:r--
 group::---
 mask::r--
 other::---

上の例では所有ユーザ・グループがrootでパーミッションが600(rw-------)のファイルに対し、特別にsawaユーザのみ読み込みを許可している。

maskは所有者以外に与えられる最大アクセス権。例えば

# owner: root
user:sawa:rwx #effective:r--
mask::r--

のファイルは読み込みしかできない(#effective が実際の有効値)
どういう時に使うかよくわからんのだが、普通はACLを設定しなおすたびにmaskも適した値になるので、気にしなくていいようだ。

setfacl

ファイル・ディレクトリのACLを設定する。

sawaというユーザー(u)に読み書き(rw)を許可する
# setfacl -m u:sawa:rw file

全てのACL設定を削除
# setfacl -b file

hogeグループに対するACLだけ消去
# setfacl -x g:hoge file

-d でデフォルトACLを設定(ディレクトリのみ)。
そのディレクトリ下にファイルを作成する際、ACLが継承される
# setfacl -d -m u:sawa:r-x dir
デフォルトACLを消す
# setfacl -k dir

GUI

GNOME向けのEicielがある。
Eicielを使った抜け目のないACL管理

参考サイト

更新日 2010-03-30