setfacl - set file access control lists
getfacl - get file access control lists
[root@centos5-vm1 ~]# cat /etc/redhat-release
CentOS release 5.4 (Final)
kernel 2.6 から実装されたみたい。
[root@centos5-vm1 ~]# uname -r
2.6.18-164.el5
- 準備
/etc/fstab の options に acl を追加、再起動。
[root@centos5-vm1 ~]# head -1 /etc/fstab
LABEL=/ / ext3,acl defaults 1 1
acl パッケージをインストール
[root@centos5-vm1 ~]# yum install -y acl.i386
[root@centos5-vm1 ~]# rpm -ql acl
/usr/bin/chacl
/usr/bin/getfacl
/usr/bin/setfacl
テスト用の group , directory を作成
[root@centos5-vm1 ~]# groupadd test_group
[root@centos5-vm1 home]# usermod -g test_group test1
[root@centos5-vm1 home]# usermod -g test_group test2
[root@centos5-vm1 home]# usermod -g test_group test3
[root@centos5-vm1 ~]# egrep test /etc/passwd
test1:x:501:501::/home/test1:/bin/bash
test2:x:502:502::/home/test2:/bin/bash
test3:x:503:503::/home/test3:/bin/bash
[root@centos5-vm1 ~]# egrep test /etc/group
test1:x:501:
test2:x:502:
test3:x:503:
test_group:x:504:test2,test3,test1
[root@centos5-vm1 home]# mkdir test_group_dir
[root@centos5-vm1 home]# chown root.test_group test_group_dir
[root@centos5-vm1 home]# chmod g+rwx test_group_dir
- ACL の設定
[test1@centos5-vm1 test_group_dir]$ whoami
test1
[test1@centos5-vm1 test_group_dir]$ pwd
/home/test_group_dir
[test1@centos5-vm1 test_group_dir]$ echo "hello" > hello.txt
[test1@centos5-vm1 test_group_dir]$ ls -l
-rw-r--r-- 1 test1 test_group hello.txt
user: test2 に書き込み権限を与える。
-m = modify
[test1@centos5-vm1 test_group_dir]$ setfacl -m u:test2:rw hello.txt
[test1@centos5-vm1 test_group_dir]$ ls -l hello.txt
-rw-rw-r--+ 1 test1 test_group hello.txt
[test1@centos5-vm1 test_group_dir]$ getfacl hello.txt
# file: hello.txt
# owner: test1
# group: test_group
user::rw-
user:test2:rw-
group::r--
mask::rw-
other::r--
user: test2 は書き込みができる
[test2@centos5-vm1 test_group_dir]$ whoami
test2
[test2@centos5-vm1 test_group_dir]$ echo "hi" >> hello.txt
[test2@centos5-vm1 test_group_dir]$ cat hello.txt
hello
hi
user: test3 は書き込みができない
[test3@centos5-vm1 test_group_dir]$ whoami
test3
[test3@centos5-vm1 test_group_dir]$ echo "hi" >> hello.txt
bash: hello.txt: 許可がありません
test3 にも書き込み権限をあたえる。
[test1@centos5-vm1 test_group_dir]$ whoami
test1
[test1@centos5-vm1 test_group_dir]$ setfacl -m u:test3:rw hello.txt
[test1@centos5-vm1 test_group_dir]$ getfacl hello.txt
# file: hello.txt
# owner: test1
# group: test_group
user::rw-
user:test2:rw-
user:test3:rw-
group::r--
mask::rw-
other::r--
user: test3 のアクセス権限を消去
[test1@centos5-vm1 test_group_dir]$ setfacl -x u:test3 hello.txt
[test1@centos5-vm1 test_group_dir]$ getfacl hello.txt
# file: hello.txt
# owner: test1
# group: test_group
user::rw-
user:test2:rw-
group::r--
mask::rw-
other::r--
ファイル hello.txt から ACL の設定を全て消去
[test1@centos5-vm1 test_group_dir]$ setfacl -b hello.txt
[test1@centos5-vm1 test_group_dir]$ getfacl hello.txt
# file: hello.txt
# owner: test1
# group: test_group
user::rw-
group::r--
other::r--
ディレクトリにもACL設定が可能
[test1@centos5-vm1 test_group_dir]$ mkdir aaa
[test1@centos5-vm1 test_group_dir]$ ls -l
drwxr-xr-x 2 test1 test_group aaa
[test1@centos5-vm1 test_group_dir]$ setfacl -m u:test2:rwx aaa
[test1@centos5-vm1 test_group_dir]$ getfacl aaa
# file: aaa
# owner: test1
# group: test_group
user::rwx
user:test2:rwx
group::r-x
mask::rwx
other::r-x
[test1@centos5-vm1 test_group_dir]$ setfacl -m u:test3:- aaa
[test1@centos5-vm1 test_group_dir]$ getfacl aaa
# file: aaa
# owner: test1
# group: test_group
user::rwx
user:test2:rwx
user:test3:---
group::r-x
mask::rwx
other::r-x
test2 はディレクトリ aaa にアクセスできる。
[test2@centos5-vm1 test_group_dir]$ whoami
test2
[test2@centos5-vm1 test_group_dir]$ cd aaa/
[test2@centos5-vm1 aaa]$ pwd
/home/test_group_dir/aaa
test3 はディレクトリ aaa にアクセスできない。
[test3@centos5-vm1 test_group_dir]$ whoami
test3
[test3@centos5-vm1 test_group_dir]$ cd aaa/
-bash: cd: aaa/: 許可がありません
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.