當前位置:
首頁 > 知識 > Linux許可權管理之ACL許可權最全解讀

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


作者:YSOcean


出處:http://www.cnblogs.com/ysocean/


鏈接:http://www.cnblogs.com/ysocean/p/7801329.html




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

=

490

ed737-f8cf-

46

a6-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 許可權,我們為某個用戶指定某個文件的特定許可權,在實際許可權管理中還是用的比較多的




●編號593,輸入編號直達本文



●輸入m獲取文章

目錄

推薦↓↓↓

 



運維


更多推薦

18個技術類微信公眾號


涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux學習 的精彩文章:

Linux 下 cut 命令的 4 個基礎實用的示例
Linus 又開懟:有時候標準就是一坨屎!

TAG:Linux學習 |