差分

移動先: 案内検索

ユーザ権限とアクセス制御

3,453 バイト追加, 2013年8月31日 (土) 19:34
/* ACL (作業中) */
== ACL (作業中) ==
Access Control Lists(ACL)は元々のUNIXにはないアクセス制御方式で、その仕様に関してはPOSIXで定義されています。Linuxカーネル2.6以降で採用されています。Linuxカーネル2.6以降ではLinuxの主要ファイルシステムで利用可能です。
 
UNIXでは自分以外のユーザにアクセスを許可する場合は、グループに許可するか、それともすべてのユーザに許可するかの大まかな条件でアクセス制御をしています。一方、ACLではアクセス許可を特定のユーザの単位で、あるいはグループ単位で設定できます。ACLの導入により、これまでのUNIXのアクセス制御よりも複雑な設定をすることが可能になります。
 
次のようなファイルがあるとします。
 
$touch foo.txt
$ ls -l foo.txt
-rw-rw-r-- 1 hironobu hironobu 0 Aug 31 08:15 foo.txt
 
コマンドgetfaclを使ってパーミッションを表示すると次のようになります。
 
$ getfacl foo.txt
# file: foo.txt
# owner: hironobu
# group: hironobu
user::rw-
group::rw-
other::r--
 
次に自分以外のユーザが読み書きできないようにしてみます。
 
$ chmod go-rw foo.txt
$ ls -l foo.txt
-rw------- 1 hironobu hironobu 0 Aug 31 08:15 foo.txt
 
この状態でwww-dataユーザのみにfoo.txtの読み込みを許諾するとなると、グループを使う方法だとwww-dataとhironobuだけのグループを作り、そのグループを設定し、グループの読み込みを許可する、といったことをしなければなりません。しかしACLの機能を使えばwww-dataのみに読み込みを許諾することができます。属性を設定にはコマンドsetfaclを使用します。
 
=== setfacl ===
 
コマンドsetfaclはaclをセットするためのものです。ユーザwww-dataに"r"だけ許可をしてみます。
 
$ setfacl -m user:www-data:r foo.txt
 
ではコマンドgetfaclを使って、どう変化したか見てみましょう。
 
$ getfacl foo.txt
# file: foo.txt
# owner: hironobu
# group: hironobu
user::rw-
user:www-data:r--
group::---
mask::r--
other::---
 
先ほどの内容から2点変わっているのがわかるはずです。まず1点はuserの表示が増えたこと、そしてmaskという新しい項目ができたことです。maskは所有するユーザ以外に与えることのできる最大限の権限です。この場合はmaskに対して指定していないのでデフォルトの"r"が設定されています。
 
ここではwww-dataのみですが、複数のユーザに対しても同様に個別の設定をすることができます。
 
 
さて、この状態でls -lでファイルのパーミッションの状況をみてみましょう。
 
% ls -l foo.txt
-rw-r-----+ 1 hironobu hironobu 0 Aug 31 08:15 foo.txt
 
最後に"+"と表示されているのは、ACLが設定されているということを意味しています。
 
グループに対しても複数のグループを割り当てたりすることが可能です。
 
== 参考文献 ==
 
* openSUSE ドキュメンテーショ 第9章 Linux におけるアクセス制御リスト
http://opensuse-man-ja.berlios.de/opensuse-html/cha.security.acls.html
 
* Turbolinux 11 Server: ユーザーガイド 第 40章Posix ACL(Access Control List)
http://www.turbolinux.co.jp/products/server/11s/user_guide/c15067.html
== 脚注 ==
匿名利用者