歡迎光臨
每天分享高質量文章

Linux許可權管理之ACL許可權最全解讀

Linux許可權管理是Linux很重要的一項內容,重則引起使用者資訊洩露,輕則導致檔案錯亂和丟失。企業伺服器裡有些目錄下麵的東西暫時保密,不希望別人可以進入目錄並檢視。有些檔案希望別人可以看,但不能刪除。有些目錄只有root等管理員許可權的賬戶才能修改,

Linux伺服器供多個人登入使用,要是沒有許可權管理就亂了,大家都一樣的許可權。有些維護系統的命令比較複雜,經驗豐富的管理員執行這些命令沒事,普通新使用者執行的話,可以會導致linux伺服器癱瘓。

就像咱們日常生活中,全世界人的許可權都一樣不就亂了嗎。

今天我們來介紹一下Linux許可權管理的ACL許可權,它是使用者管理結束之後必須要經歷的一步。Linux系統的使用者管理包括Linux使用者和使用者組管理之相關配置檔案,使用者管理的相關配置檔案,內容有使用者資訊檔案/etc/passwd,使用者密碼檔案/etc/shadow;使用者組資訊檔案/etc/group,使用者組密碼檔案/etc/gshadow。使用者的家目錄,以及使用者的模板目錄; Linux使用者和使用者組管理之使用者管理命令,管理使用者和使用者組的命令,包括新建、修改、檢視等等以及用的比較多的切換使用者命令 su。


下麵我們正式開始介紹:


1、什麼是 ACL 許可權?

比如有如下場景:

某大牛在QQ群內直播講解Linux系統的許可權管理,講解完之後,他在一個公有的Linux系統中建立了一個 /project 目錄,裡面存放的是課後參考資料。那麼 /project 目錄對於大牛而言是所有者,擁有讀寫可執行(rwx)許可權,對於QQ群內的所有使用者他們都分配的一個所屬組裡面,也都擁有讀寫可執行(rwx)許可權,而對於 QQ 群外的其他人,那麼我們不給他訪問/project 目錄的任何許可權,那麼 /project 目錄的所有者和所屬組許可權都是(rwx),其他人許可權無。

問題來了,這時候直播有旁聽的人參與(不屬於QQ群內),聽完之後,我們允許他訪問/project目錄檢視參考資料,但是不能進行修改,也就是擁有(r-x)的許可權,這時候我們該怎麼辦呢?我們知道一個檔案只能有一個所屬組,我們將他分配到QQ群所在的所屬組內,那麼他擁有了寫的許可權,這是不被允許的;如果將這個旁聽的人視為目錄/project 的其他人,並且將/project目錄的其他人許可權改為(r-x),那麼不是旁聽的人也能訪問我們/project目錄了,這顯然也是不被允許的。怎麼解決呢?

我們想想windows系統裡面給某個檔案分配許可權的辦法:

如上圖,我們想要讓某個使用者不具備某個許可權,直接不給他分配這個目錄的相應許可權就行了。那麼對應到Linux系統也是這樣,我們給指定的使用者指定目錄分配指定的許可權,也就是 ACL 許可權分配。

2、檢視分割槽 ACL 許可權是否開啟:dump2fs

我們看某個檔案(Linux系統中目錄也是檔案,一切皆是檔案)是否支援 ACL 許可權,首先要看檔案所在的分割槽是否支援 ACL 許可權。

①、檢視當前系統有哪些分割槽:df -h

②、檢視指定分割槽詳細檔案資訊:dumpe2fs -h 分割槽路徑

下麵是檢視 根分割槽/ 的詳細檔案資訊

3、開啟分割槽 ACL 許可權

①、臨時開啟分割槽 ACL 許可權

mount -o remount,acl /

重新掛載根分割槽,並掛載加入 acl 許可權。註意這種命令開啟方式,如果系統重啟了,那麼根分割槽許可權會恢復到初始狀態。

②、永久開啟分割槽 ACL 許可權

一、修改配置檔案 /etc/fstab

上面是修改根分割槽擁有 acl 許可權

UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 /                       ext4    defaults,acl        1 1

二、重新掛載檔案系統或重啟系統,使得修改生效

mount -o remount /

4、設定 ACL 許可權:setfacl 選項 檔案名

①、給使用者設定 ACL 許可權:setfacl -m u:使用者名稱:許可權 指定檔案名

②、給使用者組設定 ACL 許可權:setfacl -m g:組名:許可權 指定檔案名

註意:我們給使用者或使用者組設定 ACL 許可權其實並不是真正我們設定的許可權,是與 mask 的許可權“相與”之後的許可權才是使用者的真正許可權,一般預設mask許可權都是rwx,與我們所設定的許可權相與就是我們設定的許可權。mask 許可權下麵我們會詳細講解

範例:所有者root使用者在根目錄下建立一個檔案目錄/project,然後建立一個QQ群所屬組,所屬組裡面建立兩個使用者zhangsan和lisi。所有者和所屬組許可權和其他人許可權是770。

然後建立一個旁聽使用者 pt,給他設定/project目錄的 ACL 為 r-x。

目錄 /project 的所有者和所屬組其他人許可權設定為 770。接下來我們建立旁聽使用者 pt,並賦予 acl 許可權 rx

為了驗證 pt 使用者對於 /project 目錄沒有寫許可權,我們用 su 命令切換到 pt 使用者,然後進入 /project 目錄,在此目錄下建立檔案,看是否能成功:

上面提示許可權不夠,說明 acl 許可權賦予成功,註意如下所示,如果某個目錄或檔案下有 + 標誌,說明其具有 acl 許可權。

5、檢視 ACL 許可權:getfacl 檔案名

6、最大有效許可權 mask

前面第4點我們講過,我們給使用者或使用者組設定 ACL 許可權其實並不是真正我們設定的許可權,是與 mask 的許可權“相與”之後的許可權才是使用者的真正許可權,一般預設mask許可權都是rwx,與我們所設定的許可權相與就是我們設定的許可權。

我們透過 getfacl 檔案名 也能檢視 mask 的許可權,那麼我們怎麼設定呢?

setfacl -m m:許可權 檔案名

7、刪除 ACL 許可權

①、刪除指定使用者的 ACL 許可權

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

②、刪除指定使用者組的 ACL 許可權

setfacl -x g:組名 檔案名

③、刪除檔案的所有 ACL 許可權

setfacl -b 檔案名

8、遞迴 ACL 許可權

透過加上選項 -R 遞迴設定檔案的 ACL 許可權,所有的子目錄和子檔案也會擁有相同的 ACL 許可權。

setfacl -m u:使用者名稱:許可權 -R 檔案名

9、預設 ACL 許可權

如果給父目錄設定了預設的 ACL 許可權,那麼父目錄中所有新建的子檔案會繼承父目錄的 ACL 許可權。

setfacl -m d:u:使用者名稱:許可權 檔案名

10、總結

本篇部落格我們介紹了許可權管理的ACL許可權,透過設定 ACL 許可權,我們為某個使用者指定某個檔案的特定許可權,在實際許可權管理中還是用的比較多的

作者:YSOcean

來源:http://www.cnblogs.com/ysocean/p/7801329.html

《Linux雲端計算及運維架構師高薪實戰班》2018年08月27日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~

    *宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。

    – END –


    更多Linux好文請點選【閱讀原文】

    ↓↓↓

    贊(0)

    分享創造快樂