HAYAGUI

FreeBSD 5.4 + ACL

はじめに

MacOSX 10.4 でACLをやったので、FreeBSD 5.4 でもやってみました。

ファイルシステムをACL有効にする

/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

setfacl/getfacl

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.
%


戻る



(C)1999 - 2005 Kenji Ito All rights reserved.