【我的Linux,我做主!】ACL訪問控制列表

目錄:
(一)使用ACL爲用戶授權
(二)設置mask權限
(三)設置默認權限(只能對目錄設置)


(一)使用ACL爲用戶授權
(1.1)如果現在我們有一個需求,在系統中有一個文件file,我們需要設置tom對file文件的權限爲“r--”,設置bob用戶對file文件的權限爲“rw-”,設置mary用戶對file文件的權限爲“---”,設置jerry用戶對file文件的權限爲“r-x”。此時我們使用常規的屬組屬主的權限設置是沒有辦法滿足要求的,如果要求對具體的某個用戶或者組來設置acl權限,大家要考慮到使用acl
(1.2)現在我們進入到/opt/目錄下,然後將/etc/hosts文件拷貝到當前目錄中,此時我們發現hosts文件的other用戶的權限是可讀(圖1-1),所以我們以tom用戶的身份去修改hosts文件的時候,發現無法修改成功(圖1-2和圖1-3)。
# cp /etc/hosts .
# getfacl hosts
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
(1.3)如果此時我們希望tom用戶能夠對hosts文件進行修改,則我們應該使用setfacl命令進行設置。我們設置針對hosts文件給tom用戶設置rwx的權限,我們發現tom用戶已經有了一個在hosts文件的acl權限(圖1-4),此時我們使用tom用戶便可以正常的在hosts文件中添加信息了(圖1-5)。
# setfacl -m u:tom:rwx hosts---針對hosts文件給tom用戶設置rwx的權限
# getfacl hosts---查詢當前hosts文件的權限
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
(1.4)如果我們希望取消給tom用戶設置的acl權限,則可以使用setfacl -x命令操作,此時我們發現系統中已經沒有針對tom用戶設置的acl權限了(如圖1-6)。
# setfacl -x u:tom hosts---取消給tom用戶設置的acl權限
【我的Linux,我做主!】ACL訪問控制列表


(二)設置mask權限
(2.1)我們先給tom用戶和jerry用戶都設置acl權限(圖2-1),現在我們在公司中有某個文件或者某個目錄,對很多個用戶都設置了acl訪問控制的權限,但是現在需要對文件或目錄進行維護,此時我們需求是不允許任何人再寫這個文件了,等文件維護完畢後然後再開放文件權限給對應的用戶使用,此時我們可以使用mask權限,相當於一層遮罩碼將當前用戶的權限蓋住,然後進行維護操作,我們可以使用setfacl -m命令操作(圖2-2),此時我們發現之前給tom用戶和jerry用戶設置的acl權限都被新的遮罩碼“r--”蓋住了,我們使用“# setfacl -m m::r-- hosts”進行遮罩碼的操作後,發現此時以tom用戶編輯hosts文件的時候是無法修改成功的(圖2-3)。
# setfacl -m u:tom:rwx hosts---設置tom用戶的acl權限
# setfacl -m u:jerry:rwx hosts---設置jerry用戶的acl權限
# setfacl -m m::r-- hosts---給hosts文件設置一個mask遮罩碼
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
(2.2)如果我們想將這個遮罩碼去除,此時我們只需要對其中的一個用戶重新設置acl權限後,便可以使得所有用戶原先的acl權限都生效了。
# setfacl -m u:tom:rwx hosts---設置tom用戶的acl值
# getfacl hosts---查詢hosts文件的acl狀態
【我的Linux,我做主!】ACL訪問控制列表
(2.3)現在我們設置hosts文件的mask值爲不可讀、不可寫、不可執行,此時我們發現雖然此時hosts文件的mask權限爲“---”,但是由於hosts文件的other權限中是有可讀的權限的,所以此時tom用戶會以other的身份讀取hosts文件,是能夠正常的讀取hosys文件的,只有我們將other的可讀權限也去除,此時tom用戶才無法讀取文件。
注意:我們總結的內容爲,如果mask的權限設置爲“---”,則other的權限生效;如果mask的權限設置爲非“---”,則mask權限生效
# setfacl -m m::--- hosts---設置hosts文件的mask值爲不可讀、不可寫、不可執行
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
(2.4)現在我們重新設置一個tom用戶和jerry用戶的權限都爲r-x,然後設置mask的值爲rwx(圖2-7),此時我們使用tom用戶去嘗試寫入hosts文件時,發現仍然是無法寫入的(圖2-8)。我們的總結爲,如果你給用戶設置的爲r-x,沒有設置w這個權限,此時如果想在mask裏給它設置了這個w的權限,也是仍然無法使得文件可寫的權限生效的。如果我們對other的權限添加了w的權限,此時tom和jerry用戶仍然是無法擁有hosts文件的可寫權限的,即說明了setacl設置的權限的優先級高於other裏設置的權限。
# setfacl -m u:tom:r-x hosts---設置tom用戶的acl爲r-x
# setfacl -m u:jerry:r-x hosts---設置jerry用戶的acl爲r-x
# setfacl -m m::rwx hosts---設置hosts文件的mask值爲rwx
# getfacl hosts---查詢hosts文件的acl狀態
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
(2.5)如果現在我們想對用戶組設置acl權限,例如我們設置了tom組擁有可讀、可寫、可執行的權限,然後我們想讓沒有權限的bob用戶擁有tom組的權限,此時我們的做法是將bob用戶加入到tom組中,然後將bob用戶退出登錄後再重新登錄bob用戶,此時bob用戶便擁有了tom組的權限。
# setfacl -m g:tom:rwx file---對tom組設置acl權限


(三)設置默認權限(只能對目錄設置)
(3.1)我們首先在vms002主機的/opt/目錄下創建一個rh134的目錄。
# mkdir rh134---創建一個rh134的目錄
# getfacl rh134/---獲取所創建的目錄的權限
【我的Linux,我做主!】ACL訪問控制列表
(3.2)然後我們設置針對rh134目錄下,不管是誰在rh134目錄裏創建的新的文件或者目錄,對tom都具有rwx權限,但是並不包括rh134本身。接着我們在rh134目錄下創建一個root1的文件,此時我們發現創建的root1文件的權限繼承了tom用戶rwx的權限,但是由於操作系統規定創建的文件最高權限爲644,所以文件的默認權限爲rw-,所以在創建文件的時候,不管用什麼方法,都沒有辦法創建出來默認含有x權限的文件。
# setfacl -m d:u:tom:rwx rh134/---設置不管是誰在rh134目錄裏創建的新的文件或者目錄,對tom都具有rwx權限,但是並不包括rh134本身
# touch rh134/root1---在rh134目錄下創建一個root1的文件
# getfacl rh134/root1---查詢root1目錄的acl權限
【我的Linux,我做主!】ACL訪問控制列表
(3.3)接着我們嘗試使用jerry用戶創建文件,我們首先將jerry用戶設置acl爲對目錄rh134有rwx權限(圖3-3),然後我們創建了一個jerry1文件,此時我們創建的jerry1文件繼承了tom用戶的rwx權限,同時爲了符合系統默認創建文件的要求,因此最終jerry1文件的權限爲rw-(圖3-4)
# setfacl -m u:jerry:rwx rh134/---設置jerry用戶擁有對目錄rh134可讀、可寫、可執行的權限
# getfacl rh134/---獲取目錄rh134的權限信息
# touch rh134/jerry1
# getfacl rh134/jerry1
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表
(3.4)我們再使用jerry用戶在/opt/目錄下創建一個jerry2的目錄,此時我們發現創建的目錄也仍然繼承了默認的tom用戶執行時所擁有的rwx權限。
# mkdir rh134/jerry2---創建一個目錄jerry2
# getfacl rh134/jerry2
【我的Linux,我做主!】ACL訪問控制列表
(3.5)此時雖然tom用戶對rh134目錄中新增加的文件具有權限,但是tom用戶本身是無法在rh134目錄中創建文件的,因爲我們並沒有針對rh134目錄爲tom用戶設置acl權限。
【我的Linux,我做主!】ACL訪問控制列表
(3.6)如果我們希望將針對tom用戶的默認權限取消,我們可以使用“# setfacl -x d:u:tom rh134/”命令,我們發現之前創建的文件仍然具有tom用戶可讀、可寫的權限不會收回去的(圖3-7),但是如果我們新創建的文件,則不會再繼承tom用戶可以執行的相關權限了(圖3-8)。
# setfacl -x d:u:tom rh134/---取消針對134目錄下的文件繼承tom用戶擁有相關權限的默認設置
# getfacl rh134/jerry1---獲取rh134目錄中之前創建的文件的acl權限
# mkdir rh134/root2
# getfacl rh134/root2
【我的Linux,我做主!】ACL訪問控制列表
【我的Linux,我做主!】ACL訪問控制列表

—————— 本文至此結束,感謝閱讀 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章