溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ACL中怎么設置用戶訪問指定文件/目錄的權限

發(fā)布時間:2021-07-27 14:15:15 來源:億速云 閱讀:153 作者:Leah 欄目:系統(tǒng)運維

這篇文章給大家介紹ACL中怎么設置用戶訪問指定文件/目錄的權限,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Linux 對文件和目錄有以下默認權限。

  • 文件 -> 644 -> -rw-r-r- (所有者有讀寫權限,組成員有只讀權限, 其他人也只有讀權限)

  • 目錄 -> 755 -> drwxr-xr-x (所有者有讀、寫和執(zhí)行權限,組成員有讀和執(zhí)行的權限,其他人也有讀和執(zhí)行的權限)

比如: 默認情況下,所有者可以訪問和編輯他們自己主目錄中的文件,  也可以訪問相關同組人的文件,但他們不能修改這些文件,因為組成員沒有寫權限,而且讓組成員有寫權限也是不明智的。  基于同樣的原因,他/她也不能修改其他人的文件。 然而在某些情況下,多個用戶想要修改同一個文件, 那該怎么辦呢?

假設有個名叫 magi 的用戶,他想要修改 httpd.conf 文件怎么辦呢? 這個文件是歸 root 用戶所有的,這樣如何授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。

什么是 ACL?

ACL 表示訪問控制列表Access Control List(ACL),它為文件系統(tǒng)提供了附加的、更具有彈性的權限機制。 它被設計來為補充 UNIX 文件權限機制。 ACL 允許你賦予任何某用戶/組訪問某項資源的權限。 setfaclgetfacl 命令會幫助你管理 ACL 而不會有任何麻煩。

什么是 setfacl?

setfacl 用于設置文件和目錄的 ACL。

什么 getfacl?

getfacl - 獲取文件的 ACL 。對于每個文件, getfacl 都會顯示文件名、文件所有者、所屬組以及ACL。 如果目錄有默認 ACL, getfacl 也會顯示這個默認的 ACL。

如何確認是否啟用了 ACL?

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

# tune2fs -l /dev/sdb1 | grep optionsDefault mount options: (none)

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

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

# more /etc/fstab UUID=f304277d-1063-40a2-b9dc-8bcf30466a03 / ext4 defaults 1 1/dev/sdb1        /app ext4 defaults,acl 1 1

或者,你也可以使用下面命令將其添加道文件系統(tǒng)的超級塊中:

# tune2fs -o +acl /dev/sdb1

現(xiàn)在,通過運行以下命令來動態(tài)修改選項:

# mount -o remount,acl /app

再次運行 tune2fs 命令來看選項中是否有 acl 了:

# tune2fs -l /dev/sdb1 | grep optionsDefault mount options: acl

嗯,現(xiàn)在 /dev/sdb1 分區(qū)中有 ACL 選項了。

如何查看默認的 ACL 值

要查看文件和目錄默認的 ACL 值,可以使用 getfacl 命令后面加上文件路徑或者目錄路徑。 注意, 當你對非 ACL 文件/目錄運行 getfacl 命令時, 則不會顯示附加的 usermask 參數(shù)值。

# getfacl /etc/apache2/apache2.conf # file: etc/apache2/apache2.conf# owner: root# group: rootuser::rw-group::r--other::r--

如何為文件設置 ACL

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

# setfacl -m u:magi:rwx /etc/apache2/apache2.conf

仔細分析起來:

  • setfacl: 命令

  • -m: 修改文件的當前 ACL

  • u: 指明用戶

  • magi: 用戶名

  • rwx: 要設置的權限

  • /etc/apache2/apache2.conf: 文件名稱

再查看一次新的 ACL 值:

# getfacl /etc/apache2/apache2.conf # file: etc/apache2/apache2.conf# owner: root# group: rootuser::rw-user:magi:rwxgroup::r--mask::rwxother::r--

注意: 若你發(fā)現(xiàn)文件或目錄權限后面有一個加號(+),就表示設置了 ACL。

# ls -lh /etc/apache2/apache2.conf-rw-rwxr--+ 1 root root 7.1K Sep 19 14:58 /etc/apache2/apache2.conf

如何為目錄設置 ACL

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

# setfacl -Rm u:magi:rwx /etc/apache2/sites-available/

其中:

  • -R: 遞歸到子目錄中

再次查看一下新的 ACL 值。

# getfacl /etc/apache2/sites-available/ # file: etc/apache2/sites-available/# owner: root# group: rootuser::rwxuser:magi:rwxgroup::r-xmask::rwxother::r-x

現(xiàn)在 /etc/apache2/sites-available/ 中的文件和目錄都設置了 ACL。

# ls -lh /etc/apache2/sites-available/total 20K-rw-rwxr--+ 1 root root 1.4K Sep 19 14:56 000-default.conf-rw-rwxr--+ 1 root root 6.2K Sep 19 14:56 default-ssl.conf-rw-rwxr--+ 1 root root 1.4K Dec 8 02:57 mywebpage.com.conf-rw-rwxr--+ 1 root root 1.4K Dec 7 19:07 testpage.com.conf

如何為組設置 ACL

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

# setfacl -m g:appdev:rwx /etc/apache2/apache2.conf

其中:

  • g: 指明一個組

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

# setfacl -m u:magi:rwx,g:appdev:rwx /etc/apache2/apache2.conf

如何刪除 ACL

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

# setfacl -x u:magi /etc/apache2/apache2.conf

其中:

  • -x: 從文件的 ACL 中刪除

再次查看 ACL 值。在下面的輸出中我們可以看到 mask 的值是讀。

# getfacl /etc/apache2/apache2.conf # file: etc/apache2/apache2.conf# owner: root# group: rootuser::rw-group::r--mask::r--other::r--

使用 -b 來刪除文件中所有的 ACL。

# setfacl -b /etc/apache2/apache2.conf

其中:

  • -b: 刪除所有的 ACL 條目

再次查看刪掉后的 ACl 值就會發(fā)現(xiàn)所有的東西都不見了,包括 mask 的值也不見了。

# getfacl /etc/apache2/apache2.conf # file: etc/apache2/apache2.conf# owner: root# group: rootuser::rw-group::r--other::r--

如何備份并還原 ACL

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

# cd /etc/apache2/sites-available/# getfacl -R * > acl_backup_for_folder

還原的話,則運行下面命令:

# setfacl --restore=/etc/apache2/sites-available/acl_backup_for_folder

關于ACL中怎么設置用戶訪問指定文件/目錄的權限就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

acl
AI