/tmp を ACL 有効にしてみます。
/tmp UFS2 でフォーマットされていますが、インストール直後はACLが有効になっていません。
tunefs で確認することができます。
eden# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
eden# tunefs -p /dev/ad0s1e
tunefs: ACLs: (-a) disabled
tunefs: MAC multilabel: (-l) disabled
tunefs: soft updates: (-n) enabled
tunefs: maximum blocks per file in a cylinder group: (-e) 2048
tunefs: average file size: (-f) 16384
tunefs: average number of files in a directory: (-s) 64
tunefs: minimum percentage of free space: (-m) 8%
tunefs: optimization preference: (-o) time
tunefs: volume label: (-L)
ACLを有効にするには、一旦 umount して tunefs してから再度 mount します。
eden# umount /tmp
eden# tunefs -a enable /dev/ad0s1e
tunefs: ACLs set
eden#
eden# mount /dev/ad0s1e /tmp
eden# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad0s1e on /tmp (ufs, local, soft-updates, acls)
eden#
eden# tunefs -p /dev/ad0s1e
tunefs: ACLs: (-a) enabled
tunefs: MAC multilabel: (-l) disabled
tunefs: soft updates: (-n) enabled
tunefs: maximum blocks per file in a cylinder group: (-e) 2048
tunefs: average file size: (-f) 16384
tunefs: average number of files in a directory: (-s) 64
tunefs: minimum percentage of free space: (-m) 8%
tunefs: optimization preference: (-o) time
tunefs: volume label: (-L)
eden#
尚、ACLが有効になっていない時に setfacl すると、以下のようなエラーになります。
setfacl: acl_get_file() failed: Operation not supported
ACLを設定するコマンドが setfacl 。現在のACL情報を表示するのが getfacl です。
以下のようなケースをやってみます。
- ユーザ kenz が hoge1.txt(rw-r--r--) と hoge2.txt(rw-r--r--) を作成します。
- hoge1.txt と hoge2.txt を getfacl してACL情報を確認します。
- hoge1.txt に対してユーザ ito が書き込み権限をもつように setfacl します。
- hoge1.txt を getfacl してACL情報を確認します。
- ito が hoge1.txt と hoge2.txt に書き込んでみます。
> echo "hoge" > hoge1.txt
> echo "hoge" > hoge2.txt
> ls -la *.txt
-rw-r--r-- 1 kenz wheel 5 Aug 19 17:32 hoge1.txt
-rw-r--r-- 1 kenz wheel 5 Aug 19 17:32 hoge2.txt
> getfacl *.txt
#file:hoge1.txt
#owner:1001
#group:0
user::rw-
group::r--
other::r--
#file:hoge2.txt
#owner:1001
#group:0
user::rw-
group::r--
other::r--
>
> id kenz
uid=1001(kenz) gid=1001(kenz) groups=1001(kenz), 0(wheel)
>
> setfacl -m user:ito:rw- hoge1.txt
> getfacl hoge1.txt
#file:hoge1.txt
#owner:1001
#group:0
user::rw-
user:ito:rw-
group::r--
mask::rw-
other::r--
>
> su ito
Password:
%whoami
ito
%id
uid=1002(ito) gid=1002(ito) groups=1002(ito), 0(wheel)
%
%pwd
/tmp
%echo "hogehoge" >> hoge1.txt
%echo "hogehoge" >> hoge2.txt
hoge2.txt: Permission denied.
%