LIDSで実現できるきめ細かなアクセス制御のカギを握るのが,「アクセス制御リスト(ACL=Access Control List)」である。ACLは,アクセス制御対象となるファイルやケーパビリティ(これらを「Object」と呼ぶ)や,制限されたObjectに対してアクセスしようとするプログラム(これを「Subject」と呼ぶ)の関係を定義したものだ。今回は,ACLの設定方法を具体的に説明する。
各ステートごとのACLファイルとGlobal ACLファイルの関係
![]() |
図1●各ステートのファイルとGlobal ACLファイルの関係 |
これらのACLの実体は,「.acl」という拡張子を持ったファイル(以下,aclファイル)である。そして,aclファイルは,「.conf」および「.cap」という拡張子を持ったファイルから生成される。
各ステートのaclファイルを生成するには,2種類のファイルが必要になる。一つは,各ステート独自のアクセス権限やケーパビリティを設定したファイル,もう一つがすべてのステートに共通するアクセス権限やケーパビリティを設定したファイルである。この各ステートに共通したファイルを「Global ACLファイル」と呼ぶ。例えば,BOOT ACLはBOOT ACLファイルとGlobal ACLから生成される。
ここで注意してほしいのは,Global ACLファイルやBOOT ACLファイルが,実際には複数のファイルで構成されることだ。例えば,Global ACLファイルの実体は,lids.confとlids.capである。同様に,BOOT ACLファイルの実体は,lids.boot.confとlids.boot.capである。ACLファイルの具体名を表1に,各ステートのファイルと,Global ACLファイルの関係を図1[拡大表示]に示す。
表1●ACLファイルの実体
ACLファイル名 | 実際のファイル名 |
---|---|
Global ACLファイル | lids.conf,lids.cap |
BOOT ACLファイル | lids.boot.conf,lids.boot.cap |
PSOTBOOT ACLファイル | lids.postboot.conf,lids.postboot.cap |
SHUTDOWN ACLファイル | lids.shutdown.conf,lids.shutdown.cap |
各ステートのACLファイルが優先される
基本的に,すべてのステートに共通するアクセス権限やケーパビリティをGlobal ACLファイルに,それとの差分を各ステートのACLファイルに記述する。もし,同じObjectに対するアクセス権限が両方に設定されている場合には,各ステートのACLファイルの内容が優先される。例えば,Global ACLファイルで/varディレクトリをREADONLYにしていたとしても,BOOT ACLファイルで/varをWRITEにしていれば,BOOT ACLでは/varがWRITEに指定される。ケーパビリティに関しても,Global ACLファイルで規定したケーパビリティ・バウンディング・セットよりも,それぞれのステートで設定されたケーパビリティが優先される。
設定方法の例を示す。lidsconfコマンドを用いて
# /sbin/lidsconf -A -s /usr/sbin/httpd -o /var/www -j READONLY
というようにステートを指定しないで設定した場合には,Global ACLファイルとして登録される。
/sbin/lidsconf -A BOOT -s /usr/sbin/httpd -o /var/www -j READONLY
というように個別のステート(この例ではBOOT)を指定している場合には,BOOT ACLファイルなどとして登録される。