Eicielを使った抜け目のないACL管理

 各ファイルの読み/書き/実行のパーミッションをユーザ、グループ、その他(UGO:User、Group、Others)に分けて設定する従来のファイルパーミッションモデルには、ユーザ別またはグループ別のパーミッション定義には使えないという欠点がある。そこで、登場するのがアクセス制御リスト(ACL:Access Control List)だ。ファイルマネージャNautilusと統合されたグラフィカルツール Eiciel を使えば、こうしたACLを簡単に管理できる。

 UGOモデルでは、1つのファイルに1つのグループしか関連づけられない。ユーザCharlieとAlexiaが別々のグループに属していて、あるファイルの読み取りパーミッションをCharlieに、同じファイルの読み書きパーミッションをAlexiaにそれぞれ設定することを考えれば、私の言わんとすることがわかってもらえるだろう。ACLを使えば、複数のユーザおよびグループに対して複雑なパーミッションを指定できる。

 EicielはGNOMEツールだが、必要なGNOMEライブラリをインストールすればKDEでも実行できる。ACLはカーネル2.6でもそのまま利用でき、ext2、ext3、XFS、JFS、ReiserFSの各ファイルシステムに対応している。

 Eicielのインストールは、各ディストリビューションの正式なソフトウェアリポジトリからapt-getかyumを使って行う。インストールが終わると、スタンドアロンアプリケーションまたはNautilusエクステンションのどちらかの形でEicielを実行できる。ただし、Nautilusエクステンションのほうは利用する前にNautilusを再起動する必要があるだろう。「killall nautilus」コマンドでNautilusを再起動したら、ACLのエントリを定義してみよう。そのためには、対象となるファイルを右クリックして「Properties」を選び、「Access Control List」タブをクリックする。

 ACLもまた、ユーザおよびグループごとに定義される従来の読み/書き/実行のパーミッションの形をとっている。ACLを定義するには、対象となるユーザやグループを画面の下側で選び、「Add」をクリックしてアクセス制御リストに追加する。これで、追加したユーザやグループのそれぞれにパーミッションを定義できるようになる。具体的には、追加したユーザおよびグループが「Entry」欄の下に読み/書き/実行に対応した3つのチェックボックスと共に一覧表示される。このチェックボックスを使って、選んだユーザとグループに対して任意の組み合わせのパーミッションを定義できるわけだ。

eiciel1_thumb.png
Eiciel

 Fedoraマシンの場合、さまざまなユーザやグループを表示するには「Also show system participants」というチェックボックスをオンにする必要がある。これは、その他のディストリビューションとは違って、FedoraのユーザIDが1000ではなく500から始まっているためだ。通常、1000より小さいユーザIDはroot、apache、ftpといったシステムアカウントとして予約されている。

 「Properties」画面の「Access Control List」タブをクリックすると、デフォルトの状態では「System Participants」の下にある「User」ラジオボタンがオンになっている。ACLにグループを追加するには、「Group」ラジオボタンをオンにしておく。

 「Mask」値により、1つのACLエントリで設定できる最大限のパーミッションが定められている。ユーザまたはグループに対して「Mask」で許可されていないパーミッションを設定すると、そのパーミッションの隣に感嘆符記号が表示される。これは、そのパーミッションが正しく設定されていないことを意味する。つまり、読み/書きまでしか許可しないマスクが設定されている場合は、どのユーザやグループに対しても読み/書き/実行のパーミッションは定義できない。実行パーミッションを追加する操作自体は行えるが、その場合は実行パーミッションが正しく設定されていないことを示す感嘆符が表示される。

 残念ながら、Eicielはまだ再帰処理に対応していない。そのため、複数のファイルや別のディレクトリにACLを設定する場合は、個別にパーミッション定義を行う必要がある。なお、Eicielのコマンドライン版ともいえるsetfaclコマンドは、再帰処理に加え、Eicielのその他機能のすべてに対応している。

 たとえば「setfacl -m u:charlie:rw /home/linuxlala/quotes.txt」とすれば、ユーザCharlieに対して読み書きのパーミッションが設定される。また「setfacl -m u:alice:r,u:charlie:rw,g:linuxlala:r /home/linuxlala/quotes.txt」のようにすれば、同時に複数のユーザやグループに対してパーミッションを定義できる。ACLが適切に定義されているかどうかの確認には、次のgetfaclコマンドを使用する。

getfacl /home/linuxlala/quotes.txt
# file: quotes.txt
# owner: linuxlala
# group: linuxlala
user::rwx
user:alice:r--
user:charlie:rw-
group:r--
group:linuxlala:r--
mask::rwx
other::r-x

 このように、Eicielは使いやすいとはいえ、setfaclコマンドにはまだまだかなわない。一方、setfaclにはEicielのような魅力に乏しいのが難点だ。

Shashank Sharmaはフリー/オープンソースソフトウェアの初心者向け記事を執筆する傍ら、Linux.comフォーラム掲示板の管理人も務める。『Beginning Fedora』(Apress刊)の共著者でもある。

Linux.com 原文