特集
2004/03/07 00:00 更新


特集:Linuxカーネル2.6で実現するACL (3/5)


ACL活用例:Webサイトおよび関連ファイルをより安全にする

 身近なACL活用例として、Webサーバにおいて利用できるテクニックを紹介しよう。

 ApacheなどのWebサーバを利用している場合は、各ユーザーの「$HOME/public_html」ディレクトリ以下にWebコンテンツを配置していることも多いだろう。このような状況では、一般的なUNIXのパーミッション設定ではホームディレクトリおよびpublic_htmlディレクトリに対してWebサーバがアクセスできるように「r-x」、もしくは最低限でも「--x」のパーミッションを設定する必要がある。その上で他ユーザーからホームディレクトリへのアクセスを防止するには、Webサーバとユーザーが同一のグループに属しているか、もしくは閲覧を拒否したい全ユーザーと同一のグループに属している必要があるが、これらの要求は一般ユーザーの権限では満たせないものである。

 このような場合にもPOSIX ACLは威力を発揮する。何故ならば、各ユーザーはroot(システム管理者)の権限もしくは許可なしに、システム上のユーザーに対するファイルへのアクセス権限を自由かつ詳細に設定できるからだ。Webサーバが動作しているユーザーIDさえ知っていれば、グループ・第三者のアクセス権限を「---」に設定しつつ、必要なユーザーのみのアクセスを許可することができる。Webサーバが「www-data」のユーザーIDで動作していると仮定した場合、次のようにすればよい。


$ cd ~
$ mkdir public_html
$ chmod 700 public_html
$ setfacl -m u:www-data:rx public_html

 ホームディレクトリ自体を覗けないように設定している場合でも、「public_html」ディレクトリと同様に例外設定を行うことで、「public_html」ディレクトリへのアクセスを許可できる。この場合、ユーザーはディレクトリからファイル名のリストを取得できる必要はないと考えられるため、「r-x」ではなく「--x」のパーミッションを与えるだけでよいだろう。


$ chmod 700 ~
$ setfacl -m u:www-data:x ~

 これで、ユーザー「doggie」のホームディレクトリには誰もアクセスできないが、例外的にユーザー「www-data」が「$HOME/public_html」ディレクトリ以下のみを参照できるように設定できた。同様に、掲示板スクリプトを配置し、スクリプトのデータを「$HOME/data/bbs」に保存する場合、ユーザ「www-data」以外を完全に閉め出すことができるだろう。


$ chmod 700 ~/data/bbs
$ setfacl -m u:www-data:rwx ~/data/bbs

 このようにすることで、「$HOME/data/bbs」以下には、「doggie」「www-data」のみがアクセスできるように設定できた。巷でよく見かける「データ保存ディレクトリのパーミッションを777に云々……」という方法ではWebサーバ以外のユーザーにもアクセス権限を与えてしまうが、ACLを利用すると権限が必要なユーザーのみに必要な権限だけを付与でき、簡単かつ確実に安全性を高められることがお解かりいただけただろうか。

ACL設定は拡張属性として記録される

 ところで、ACL設定を行うとディレクトリのサイズが増加することには気づいただろうか。次の実行例では、ACL設定を消去するとディレクトリ内のデータ量を示す「total」の値が小さくなっているのが分かる。

$ ls -l
total 0
-rw-r--r--    1 doggie doggie     0 Jan 28 11:50 testfile
$ setfacl -m u:rapis:rw testfile ← ACLを設定
$ ls -l
total 4
-rw-rw-r--+   1 doggie doggie     0 Jan 28 11:50 testfile
$ setfacl -b testfile ← ACLを消去
$ ls -l
total 0
-rw-r--r--    1 doggie doggie     0 Jan 28 11:50 testfile
$

 これは、Linuxの場合、ファイルに対する拡張情報(Extended Attributes)中にACLの設定が記録されているためである。当然、設定するACLの設定量に応じて拡張情報の領域は肥大化する。現在のディスク事情から考えれば微々たる量ではあるが、このような仕組みになっているということは気に留めておくと良いだろう。

 次ページ以降では、ACLを含めたファイルのバックアップおよびリストアの方法について解説していこう。

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

[長谷川 猛,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.