特集
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/*

・ファイル「testfile」に設定済みのユーザー「rapis」に対するアクセス権限を消去する
setfacl -x u:rapis testfile

・ファイル「testfile」からACLを全消去する
setfacl -b testfile

 次ページからは、具体的なACLの活用方法を紹介していく。

前のページ | 1 2 3 4 5 | 次のページ

[長谷川 猛,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.