wordpress 添加搜索引擎北京網(wǎng)絡(luò)seo
今天給伙伴們分享一下Linux ACL 訪問(wèn)控制,希望看了有所收獲。
我是公眾號(hào)「想吃西紅柿」「云原生運(yùn)維實(shí)戰(zhàn)派」作者,對(duì)云原生運(yùn)維感興趣,也保持時(shí)刻學(xué)習(xí),后續(xù)會(huì)分享工作中用到的運(yùn)維技術(shù),在運(yùn)維的路上得到支持和共同進(jìn)步!
如果伙伴們看了文檔覺(jué)得有用,歡迎大家關(guān)注我的公眾號(hào),獲取相關(guān)文檔。愛(ài)運(yùn)維,愛(ài)生活。
一、ACL訪問(wèn)控制概述
-
基礎(chǔ)權(quán)限
UGO
、特殊權(quán)限,所有的權(quán)限是針對(duì)某一類(lèi)用戶(hù)設(shè)置的, 如果希望對(duì)文件進(jìn)行自定義權(quán)限控制,就需要用到文件的訪問(wèn)控制列表ACL
-
UGO設(shè)置基本權(quán)限: 只能一個(gè)用戶(hù),一個(gè)組和其他人
-
ACL設(shè)置基本權(quán)限: r、w、x 設(shè)定
acl
只能是root
管理員用戶(hù). 相關(guān)命令:getfacl
,setfacl
-
getfacl 命令用于查看文件或目錄當(dāng)前設(shè)定的 ACL 權(quán)限信息。該命令的基本格式為:
[root@edenluo.com ~]# getfacl 文件名
- setfacl 命令可直接設(shè)定用戶(hù)或群組對(duì)指定文件的訪問(wèn)權(quán)限。此命令的基本格式為:
[root@edenluo.com ~]# setfacl 選項(xiàng) 文件名
- 命令可以使用的所用選項(xiàng)及功能
選項(xiàng) | 功能 |
---|---|
-m | 設(shè)定 ACL 權(quán)限。如果是給予用戶(hù) ACL 權(quán)限,參數(shù)則使用 “u:用戶(hù)名:權(quán)限” 的格式,例如 setfacl -m u:st:rx /project 表示設(shè)定 st 用戶(hù)對(duì) project 目錄具有 rx 權(quán)限;如果是給予組 ACL 權(quán)限,參數(shù)則使用 “g:組名:權(quán)限” 格式,例如 setfacl -m g:tgroup:rx /project 表示設(shè)定群組 tgroup 對(duì) project 目錄具有 rx 權(quán)限。 |
-x | 刪除指定用戶(hù)(參數(shù)使用 u:用戶(hù)名)或群組(參數(shù)使用 g:群組名)的 ACL 權(quán)限,例如 setfacl -x u:st /project 表示刪除 st 用戶(hù)對(duì) project 目錄的 ACL 權(quán)限。 |
-b | 刪除所有的 ACL 權(quán)限,例如 setfacl -b /project 表示刪除有關(guān) project 目錄的所有 ACL 權(quán)限。 |
-d | 設(shè)定默認(rèn) ACL 權(quán)限,命令格式為 “setfacl -m d:u:用戶(hù)名:權(quán)限 文件名”(如果是群組,則使用 d:g:群組名:權(quán)限),只對(duì)目錄生效,指目錄中新建立的文件擁有此默認(rèn)權(quán)限,例如 setfacl -m d:u:st:rx /project 表示 st 用戶(hù)對(duì) project 目錄中新建立的文件擁有 rx 權(quán)限。 |
-R | 遞歸設(shè)定 ACL 權(quán)限,指設(shè)定的 ACL 權(quán)限會(huì)對(duì)目錄下的所有子文件生效,命令格式為 “setfacl -m u:用戶(hù)名:權(quán)限 -R 文件名”(群組使用 g:群組名:權(quán)限),例如 setfacl -m u:st:rx -R /project 表示 st 用戶(hù)對(duì)已存在于 project 目錄中的子文件和子目錄擁有 rx 權(quán)限。 |
-k | 刪除默認(rèn) ACL 權(quán)限。 |
acl
基本使用方式
環(huán)境準(zhǔn)備
[root@edenluo.com ~]# cp /etc/passwd /root/passwd文件在沒(méi)有設(shè)定acl, 看到的和傳統(tǒng)權(quán)限是一樣
[root@edenluo.com ~]# ll passwd
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt
使用getacl查看權(quán)限
[root@edenluo.com ~]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw- //文件owner權(quán)限
group::r-- //文件擁有組權(quán)限
other::r-- //其他人權(quán)限
1、設(shè)定acl權(quán)限案例
要求
-rw-r--r-- 1 root root 1380 Feb 27 11:25 passwd
alice 擁有讀寫(xiě)權(quán)限 rw
edenluo 沒(méi)有任何權(quán)限 -
jack 組擁有讀權(quán)限 r
匿名用戶(hù)擁有讀寫(xiě)權(quán)限 rw
1、建立相關(guān)用戶(hù)
[root@edenluo.com ~]# useradd alice
[root@edenluo.com ~]# useradd edenluo
[root@edenluo.com ~]# useradd jack
增加用戶(hù) alice 權(quán)限
[root@edenluo.com ~]# setfacl -m u:alice:rw passwd
增加用戶(hù) edenluo 權(quán)限
[root@edenluo.com ~]# setfacl -m u:edenluo:- passwd
增加匿名用戶(hù)權(quán)限
[root@edenluo.com ~]# setfacl -m o::rw passwd
增加組權(quán)限
[root@edenluo.com ~]# setfacl -m g:jack:r passwd
注意: 如果用戶(hù)同時(shí)屬于不同的兩個(gè)組,并且兩個(gè)組設(shè)定了acl訪問(wèn)控制
1、根據(jù)acl訪問(wèn)控制優(yōu)先級(jí)進(jìn)行匹配規(guī)則
2、如有用戶(hù)擁有多個(gè)組的權(quán)限不同的權(quán)限,優(yōu)先使用最高權(quán)限(模糊匹配)
2、查看acl權(quán)限
[root@edenluo.com ~]# ll passwd
-rw-rw-rw-+ 1 root root 1531 Jan 26 07:52 passwd
[root@edenluo.com ~]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw-
user:edenluo:---
user:alice:rw-
group::r--
group:jack:r--
mask::rw-
other::rw-
3、移除acl權(quán)限
移除jack組的acl權(quán)限
[root@edenluo.com ~]# setfacl -x g:jack passwd
移除edenluo.com用戶(hù)的acl權(quán)限
[root@edenluo.com ~]# setfacl -x u:edenluo passwd
移除文件和目錄所有acl權(quán)限
[root@edenluo.com ~]# setfacl -b passwd//移除默認(rèn)的acl
[root@edenluo.com ~]# setfacl -k dir
4、查看acl幫助
EXAMPLES 示例
[root@edenluo.com ~]# man setfacl
復(fù)制 file1 的 ACL 權(quán)限給 file2
[root@edenluo.com ~]# setfacl -m u:alice:rw,u:edenluo:r,g:jack:rw file1
[root@edenluo.com ~]# getfacl file1 |setfacl --set-file=- file2
二、ACL高級(jí)特性MASK
mask
用于臨時(shí)降低用戶(hù)或組的權(quán)限,但不包括文件的所有者和其他人。mask
最主要的作用是用來(lái)決定用戶(hù)的最高權(quán)限。mask
默認(rèn)不會(huì)對(duì)匿名用戶(hù)降低權(quán)限,所以為了便于管理文件的訪問(wèn)控制,建議匿名用戶(hù)的權(quán)限置為空
臨時(shí)降低用戶(hù)或組權(quán)限
[root@edenluo.com ~]# setfacl -m mask::rw filename
小結(jié)
? 1、mask
會(huì)影響哪些用戶(hù),除了所有者和其他人。
? 2、mask
權(quán)限決定了用戶(hù)訪問(wèn)文件時(shí)的最高權(quán)限。(如何影響)
? 3、mask
用于臨時(shí)降低用戶(hù)訪問(wèn)文件的權(quán)限。(mask做什么)
? 4、任何重新設(shè)置acl
訪問(wèn)控制會(huì)清理mask
所設(shè)定的權(quán)限。
三、ACL高級(jí)特性Default
-
default: 繼承(默認(rèn))
-
alice
能夠?qū)?code>/opt目錄以及以后在/opt
目錄下新建的文件有讀、寫(xiě)、執(zhí)行權(quán)限
賦予 alice 對(duì)/home 讀寫(xiě)執(zhí)行權(quán)限
[root@edenluo.com ~]# setfacl -R -m u:alice:rwX /opt
賦予 alice 對(duì)以后在/home 下新建的文件有讀寫(xiě)執(zhí)行權(quán)限(使 alice 的權(quán)限繼承)
[root@edenluo.com ~]# setfacl -m d:u:alice:rwX /opt
檢查對(duì)應(yīng)的權(quán)限
[root@edenluo.com ~]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: root
# group: edenluo.com
user::rwx
user:alice:rwx
group::rwx
mask::rwx
other::rwx
default:user::rwx
default:user:alice:rwx
default:group::rwx
default:mask::rwx
default:other::rwx
四、ACL訪問(wèn)控制實(shí)踐案例
- 案例1: 將新建文件的屬性修改
tom:admin
, 權(quán)限默認(rèn)為644要求:tom
對(duì)該文件有所有的權(quán)限,mary
可以讀寫(xiě)該文件,admin
組可以讀寫(xiě)執(zhí)行該文件,jack
只讀該文件, 其他人一律不能訪問(wèn)該文件
實(shí)驗(yàn)前, 建立幾個(gè)普通用戶(hù)
[root@edenluo.com ~]# useradd tom
[root@edenluo.com ~]# useradd bean
[root@edenluo.com ~]# useradd mary
[root@edenluo.com ~]# useradd jack
[root@edenluo.com ~]# useradd sutdent
[root@edenluo.com ~]# groupadd admin
[root@edenluo.com ~]# gpasswd -a mary admin
[root@edenluo.com ~]# gpasswd -a bean admin//檢查用戶(hù)屬性
[root@edenluo.com ~]# id tom
uid=1004(tom) gid=1004(tom) groups=1004(tom)
[root@edenluo.com ~]# id mary
uid=1006(mary) gid=1006(mary) groups=1006(mary),1007(admin)
[root@edenluo.com ~]# id bean
uid=1005(bean) gid=1005(bean) groups=1005(bean),1007(admin)
[root@edenluo.com ~]# id jack
uid=1002(jack) gid=1002(jack) groups=1002(jack)
[root@edenluo.com ~]# id sutdent
uid=1007(sutdent) gid=1008(sutdent) groups=1008(sutdent)//準(zhǔn)備相關(guān)文件
[root@edenluo.com ~]# cp /etc/passwd /root/
[root@edenluo.com ~]# chown tom:admin passwd
[root@edenluo.com ~]# chmod 644 passwd//檢查設(shè)定前的acl列表
[root@edenluo.com ~]# getfacl passwd
# file: passwd
# owner: tom
# group: admin
user::rw-
group::r--
other::r--//設(shè)定acl權(quán)限
[root@edenluo.com ~]# setfacl -m u::rwx,u:mary:rw,u:jack:r,g:admin:rwx,o::- passwd//檢查acl權(quán)限
[root@edenluo.com ~]# getfacl passwd
# file: passwd
# owner: tom
# group: admin
user::rwx
user:jack:r--
user:mary:rw-
group::r--
group:admin:rwx
mask::rwx
other::---
-
acl的控制規(guī)則是從上往下匹配
-
1.
tom
由于是文件的擁有者,所以直接按照user::rwx
指定的權(quán)限去操作 -
2.
mary
用戶(hù)從上往下尋找匹配規(guī)則,發(fā)現(xiàn)user:mary:rw-
能夠精確匹配mary
用戶(hù),盡管mary
屬于admin
組,同時(shí)admin
組有rwx
的權(quán)限,但是由于mary
用戶(hù)的規(guī)則在前面,所有優(yōu)先生效。 -
3.
bean
由于找不到精確匹配的規(guī)則,而bean
是屬于admin
組,根據(jù)文件的定義,該文件是屬于admin
組,所以bean
的權(quán)限是按照group:admin:rwx
的權(quán)限去操作。 -
4.
jack
用戶(hù)從上往下尋找匹配規(guī)則,發(fā)現(xiàn)user:jack:r--
能夠精確匹配jack
用戶(hù)。 -
5.
student
用戶(hù)找不到精確匹配的user
定義規(guī)則, 也找不到相關(guān)組的定義規(guī)則,最后屬于other
。
-
-
案例2:
lab acl setup
controller組成員有:student
sodor組成員有:thomas,james
目錄: /shares/steamies
文件: /shares/steamies/file
腳本: /shares/steamies/test.sh
controller屬于該目錄的所屬組, 新建文件必須屬于controller組
sodor組的成員對(duì)該目錄擁有rwx權(quán)限
sodor組成員james對(duì)該目錄及子目錄(包括以后新建立的文件)沒(méi)有任何權(quán)限
- 實(shí)際操作
準(zhǔn)備用戶(hù)
[root@edenluo.com ~]# groupadd controller
[root@edenluo.com ~]# groupadd sodor
[root@edenluo.com ~]# useradd student -G controller
[root@edenluo.com ~]# useradd thomas -G sodor
[root@edenluo.com ~]# useradd james -G sodor
準(zhǔn)備目錄
[root@edenluo.com ~]# mkdir /shares/steamies -p
[root@edenluo.com ~]# echo "file" >> /shares/steamies/file
[root@edenluo.com ~]# echo "echo 123" >> /shares/steamies/test.sh
[root@edenluo.com ~]# chmod 755 /shares/steamies/test.sh
[root@edenluo.com ~]# chown -R :controller /shares/steamies/
[root@edenluo.com ~]# chmod g+s /shares/steamies/
設(shè)定權(quán)限(X表示,如果原本有執(zhí)行權(quán)限就保留,如果沒(méi)有則不添加)
[root@edenluo.com ~]# setfacl -R -m g:sodor:rwX,u:james:- /shares/steamies/
設(shè)定繼承規(guī)則
[root@edenluo.com ~]# setfacl -R -m d:g:sodor:rwX,d:u:james:- /shares/steamies/
[root@edenluo.com steamies]# getfacl /shares/steamies/
getfacl: Removing leading '/' from absolute path names
# file: shares/steamies/
# owner: root
# group: controller
# flags: -s-
user::rwx
user:james:---
group::r-x
group:sodor:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:sodor:rwx
default:mask::rwx
default:other::r-x
如果有版幫助,幫忙免費(fèi)的關(guān)注一下**公眾號(hào)「想吃西紅柿」「云原生運(yùn)維實(shí)戰(zhàn)派」**后續(xù)會(huì)有更多實(shí)用的運(yùn)維技術(shù)分享給伙伴們,您的關(guān)注就是我最大的成就。