Linux-許可權管理(ACL許可權)

twilight0402發表於2017-08-02

版權宣告:本文為博主原創文章,轉載請註明出處。 https://blog.csdn.net/twilight_karl/article/details/76595336

ACL簡介

目前已知的三種許可權分別是,所有者許可權,所屬組許可權,和其他人許可權。這三種許可權有時並不能很好的指定所有使用者的許可權。當無法使用這三種許可權準確的指定一個使用者的許可權時,可以使用acl給使用者或使用者組指定特定的許可權。例如,所有者和所屬組具有最高許可權。其他人具有0許可權。此時我希望給一個使用者設定r-x許可權。這時用以上三種許可權很難實現。就可以用acl指定該使用者的許可權。

設定/檢視 ACL許可權

  • getfacl 檔名 : 檢視acl許可權
  • setfacl 選項 檔名 : 設定acl許可權

常見引數:
– -m 設定ACL許可權
– -x 刪除指定的ACL許可權
– -b 刪除所有的ACL許可權
– -d 設定預設ACL許可權
– -k 刪除預設ACL許可權
– -R 遞迴設定ACL許可權

  • 給特定使用者設定acl許可權:

setfacl -m u:username:rx 檔案或目錄

  • 給特定使用者組設定acl許可權:

setfacl -m g:groupname:rx 檔案或目錄

例如有test目錄,所有者是twilight,所屬組是stu,都具有最高許可權,具體屬性如下:

drwxrwx---.  2 twilight stu         6 7月  25 20:05 test

如果此時希望新增一個lw使用者,使之具有r-x許可權,可以使用acl:

setfacl -m u:lw:rx test

用getfacl檢視acl許可權:

[root@localhost home]# getfacl test
# file: test
# owner: twilight
# group: stu
user::rwx
user:lw:r-x
group::rwx
mask::rwx
other::---

此時檢視test目錄的屬性:

drwxrwx---+  2 twilight stu         6 7月  25 20:05 test

最大有效許可權 mask

mask 是最大許可權,使用者指定的許可權需要與mask進行與運算,運算的結果才是使用者實際具有的許可權。
setfacl -m m:r-x 檔案或目錄

[root@localhost home]# setfacl -m m:r-x test
[root@localhost home]# getfacl test
# file: test
# owner: twilight
# group: stu
user::rwx
user:lw:rwx         #effective:r-x
group::rwx          #effective:r-x
mask::r-x
other::---

刪除 ACL 許可權

  • 刪除指定使用者的acl許可權

    setfacl -x u:使用者名稱 檔案或目錄

  • 刪除指定使用者組的acl許可權

    setfacl -x g:使用者組名 檔案或目錄

  • 刪除檔案的所有acl許可權

    setfacl -b 檔名

[root@localhost home]# setfacl -x u:lw test
[root@localhost home]# getfacl test
# file: test
# owner: twilight
# group: stu
user::rwx
group::rwx
mask::rwx
other::---

遞迴許可權

父目錄在設定acl許可權是,所有的已存在的子檔案俺和子目錄也會具有相同的acl許可權。只能針對目錄
setfacl -m u:lw:r-x -R 目錄名

給test目錄賦予r-x遞迴許可權:

 setfacl -m u:lw:r-x -R test

test的子目錄和子檔案都會有acl許可權:

[root@localhost test]# ll
總用量 0
drwxrwxr-x+ 2 root root 6 7月  25 21:15 dir
-rw-rw-r--+ 1 root root 0 7月  25 21:15 file

但是此時會出現一個問題,test的許可權是r-x,代表可以對目錄進行讀和進入目錄操作。但是同樣的r-x對於檔案來說作用是不同的。對於檔案r-x表示讀和執行,執行許可權是最高許可權。這樣給檔案賦予r-x許可權是很不安全的。這種情況叫做許可權溢位
這是acl最大的缺陷,只能手動的修改許可權。

預設許可權

父目錄中給所有新建的子檔案都會整合父目錄的ACL許可權。
setfacl -m d:u:使用者名稱:r-x 目錄名

[root@localhost home]# setfacl -m d:u:lw:r-x test
[root@localhost home]# getfacl test
# file: test
# owner: twilight
# group: stu
user::rwx
user:lw:rw-
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:lw:r-x
default:group::rwx
default:mask::rwx
default:other::---

遞迴許可權 和 預設許可權的異同

  • 遞迴許可權:對當前已存在的檔案
  • 預設許可權: 對該目錄接下來新建的子檔案


相關文章