LIDSで実現できるきめ細かなアクセス制御のカギを握るのが,「アクセス制御リスト(ACL=Access Control List)」である。ACLは,アクセス制御対象となるファイルやケーパビリティ(これらを「Object」と呼ぶ)や,制限されたObjectに対してアクセスしようとするプログラム(これを「Subject」と呼ぶ)の関係を定義したものだ。今回は,ACLの設定方法を具体的に説明する。

各ステートごとのACLファイルとGlobal ACLファイルの関係

図1●各ステートのファイルとGlobal ACLファイルの関係
 これまでの連載で紹介したように,LIDS 2.0系列では,システムが起動してから停止するまでを3つの状態(ステート)に分類して,それぞれに独自のACLを設定できる。BOOTステートでは「BOOT ACL」,POSTBOOTステートでは「POSTBOOT ACL」,SHUTDOWNステートでは「SHUTDOWN 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ファイルなどとして登録される。