'除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程'

Linux UNIX Vi CentOS 設計 Linux學習教程 2019-08-01
"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看默認acl的設置

6. 如何為文件設置acl屬性

以下面格式運行 setfacl 命令可以為指定文件設置 ACL。在下面的例子中,我們會給 zcwyou用戶對 /etc/samba/smb.conf文件 rwx 的權限。

[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看默認acl的設置

6. 如何為文件設置acl屬性

以下面格式運行 setfacl 命令可以為指定文件設置 ACL。在下面的例子中,我們會給 zcwyou用戶對 /etc/samba/smb.conf文件 rwx 的權限。

[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為文件設置acl屬性

setfacl命令部分參數

-m: 修改文件的當前 ACL

u: 指明用戶

magi: 用戶名

rwx: 要設置的權限

/etc/samba/smb.conf: 指定的文件或者目錄

通過ls命令也可以查看這個文件的特殊權限,注意一下圖中的+號。

"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看默認acl的設置

6. 如何為文件設置acl屬性

以下面格式運行 setfacl 命令可以為指定文件設置 ACL。在下面的例子中,我們會給 zcwyou用戶對 /etc/samba/smb.conf文件 rwx 的權限。

[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為文件設置acl屬性

setfacl命令部分參數

-m: 修改文件的當前 ACL

u: 指明用戶

magi: 用戶名

rwx: 要設置的權限

/etc/samba/smb.conf: 指定的文件或者目錄

通過ls命令也可以查看這個文件的特殊權限,注意一下圖中的+號。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看文件acl屬性

7. 如何為目錄設置acl屬性

以下面格式運行 setfacl 命令可以遞歸地為指定目錄設置 ACL。在下面的例子中,我們會將 /etc/samba/ 目錄中的 rwx 權限賦予zcwyou用戶。

首先先查看當前情況,如下圖

"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看默認acl的設置

6. 如何為文件設置acl屬性

以下面格式運行 setfacl 命令可以為指定文件設置 ACL。在下面的例子中,我們會給 zcwyou用戶對 /etc/samba/smb.conf文件 rwx 的權限。

[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為文件設置acl屬性

setfacl命令部分參數

-m: 修改文件的當前 ACL

u: 指明用戶

magi: 用戶名

rwx: 要設置的權限

/etc/samba/smb.conf: 指定的文件或者目錄

通過ls命令也可以查看這個文件的特殊權限,注意一下圖中的+號。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看文件acl屬性

7. 如何為目錄設置acl屬性

以下面格式運行 setfacl 命令可以遞歸地為指定目錄設置 ACL。在下面的例子中,我們會將 /etc/samba/ 目錄中的 rwx 權限賦予zcwyou用戶。

首先先查看當前情況,如下圖

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為目錄設置acl屬性

可以看到上圖中,只有smb.conf一個文件有+號。

執行以下命令:

[root@zcwyou ~]# setfacl -Rm u:zcwyou:rwx /etc/samba/

-R: 表示把設置遞歸到子目錄中

再次檢查:

"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看默認acl的設置

6. 如何為文件設置acl屬性

以下面格式運行 setfacl 命令可以為指定文件設置 ACL。在下面的例子中,我們會給 zcwyou用戶對 /etc/samba/smb.conf文件 rwx 的權限。

[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為文件設置acl屬性

setfacl命令部分參數

-m: 修改文件的當前 ACL

u: 指明用戶

magi: 用戶名

rwx: 要設置的權限

/etc/samba/smb.conf: 指定的文件或者目錄

通過ls命令也可以查看這個文件的特殊權限,注意一下圖中的+號。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看文件acl屬性

7. 如何為目錄設置acl屬性

以下面格式運行 setfacl 命令可以遞歸地為指定目錄設置 ACL。在下面的例子中,我們會將 /etc/samba/ 目錄中的 rwx 權限賦予zcwyou用戶。

首先先查看當前情況,如下圖

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為目錄設置acl屬性

可以看到上圖中,只有smb.conf一個文件有+號。

執行以下命令:

[root@zcwyou ~]# setfacl -Rm u:zcwyou:rwx /etc/samba/

-R: 表示把設置遞歸到子目錄中

再次檢查:

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

檢查目錄acl屬性

可以看出,所有文件都被設置了acl權限。

使用getacl查看目錄

[root@zcwyou ~]# getfacl /etc/samba/

getfacl: Removing leading '/' from absolute path names

file: etc/samba/

owner: root

group: root

user::rwx

user:zcwyou:rwx

group::r-x

mask::rwx

other::r-x

"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看默認acl的設置

6. 如何為文件設置acl屬性

以下面格式運行 setfacl 命令可以為指定文件設置 ACL。在下面的例子中,我們會給 zcwyou用戶對 /etc/samba/smb.conf文件 rwx 的權限。

[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為文件設置acl屬性

setfacl命令部分參數

-m: 修改文件的當前 ACL

u: 指明用戶

magi: 用戶名

rwx: 要設置的權限

/etc/samba/smb.conf: 指定的文件或者目錄

通過ls命令也可以查看這個文件的特殊權限,注意一下圖中的+號。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看文件acl屬性

7. 如何為目錄設置acl屬性

以下面格式運行 setfacl 命令可以遞歸地為指定目錄設置 ACL。在下面的例子中,我們會將 /etc/samba/ 目錄中的 rwx 權限賦予zcwyou用戶。

首先先查看當前情況,如下圖

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為目錄設置acl屬性

可以看到上圖中,只有smb.conf一個文件有+號。

執行以下命令:

[root@zcwyou ~]# setfacl -Rm u:zcwyou:rwx /etc/samba/

-R: 表示把設置遞歸到子目錄中

再次檢查:

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

檢查目錄acl屬性

可以看出,所有文件都被設置了acl權限。

使用getacl查看目錄

[root@zcwyou ~]# getfacl /etc/samba/

getfacl: Removing leading '/' from absolute path names

file: etc/samba/

owner: root

group: root

user::rwx

user:zcwyou:rwx

group::r-x

mask::rwx

other::r-x

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

使用getacl命令檢查目錄acl屬性

8. 為組用戶設置acl

以下面格式為指定文件運行 setfacl 命令。在下面的例子中,我們會給 zcwyou組賦予 /etc/samba/smb.conf 文件的 rwx 權限。

[root@zcwyou ~]# setfacl -m g:zcwyou:rwx /etc/samba/smb.conf
"

請關注本頭條號,每天堅持更新原創乾貨技術文章。

如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

1. 前言

本文主要講解Linux acl訪問控制權限的原理以及日常使用方法。是Linux系統管理中的一個重要安全工具及策略設置,運維人員必須掌握好。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

2. Linux acl權限控制的原理

我們知道 Linux 的權限控制是非常重要的,傳統的權限僅有三種身份 (owner, group, others) ,即文件或者目錄擁有者權限、擁有者同組成員的權限、其它用戶的權限,搭配三種權限 (r,w,x),即可讀、可寫、可執行而已,這些權限可以通過 chmod、 chown 等命令來修改。然而並沒有辦法單純的針對某一個使用者或某一個群組來設置特定的權限需求。此時就得要使用 ACL 這個工具了。

比如有個名為zcwyou的用戶,他想要修改 nginx.conf 這個配置文件,然而這個文件是歸root 用戶所有,這樣怎樣為單個用戶做特定授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的 read,write,execute 權限之外的細部權限設置。ACL 可以針對單一使用者,單一文件或目錄來進行 r,w,x 的權限規範,對於需要特殊權限的使用狀況非常有幫助。它為文件系統提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfacl 與 getfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

那ACL工具主要支持以下對象設置安全權限:

使用者 (user):可以針對使用者來設置權限;

群組 (group):針對群組為對象來設置其權限;

默認屬性 (mask):還可以針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限;

也就是說,如果你有一個目錄,需要給一堆人使用,每個人或每個群組所需要的權限並不相同時,在過去,傳統的 Linux 三種身份的三種權限是無法達到的, 因為基本上,傳統的 Linux 權限只能針對一個用戶、一個群組及非此群組的其他人設置權限而已,無法針對單一用戶或個人來設計權限。 而 ACL 就是為了要改變這個問題啊!好了,稍微瞭解之後,再來看看如何讓你的文件系統可以支持 ACL 吧!

3. Linux acl權限控制的工具集

查看Linux acl權限工具是否有安裝,一般情況下,系統都是默認安裝的。

[root@zcwyou ~]# rpm -qa |grep acl
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看linux acl工具包

如果沒有安裝,使用以下命令安裝它:

[root@zcwyou ~]# yum -y install acl
  • setfacl用於設置文件和目錄的 ACL。
  • getfacl - 獲取文件的 ACL 。對於每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

4. Linux acl權限控制工具的使用

運行 tune2fs 命令來檢查是否啟用了 ACL。

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

顯示如下

Default mount options: (none)

上面的輸出很明顯第說明 /dev/sdb1 分區沒有啟用 ACL。

如果結果中沒有列出 acl,則你需要在掛載選項中加上 acl。 為了讓它永久生效, 修改 /etc/fstab 中 /app 這一行成這樣:

[root@zcwyou ~]# vi /etc/fstab
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

開機默認為分區開啟linux acl

修改為以下這行,

/dev/sdb1 /app ext4 defaults,acl 1 1

當然,你也可以使用下面命令將其添加道文件系統的超級塊中:

[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1

然後,通過運行以下命令來動態修改選項:

[root@zcwyou ~]# mount -o remount,acl /app

再次運行tune2fs看看是否開啟了acl

[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

輸出。

Default mount options: acl

CentOS 7默認已經啟用acl,可以直接使用。

5. 如何查看默認acl的設置

[root@zcwyou ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

file: etc/passwd

owner: root

group: root

user::rw-

group::r--

other::r--

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看默認acl的設置

6. 如何為文件設置acl屬性

以下面格式運行 setfacl 命令可以為指定文件設置 ACL。在下面的例子中,我們會給 zcwyou用戶對 /etc/samba/smb.conf文件 rwx 的權限。

[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為文件設置acl屬性

setfacl命令部分參數

-m: 修改文件的當前 ACL

u: 指明用戶

magi: 用戶名

rwx: 要設置的權限

/etc/samba/smb.conf: 指定的文件或者目錄

通過ls命令也可以查看這個文件的特殊權限,注意一下圖中的+號。

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

查看文件acl屬性

7. 如何為目錄設置acl屬性

以下面格式運行 setfacl 命令可以遞歸地為指定目錄設置 ACL。在下面的例子中,我們會將 /etc/samba/ 目錄中的 rwx 權限賦予zcwyou用戶。

首先先查看當前情況,如下圖

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為目錄設置acl屬性

可以看到上圖中,只有smb.conf一個文件有+號。

執行以下命令:

[root@zcwyou ~]# setfacl -Rm u:zcwyou:rwx /etc/samba/

-R: 表示把設置遞歸到子目錄中

再次檢查:

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

檢查目錄acl屬性

可以看出,所有文件都被設置了acl權限。

使用getacl查看目錄

[root@zcwyou ~]# getfacl /etc/samba/

getfacl: Removing leading '/' from absolute path names

file: etc/samba/

owner: root

group: root

user::rwx

user:zcwyou:rwx

group::r-x

mask::rwx

other::r-x

除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

使用getacl命令檢查目錄acl屬性

8. 為組用戶設置acl

以下面格式為指定文件運行 setfacl 命令。在下面的例子中,我們會給 zcwyou組賦予 /etc/samba/smb.conf 文件的 rwx 權限。

[root@zcwyou ~]# setfacl -m g:zcwyou:rwx /etc/samba/smb.conf
除了傳統rwx權限,你知道Linux還有acl訪問控制權限嗎?詳細教程

為組用戶設置acl屬性

g: 表示為一個組設置acl屬性

如果對多個用戶和組授權,只需要用 逗號 區分開,就像下面這樣。

[root@zcwyou ~]# setfacl -m u:user1:rwx,g:group2:rwx /etc/samba/smb.conf

9. 刪除acl

以下面格式運行 setfacl 命令會刪除文件對指定用戶的 ACL。這隻會刪除用戶權限而保留 mask 的值為只讀。

[root@zcwyou ~]# setfacl -x u:magi /etc/samba/smb.conf

選項-x: 表示從文件的 ACL 中刪除acl屬性

使用 選項-b 來刪除文件中所有的 ACL,例如:

[root@zcwyou ~]# setfacl -b /etc/samba/smb.conf

選項-b: 表示刪除所有的 ACL 條目所有的屬性

再次查看刪掉後的 ACl 值就會發現所有的東西都不見了,包括 mask 的值也不見了。

10. acl最大權限mask

10.1 最大有效權限mask

mask是用來指定最大有效權限的(使用命令getfacl 文件名顯示的結果中倒數第二排會出現mask這個詞)。如果給用戶賦予了acl權限,是需要和mask的權限“相與”才能得到用戶的真正權限。相與是計算機中的術語,皆真方為真,有假便為假。例如mask權限為rwx,某用戶的acl權限為r-x,則實際有效權限為r-x。

最大權限也會影響到組權限(例:某文件所有者為tony,chmod賦予的普通權限為7,而acl賦予tony的權限為5,則acl權限會高於chmod權限)

修改最大有效權限mask

修改mask的命令

setfacl -m m:權限 文件

11. 對acl的屬性進行備份和恢復

運行以下命令備份和還原 ACL 的值。要製作備份, 需要進入對應的目錄然後這樣做(假設我們要備份 sites-available 目錄中的 ACL 值)。

[root@zcwyou ~]# cd /etc/apache2/sites-available/
[root@zcwyou ~]# getfacl -R * > acl_backup_for_folder

運行下面命令進行還原acl屬性設置

[root@zcwyou ~]# setfacl --restore=/etc/apache2/sites-available/acl_backup_for_folder

12. 總結

Linux的ACL機制是對傳統的用戶、組、其他用戶權限安全機制的補充,結合傳統的權限機制,將極為靈活地根據特定用戶為Linux系統的文件或者目錄設置特定權限。它是Linux系統工程師必須掌握的系統工具。

本文已同步至博客站,尊重原創,轉載時請在正文中附帶以下鏈接:

https://www.linuxrumen.com/rmxx/649.html

點擊瞭解更多,快速查看更多的技術文章列表。

"

相關推薦

推薦中...