ACL-ファイルアクセス制御リスト


アクセス制御リスト(Access Control List,ACL)は、あるアクセスを制御するためのフレームワーク構造である.LinuxではFACLがファイルアクセス制御リストですが、設定することで、同じファイルを異なるユーザーに異なる権限を与えることができます.例えば、Aユーザにこのファイルを読む権限を持たせ、Bユーザにこのファイルに対して何の権限も与えないようにすることができる.では、Linuxでアクセス制御リストを実現するにはどうすればいいのでしょうか.次は見てみましょう.ここでは、前に作成したディスクアレイ/dev/md 1というファイルシステムを使用します.
1、ファイルシステムのマウント
ファイルシステムはマウント時にacl機能を自動的に有効にしないので、マウント時にaclというマウントオプションを指定する必要があります.私たちは2つの方法を使用することができます.1つは永続的です.プロファイルを直接編集することです.もう1つは一時的です.コマンドを使用して再マウントするときにaclオプションを指定します.
一時的:

  
  
  
  
  1. [root@stu14 data]# mount –o remount,acl /dev/md1 /data 

または

  
  
  
  
  1. [root@stu14 data]# tune2fs –o acl /dev/md1 

この方法は、システムを再起動したり、再マウントしたりするときにaclオプションを指定しない限り、失効します.
永続性:

  
  
  
  
  1. [root@stu14 data]# vim /etc/fstab 
  2. /dev/md1 /data ext3 defaults,acl 0 0 

プロファイルを編集して保存すると、有効になるように再マウントできます.
2、ACLの設定
ファイルのaclリストを表示するコマンドの使用形式:

  
  
  
  
  1. # getfacl FIlENAME 

例:

  
  
  
  
  1. [root@stu14 data]# getfacl test  
  2. # file: test 
  3. # owner: root 
  4. # group: magedu 
  5. user::rw- 
  6. group::r-- 
  7. other::r-- 

ここにはこのファイルのデフォルト権限しかありません.見てみればわかると信じています.
aclリストのコマンドの使用フォーマットの設定
 

  
  
  
  
  1. #setfacl <mx> <u:username:mode|g:groupname> FILE 

-m:aclを設定するために使用されます.
-x:aclをキャンセルする;
u:ユーザーに対してacl設定を行う;
g:グループをacl設定する;
例:aclレコードの追加

  
  
  
  
  1. [root@stu14 data]# setfacl -m u:gentoo:rw- test  
  2. [root@stu14 data]# getfacl test  
  3. # file: test 
  4. # owner: root 
  5. # group: magedu 
  6. user::rw- 
  7. user:gentoo:rw- 
  8. group::r-- 
  9. mask::rw- 
  10. other::r--  

1行多く見たのではないでしょうか.その行は私たちが追加したものです.これは良いgentooユーザーがこのファイルを読み書きすることができます.グループ設定はuをgに変更することにほかならないが,ユーザをグループに変更すればokであり,簡単である.
ファイルの所有者とrootユーザーだけがファイルのアクセス制御リストを設定できることに注意してください.
例:aclレコードの削除

  
  
  
  
  1. [root@stu14 data]# setfacl -x u:gentoo test  
  2. [root@stu14 data]# getfacl test  
  3. # file: test 
  4. # owner: root 
  5. # group: magedu 
  6. user::rw- 
  7. group::r-- 
  8. mask::r-- 
  9. other::r-- 

直接-x、uにusernameを追加すればいいので、権限を指定する必要はありません.
3、デフォルトaclの設定
 

  
  
  
  
  1. [root@stu14 data]# setfacl –m d:u:gentoo:rw- test1/ 
  2. [root@stu14 data]# setfacl –m d:u:gentoo:rw- test1/  

デフォルトのaclとは、1つの目にaclレコードを追加することであり、このディレクトリの下で作成されたすべてのファイルが自動的にこのaclレコードを追加します.この実装も簡単です.uまたはgの前にd:を追加すればokです.しかし、これは長くはかかりません.
4、再帰設定acl
 

  
  
  
  
  1. [root@stu14 data]# setfacl –R –m u:gentoo:rw- test1/ 

この再帰とは、このディレクトリにファイルがディレクトリにある場合、ディレクトリtest 1にaclを追加するだけで、このディレクトリの下のすべてのファイルがこのaclレコードを追加します.
5、権限の発効順序
まずtestファイルにユーザーとグループのaclレコードを追加し、aclレコードの順序を見てみましょう.

  
  
  
  
  1. [root@stu14 data]# setfacl -m u:gentoo:rw- test  
  2. [root@stu14 data]# setfacl -m g:centos:rw- test  
  3. [root@stu14 data]# getfacl test  
  4. # file: test 
  5. # owner: root 
  6. # group: magedu 
  7. user::rw- 
  8. user:gentoo:rw- 
  9. group::r-- 
  10. group:centos:rw- 
  11. mask::rw- 
  12. other::r-- 

そこからいくつかの端緒が見えます.私たちが追加したaclレコードは一番後ろに追加されたのではなく、順序があります.実は、権限の有効な順序は上から下までです.マスター-->ユーザーACL->グループ-->グループACL->他のユーザーです.
最後に、aclを追加したファイルをアーカイブし、これらのacl情報を保持したい場合はどうすればいいですか?これは、tarアーカイブを使用する場合、デフォルトではacl情報をアーカイブしないため、アーカイブ時に--aclsというオプションを使用する必要があります.tarの使用はあまり書かなくてもいいと思います!ほほほ
一緒に頑張りましょう!