lost and found ( for me ? )

Linux: ACLs ( setfacl , getfacl )

http://www.itmedia.co.jp/enterprise/0403/06/epn01.html


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.