您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux的ACL權限怎么配置”,在日常操作中,相信很多人在Linux的ACL權限怎么配置問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux的ACL權限怎么配置”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
“很多初學 Linux 的人都會有這樣的疑惑,權限有什么作用呢?我為什么需要配置和修改權限呢?因為絕大多數初學者使用的都是個人計算機,個人計算機主要使用管理員身份登錄,而且不會有多個用戶同時存在。但是在服務器上,需要 root 和普通用戶同時存在、同時登錄管理服務器,所以合理的權限分配是保證服務器安全與穩定的前提。”
在普通權限中,用戶對文件只有三種身份,就是所屬主、所屬組和其他人;每種用戶身份擁有讀(read)、寫(write)和執行(execute)三種權限。但是在實際工作中,這三種身份實在是不夠用,舉個例子來看看。
根目錄中有一個 /item目錄,這是班級的項目目錄。班級中的每個學員都可以訪問和修改這個目錄,老師也需要對這個目錄擁有訪問和修改權限,其他班級的學員當然不能訪問這個目錄。需要怎么規劃這個目錄的權限呢?應該這樣:老師使用root 用戶,作為這個目錄的所屬主,權限為 rwx;班級所有的學員都加入 group 組,使 group 組作為 /item目錄的屬組,權限是 rwx;其他人的權限設定為 0。這樣這個目錄的權限就可以符合我們的項目開發要求了。
有一天,班里來了一位試聽的學員 st,她必須能夠訪問 /item目錄,所以必須對這個目錄擁有 r 和 x 權限;但是她又沒有學習過以前的課程,所以不能賦予她 w 權限,怕她改錯了目錄中的內容,所以學員 用戶st的權限就是 r-x。可是如何分配她的身份呢?變為屬主?當然不行,要不 root 該放哪里?加入 group 組?也不行,因為 group 組的權限是 rwx,而我們要求學員 st 的權限是 r-x。如果把其他人的權限改為 r-x 呢?這樣一來,其他班級的所有學員都可以訪問 /item目錄了。
當出現這種情況時,普通權限中的三種身份就不夠用了。ACL 權限就是為了解決這個問題的。在使用 ACL 權限給用戶 st 陚予權限時,st 既不是 /item 目錄的所屬主,也不是屬組,僅僅賦予用戶 st 針對此目錄的 r-x 權限。這有些類似于 Windows 系統中分配權限的方式,單獨指定用戶并單獨分配權限,這樣就解決了用戶身份不足的問題。
開啟ACL權限
在CentOS 6.x 系統中 ACL 權限默認是開啟的,不需要手工開啟。不過,如果你的操作系統不是 CentOS 6.x,那該如何查看 ACL權限是否開啟了呢?可以這樣查看:
#mount(查看掛載的分區情況)
/dev/sda1 on /boottype xfs
#dumpe2fs –h /dev/sda3(查詢指定分區文件系統詳細信息)
-h:僅顯示超級塊中的信息,而不顯示磁盤塊組的詳細信息
使用mount 命令可以査看到系統中已經掛載的分區,而使用 dumpe2fs 命令可以査看到這個分區文件系統的詳細信息。大家可以看到,我們的 ACL 權限是 /dev/sda3 分區的默認掛載選項,所以不需要手工掛載。
不過我的 Linux 系統如果沒有默認掛載,則可以手工掛載嗎?當然可以,執行如下命令:
#mount –o remount,acl /(重新掛載根分區,并加入ACL權限)
使用mount 命令重新掛載,并加入 ACL 權限。不過使用此命令是臨時生效的。要想永久生效,需要修改 /etc/fstab 文件,命令如下:
#vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2/ext4 defaults,acl 1 1(加入ACL權限)
#mount –o remount(重新掛載文件系統或重啟系統,使其生效)
在你需要開啟 ACL 權限的分區行上(也就是說 ACL 權限針對的是分區),手工在 defaults 后面加入",acl"即可永久在此分區中開啟 ACL 權限。
1:ACL權限設置
1:ACL權限管理命令
我們知道了 ACL 權限的作用,也知道了如何開啟 ACL 權限,接下來學習如何査看和設定 ACL 權限。命令如下:
#getfacle filename(查看ACL權限)
#setfacl option filename(設定ACL權限)
選項:
m:設定 ACL 權限。如果是給予用戶 ACL 權限,則使用"u:用戶名:權限"格式賦予;如果是給予組 ACL 權限,則使用"g:組名:權限" 格式賦予;
-x:刪除指定的 ACL 權限;
-b:刪除所有的 ACL 權限;
-d:設定默認 ACL權限。只對目錄生效,指目錄中新建立的文件擁有此默認權限;
-k:刪除默認 ACL權限;
-R:遞歸設定 ACL 權限。指設定的 ACL 權限會對目錄下的所有子文件生效
2:給用戶和用戶組添加ACL權限
舉個例子,就來看看圖 1 中的權限怎么分配。我們要求root 是 /item 目錄的屬主,權限是 rwx;tgroup是此目錄的屬組,tgroup 組中擁有班級學員 zhangsan 和lisi,權限是rwx;其他人的權限是 0。這時,試聽學員 st 來了,她的權限是 r-x。我們來看具體的分配命令。
#useradd zhangsan
#useradd lisi
#useradd st
#groupadd tgroup
#mkdir /item
#chown root:tgroup /item/
#chmod 770 /item/
#ll –d /item/
#setfacl –m u:st:rx /item/
#cd /
#ll –d item/
drwxrwx---+ 3 root tgroup 4096 1月19日 05:20 item/
#getfacl item
大家可以看到,st 用戶既不是 /item目錄的屬主、屬組,也不是其他人,我們單獨給 st用戶分配了r-x 權限。這樣分配權限太方便了,完全不用先辛苦地規劃用戶身份了。
我想給用戶組賦予 ACL 權限可以嗎?當然可以,命令如下:
#groupadd tgroup2
#setfacl –m g:tgroup2:rwx item/
#ll –d item/
#getfacl item/
mask 是用來指定最大有效權限的。mask的默認權限是 rwx,如果我給 st 用戶賦予了 r-x的 ACL 權限,mj 需要和 mask 的 rwx 權限"相與"才能得到 st 的真正權限,也就是 r-x "相與"rwxtj出的值是 r-x,所以 st 用戶擁有 r-x權限。
如果把 mask 的權限改為 r--,和 st 用戶的權限相與,也就是 r--"相與"r-x得出的值是 r--,st 用戶的權限就會變為只讀。大家可以這么理解:用戶和用戶組所設定的權限必須在mask 權限設定的范圍之內才能生效,mask權限就是最大有效權限。
不過我們一般不更改 mask 權限,只要給予 mask 最大權限 rwx,那么任何權限和mask 權限相與,得出的值都是權限本身。也就是說,我們通過給用戶和用戶組直接賦予權限,就可以生效,這樣做更直觀。
補充:邏輯與運算的運算符是"and"。可以理解為生活中所說的"并且"。也就是相與的兩個值都為真,結果才為真;有一個值為假,與的結果就為假。比如 A 相與 B,結果入表 2 所示。
A | B | and |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Sheet2邏輯與運算
那么兩個權限相與和上面的結果類似,我們以讀(r)權限為例,結果如表 3 所示。
A | B | And |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
所以,"rwx"相與"r-x",結果是"r-x";"r--"相與"r-x",結果是"r--"。
修改最大有效權限的命令如下:
#setfacl –m m:rx item/
#getfacl item/
我們已經給/item 目錄設定了ACL 權限,那么,在這個目錄中新建一些子文件和子目錄,這些文件是否會繼承父目錄的ACL 權限呢?Let’s go!
#cd /item/
#touch abc
#mkdir d1
#ll
子文件 abc 和子目錄 d1 因為是后建立的,所以并沒有繼承父目錄的 ACL 權限。當然,我們可以手工給這兩個文件分配 ACL 權限,但是如果在目錄中再新建文件,都要手工指定,則顯得過于麻煩。這時就需要用到默認ACL 權限。
默認ACL 權限的作用是:如果給父目錄設定了默認 ACL 權限,那么父目錄中所有新建的子文件都會繼承父目錄的 ACL 權限。默認ACL 權限只對目錄生效。命令如下:
setfacl –m d:u:st:rx /item/
#getfacl item/
#cd item/
#touch bcd
#mkdir d2
#ll
原先的abc 和 d1 還是沒有ACL 權限,因為默認 ACL 權限是針對新建立的文件生效的。
再說說遞歸 ACL 權限。遞歸是指父目錄在設定ACL 權限時,所有的子文件和子目錄也會擁有相同的 ACL 權限。
#setfacl –m u:st:rx –R/item/
-R:遞歸
#ll
默認 ACL權限指的是針對父目錄中新建立的文件和目錄會繼承父目錄的 ACL 權限,格式是"setfacl-m d:u:用戶名:權限 文件名";遞歸 ACL 權限指的是針對父目錄中已經存在的所有子文件和子目錄繼承父目錄的 ACL 權限,格式是"setfacl-m u:用戶名: 權限 -R 文件名"。
我們來看看怎么刪除 ACL 權限,命令如下:
刪除指定的ACL權限:
#setfacl –x u:st /item/刪除指定用戶和用戶組的ACL權限
#getfacl item/
刪除所有ACL權限
#setfacl –b item/(會刪除文件的所有ACL權限)
#getfacl item/(所有ACL權限已被刪除)
到此,關于“Linux的ACL權限怎么配置”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。