權限規劃-ACL(Access Control List)

限制(使用者/群組)存取對某(檔案/目錄)權限方法通常有 2 種 chmod 和 ACL,但 chmod 若是使用在群組上,無法限制單一使用者存取檔案權限。

範例:新增檔案 /root/aclexample.txt,群組為 manager,使用者 normal 及 normal2 亦為 manager 群組,normal 可以進行讀寫,但 normal2 無法進行任何操作。

新增檔案
# echo 'acl example' > /home/aclexample.txt
# groupadd manager
# chgrp manager /home/aclexample.txt

修改使用者群組
# usermod -G manager normal
# id normal
 uid=500(normal) gid=500(normal) groups=500(normal),502(manager)

# usermod -G manager normal2
# id normal2
 uid=501(normal2) gid=501(normal2) groups=501(normal2),502(manager)

設定存取權限(規則是有先後順序,先使用者再群組)
# setfacl -m u:normal:rw- /home/aclexample.txt
# setfacl -m u:normal1:--- /home/aclexample.txt
# getfacl /root/aclexample.txt
 getfacl: Removing leading '/' from absolute path names
 # file: home/aclexample.txt
 # owner: root
 # group: manager
 user::rw-
 user:normal:rw-
 user:normal2:---

 group::r--
 mask::rw-
 other::r--

使用者 normal 寫入 /home/aclexample.txt
$ echo 'i am normal' >> /home/aclexample.txt
$ cat /home/aclexample.txt
 acl example
 i am normal

使用者 normal2 寫入 /home/aclexample.txt
$ echo 'i am normal2' >> /home/aclexample.txt
 -bash: /home/aclexample.txt: Permission denied




Default ACL

20121211 新增內容


使用方法:只能在目錄上設定,而該目錄下的檔案及子目錄會繼承其 ACLs。
範例:使用者 user1、user2 及 user3 皆為群組 manager,/home/test 底下所有的檔案及目錄,user3 沒有任何權限。


# mkdir /home/test
# chmod 2775 /home/test
# chgrp manager /home/test
# setfacl -m d:u:user3:--- /home/test
# ll -d /home/test
 drwxrwsr-x+ 2 root manager 4096 Dec 11 10:56 /home/test  // 有 Default ACLs 的目錄或檔案都會有個加號。

############user1、user2 及 user3 皆可以在 /home/test 產生目錄及檔案############
# su - user1
user1 $ mkdir /home/test/user1
user1 $ echo "i am user1" > /home/test/user1.txt
user1 $ exit

# su - user2
user2 $ mkdir /home/test/user2
user2 $ echo "i am user2" > /home/test/user2.txt
user2 $ exit

# su - user1
user3 $ mkdir /home/test/user3
user3 $ echo "i am user3" > /home/test/user3.txt
user3 $ exit

############ user3 無法讀寫存取其他使用者在 /home/test 底下的目錄及檔案############
user3 $ echo "i am user3" >> /home/test/user1.txt
    -bash: user1.txt: Permission denied
user3 $ echo "i am user3" >> /home/test/user2.txt
    -bash: user2.txt: Permission denied
user3 $ ll /home/test/user1
    ls: cannot open directory /home/test/user1: Permission denied
user3 $ ll /home/test/user2
    ls: cannot open directory /home/test/user2: Permission denied

############其他使用者可相互讀寫存取在 /home/test 的目錄及檔案############
user1 $ ll /home/test/user2
    total 0
user1 $ echo "i am user1" >> /home/test/user2.txt
user1 $ exit
    logout

# su - user2
user2 $ ll /home/test/user1
    total 0
user2 $ echo "i am user2" >> /home/test/user1.txt
user2 $ ll /home/test/user3
    total 0
user2 $ echo "i am user2" >> /home/test/user3.txt

沒有留言:

張貼留言