概要
この章では、LinuxファイルシステムのPOSIX ACL(アクセス制御リスト)の背景と機能を簡潔に説明します。ACLは、ファイルシステムオブジェクトに対する従来のパーミッション概念の拡張として使用できます。ACLを使用すれば、従来のパーミッション概念で許されていた以上のパーミッションを柔軟に定義できます。
POSIX ACLという用語は、このACLが真のPOSIX(Portable Operating System Interface)規格であることを示唆しています。ドラフト規格のPOSIX 1003.1eとPOSIX 1003.2cは、いくつかの理由で白紙に戻されました。それにもかかわらず、UNIXファミリに属している多くのシステムに見られるACLは、これらのドラフト規格に基づいており、この章で説明するファイルシステムACLの実装も同様にこの2つの規格に従っています。これらの規格については、http://wt.xpilot.org/publications/posix.1e/を参照してください。
従来どおり、Linuxシステムのファイルオブジェクトごとに3セットのパーミッションが定義されます。この3セットには、読み取り(r)、書き込み(w)、実行(x)の各パーミッションがあり、それぞれが3種類のユーザ(ファイル所有者、グループ、その他のユーザ)ごとに設定されます。そのほかに、ユーザID設定ビット、グループID設定ビット、スティッキビットを設定できます。
この無駄のない概念は、ほとんどの実際的なケースに十分適しています。ただし、複雑なシナリオまたは高度なアプリケーションの場合、以前は、システム管理者が従来のパーミッション概念の制限を回避するために多くの仕掛けを施す必要がありました。
ACLは、従来のファイルパーミッション概念を拡張する必要がある場合に使用できます。ACLを使用すれば、パーミッションが元の所有者や所有者の所属グループに対応していない場合でも個々のユーザまたはグループにそうしたパーミッションを割り当てることができます。アクセス制御リストは、Linuxカーネルの機能であり、現在ReiserFS、Ext2、Ext3、JFS、およびXFSでサポートされています。ACLを使用すると、アプリケーションレベルで複雑なパーミッションモデルを実装しなくても複雑なシナリオを実現できます。
ACLの利点は、WindowsサーバをLinuxサーバに置き換えるような場合にはっきりします。接続した一部のワークステーションは、移行後も引き続きWindowsの下で動作できます。Linuxシステムは、Sambaを搭載したWindowsクライアントにファイルサービスと印刷サービスを提供します。Sambaがアクセス制御リストをサポートしている場合は、LinuxサーバおよびWindows(Windows NT以降のみ)のどちらでもグラフィカルユーザインタフェースでユーザパーミッションを設定できます。winbinddを使用すれば、Linuxサーバ上にアカウントのない、Windowsドメインにしか存在していないユーザにパーミッションを割り当てることもできます。