ACL によるアクセス制御2015/07/02 |
ACL (Access Control Lists) の設定です。
従来の UNIX アクセス制御に比べて、より柔軟な設定が可能です。 |
|
[1] | ACL パッケージは OS の最小構成に含まれているため、追加パッケージのインストールは不要ですが、 もしインストールされていない場合は、以下のようにしてインストールします。 |
[root@dlp ~]# yum -y install acl
|
[2] |
CentOS 7 のデフォルトファイルシステムである xfs を利用している場合は、ACL を利用するための事前設定は不要です。
CentOS 6 のデフォルトである ext4 を利用している場合は、ACL を利用するための設定が必要です。
こちらの [2], [3] を参考に必要に応じて事前に設定をしてください。
|
[3] | ACL の設定です。 例として、アクセス権が root:root:700 である /home/test.txt に ACL を設定します。 |
[root@dlp ~]# ll /home/test.txt -rwx------ 1 root root 10 Jul 3 16:17 /home/test.txt # ACLを設定するとアクセス権の右に以下のように「+」が付加される [root@dlp ~]# ll /home/test.txt -rwxr-----+ 1 root root 10 Jul 3 16:17 /home/test.txt # ACLを表示して設定確認 [root@dlp ~]# getfacl /home/test.txt getfacl: Removing leading '/' from absolute path names # file: home/test.txt # owner: root # group: root user::rwx user:cent:r-- group::--- mask::r-- other::--- # 他ユーザーで確認 [fedora@dlp ~]$ cat /home/test.txt cat: /home/test.txt: Permission denied # 正常に表示不可
|
[4] | あるディレクトリ配下全てに再帰的に ACL を設定する。 |
# /home/testdir ディレクトリに対してユーザー「cent」に r(read) を再帰的に許可 [root@dlp ~]# setfacl -R -m u:cent:r /home/testdir
ll /home/testdir total 4 -rwxr-----+ 1 root root 5 Jul 3 16:23 testfile[root@dlp ~]# getfacl -R /home/testdir getfacl: Removing leading '/' from absolute path names # file: home/testdir # owner: root # group: root user::rwx user:cent:r-- group::--- mask::r-- other::--- # file: home/testdir/testfile # owner: root # group: root user::rwx user:cent:r-- group::--- mask::r-- other::--- |
[5] | グループ単位で ACL を設定する。 |
# /home/test.txt に対して、グループ「security」に rw(read/write) を許可 [root@dlp ~]# setfacl -m g:security:rw /home/test.txt [root@dlp ~]# getfacl /home/test.txt getfacl: Removing leading '/' from absolute path names # file: home/test.txt # owner: root # group: root user::rwx user:cent:r-- group::--- group:security:rw- mask::rw- other::--- # 「security」グループ所属の「cent」ユーザーで確認 [cent@dlp ~]$ echo "test write" >> /home/test.txt [cent@dlp ~]$ cat /home/test.txt ACL test file test write # 正常に書き込めた
# 「security」グループに属さない他ユーザーで確認 [fedora@dlp ~]$ echo "test write" >> /home/test.txt -bash: /home/test.txt: Permission denied # 正常に書き込めない
|
[6] | ACL 設定を削除する。 |
# /home/test.txt に付与されている「fedora」ユーザーのACLのみ削除 [root@dlp ~]# setfacl -x u:fedora /home/test.txt
|
[7] | あるディレクトリに対してデフォルトの ACL を設定する。 デフォルト ACL が設定されたディレクトリ配下にファイル/ディレクトリを作成すると、デフォルト ACL が継承される。 ( デフォルト設定のみでなく、対象ディレクトリに対して個別の許可設定もしておく必要がある ) ただし、新規作成ファイルにはデフォルトで ACL が付与されるが、それらのファイルに後から chmod でアクセス権を変更すると ACL 設定はクリアされるため、注意が必要。 |
[root@dlp ~]# setfacl -m u:cent:r-x /home/testdir # /home/testdir ディレクトリに対して「cent」に r-x(read/execute) を許可するデフォルト ACL [root@dlp ~]# setfacl -d -m u:cent:r-x /home/testdir [root@dlp ~]# getfacl /home/testdir getfacl: Removing leading '/' from absolute path names # file: home/testdir # owner: root # group: root user::rwx user:cent:r-x group::--- mask::r-x other::--- default:user::rwx default:user:cent:r-x default:group::--- default:mask::r-x default:other::---[root@dlp ~]# echo "ACL default setting" > /home/testdir/test.txt [root@dlp ~]# ll /home/testdir/test.txt -rw-r-----+ 1 root root 20 Jan 31 22:32 /home/testdir/test.txt # 「cent」ユーザーで確認 [cent@dlp ~]$ cat /home/testdir/test.txt ACL default setting # 正常に読めた
|
[8] | デフォルト ACL を削除する。 |
[root@dlp ~]# setfacl -k /home/testdir [root@dlp ~]# getfacl /home/testdir getfacl: Removing leading '/' from absolute path names # file: home/testdir # owner: root # group: root user::rwx user:cent:r-x group::--- mask::r-x other::--- |
[9] | ファイルから ACL を読み込み設定する。 |
# ACL設定ファイルを作成 ( 書式は getfacl の出力結果と同じ ) # 設定したいACLが他システムにあるなら、getfaclの結果をリダイレクトでファイルに出力しそのまま利用することも可能
[root@dlp ~]#
vi acl.txt # file: /home/testdir # owner: root # group: root user::rwx user:cent:r-x group::--- mask::r-x other::--- # file: /home/test.txt # owner: root # group: root user::rwx user:cent:r-- group::--- mask::r-- other::--- setfacl --restore=acl.txt [root@dlp ~]# ll /home total 16 drwx------. 2 cent cent 4096 Jan 31 12:14 cent drwx------ 2 fedora fedora 4096 Jan 31 12:14 fedora drwxr-x---+ 2 root root 4096 Jan 31 22:32 testdir -rwxr-----+ 1 root root 25 Jan 31 21:56 test.txt |
Sponsored Link |