特集
2004/03/07 00:00 更新
特集:Linuxカーネル2.6で実現するACL (2/5)
ext2/ext3でACLを利用する場合の注意
Linuxカーネル2.6では、ext2/ext3/JFS/XFSの4種類のファイルシステム上においてPOSIX ACLがサポートされる。ただし、ext2/ext3でACLを利用する場合は、「acl」オプションを付けてマウントする必要がある。オプションを指定せずにマウントした場合は以下のようなエラーメッセージが表示され、正常にACLを設定できないほか、既にACLを利用している場合には既存ACL設定が無効となり、意図したアクセス制御が行われないので注意が必要だ。
setfacl: bbs: Operation not supported |
なお、JFS/XFSファイルシステム上でACLを利用する場合は、特に設定を行う必要はない。
以下に、Linuxカーネル2.6がサポートする全てのACL対応ファイルシステムをマウントした例を示す。ext2/ext3ファイルシステムのある「/」および「/export」にのみ「acl」オプションが指定されている点を確認してほしい。
4種類のファイルシステムをACL対応の状態でマウントしたところ# mount /dev/sda2 on / type ext2 (rw,errors=remount-ro,acl) proc on /proc type proc (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) sysfs on /sys type sysfs (rw) /dev/sdb2 on /export_xfs type xfs (rw) /dev/sdb3 on /export_jfs type jfs (rw) /dev/sdb1 on /export type ext3 (rw,acl) # |
ext2/ext3でACLを利用したい場合は、システム起動時にファイルシステムが「acl」オプション付きでマウントされるよう、「/etc/fstab」ファイルを編集すればよい。
「/etc/fstab」ファイルの設定例# <file system> <mount point> <type> <options> <dump> <pass> /dev/sda2 / ext2 errors=remount-ro,acl 0 1 /dev/sdb1 /export ext3 rw,acl 2 2 /dev/sda1 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/sdb2 /export_xfs xfs rw 2 2 /dev/sdb3 /export_jfs jfs rw 2 2 |
ファイルのACLを設定・解除するには
これまでの手順を踏み、ファイルシステムをACLサポート付きでマウントしていれば、Linuxカーネル2.6でACLを利用する準備はできているはずだ。早速「setfacl」コマンドを利用してACLを設定してみよう。ここでは例として、「testfile」ファイルを作成し、そのファイルに対して、ユーザー「rapis」が読み込み・書き込み(rw)の権限を与えてみよう。また、「ls -l」コマンドおよび「getfacl」コマンドによって、設定されたACLを確認する。ACLが設定されたファイルには「ls -l」コマンドの出力において、パーミッションの最後に「+」がつくことが分かるだろう。
「setfacl」コマンドでACLを設定、「getfacl」コマンドで確認するACLを設定したいファイル「testfile」を作成 $ touch testfile $ ls -l total 0 -rw-r--r-- 1 doggie doggie 0 Jan 28 11:50 testfile ACLを設定 $ setfacl -m u:rapis:rw testfile $ ls -l total 4 -rw-rw-r--+ 1 doggie doggie 0 Jan 28 11:50 testfile $ getfacl testfile # file: testfile # owner: doggie # group: doggie user::rw- user:rapis:rw- group::r-- mask::rw- other::r-- $ |
以上で、「testfile」はグループ/第三者による書き込みが不可能だが、ユーザー「rapis」では例外的に書き込み可能な状態になった。
「setfcal」コマンドの基本的な使い方の例
先ほどは「testfile」ファイルに対しユーザーのACL設定を行ったが、同じ要領でグループのACL設定を行うことも可能だ。そのほか、ファイルからACL設定を消去する場合も「setfacl」コマンドを利用する(-x、-bオプション)。ここでは、「setfacl」コマンドの基本的な使用例を以下にまとめておく。
・ユーザー「doggie」にファイル「testfile」へのアクセス権限(rwx)を与えるsetfacl -m u:doggie:rwx testfile
・グループ「staff」にファイル「testfile」へのアクセス権限(r--)を与える
setfacl -m g:staff:r testfile
・ユーザー「rapis」にディレクトリ「data」内の全てのファイルに対しアクセス権限(rw)を与える
setfacl -m u:rapis:rw data/*
setfacl -x u:rapis testfile
・ファイル「testfile」からACLを全消去する
setfacl -b testfile
次ページからは、具体的なACLの活用方法を紹介していく。
[長谷川 猛,ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.