RHEL6基礎四十九之RHEL文件(夾)權限進階篇

ACL權限管理

ACL(Access Control List,訪問控制列表)主要是提供傳統的owner,group,others的read,write,execute權限之外的具體權限設置,ACL可以針對單一用戶、單一文件或目錄來進行r,w,x的權限控制,對於需要特殊權限的使用狀況有一定幫助。

例①:目錄 /home/acl 的權限爲:drwxr-x---,所有者與所屬組均爲 root,在不改變所有者的前提下,只要求other組的用戶justin 對該目錄有完全訪問權限 (rwx)(justin不屬於 root group)
(1) 對於/home/acl目錄來說justin用戶屬於other組,如果給 /home/acl的 other 組增加 rwx 權限,這樣所有other組成員都擁有了rwx權限。
(2) 如果將 justin 加入到 root 組,爲 root 組分配 rwx 權限,顯然和題意不符。

爲了解決這個問題需要使用ACL的功能,ACL 可以設置特定用戶或者用戶組對於一個文件的操作權限

ACL權限管理

Setfacl:設置某個文件/目錄的ACL設置項目

Getfacl:取得某個文件/目錄的ACL設置項目

[d[efault]:] [u[ser]:]uid [:perms]  指定用戶的權限,文件所有者的權限(如果uid沒有指定)。

[d[efault]:] g[roup]:gid [:perms]   指定羣組的權限,文件所有羣組的權限(如果gid未指定)

[d[efault]:] m[ask][:] [:perms]     有效權限掩碼

[d[efault]:] o[ther] [:perms]       其他的權限

perms域是一個代表各種權限的字母的組合:讀-r寫-w執行-x,執行只適合目錄和一些可執行的文件,也可設置爲八進制格式。

說明:ACL 有兩種,一種是存取 ACL (access ACLs),針對文件和目錄設置訪問控制列表。一種是默認ACL(default ACLs),只能針對目錄置。如果目錄中的文件沒置ACL,它就會使用該目錄的默認 ACL.

參數功能參數功能
-m修改文件(夾)當前的ACL設置-x刪除文件(夾)的ACL設置
-M讀取文件(夾)修改的ACL設置-X讀取刪除的文件(夾)ACL設置
-b
刪除所有的ACL設置-R遞歸設置ACL
-k刪除默認的ACL設置-d設置默認的ACL

wKioOVLCdK2g6U1sAADf4x64hEo426.jpg

user::rw-       定義了ACL_USER_OBJ, 說明file owner擁有read and write permission

user:john:rw-   定義了ACL_USER,這樣用戶john就擁有了對文件的讀寫權限,實現了我們一開始要達到的目的

group::rw-      定義了ACL_GROUP_OBJ,說明文件的group擁有read and write permission

group:dev:r--   定義了ACL_GROUP,使得dev組擁有了對文件的read permission

mask::rw-       定義了ACL_MASK的權限爲read and write

other::r--      定義了ACL_OTHER的權限爲read


注意:除了對用戶、組進行設置外還可以對有效權限(mask)進行設置,用戶或組所設置的權限必須要存在於mask的權限設置範圍內纔會生效

上面的例①可以如下操作:

wKioOVLCdjHienLsAACXxlz3Jz8766.jpg


       SetUID SetGID 粘滯位sticky位

權限功能
SetUID

使用戶具有文件所有者的權限.SetUID只會出現在二進制文件中,目錄中存在將沒有意義。當其它用戶使用帶用Setuid標識的命令時,自己對此命令也必需有X(執行)的權限

SetGID設置用戶具有該目錄所屬組的權限。該權限只對目錄有效. 目錄被設置該位後, 任何用戶在此目錄下創建的文件都具有和該目錄所屬的組相同的組.
粘滯位粘滯位主要是爲公共目錄(例如權限爲777的)設置,作用是用戶不能刪除該目錄中其他用戶的文件(root用戶除外)。sticky只對文件有效

文件(夾)的權限實際上是由4位8進制數字表示,這4位數字由SetUID+SetGID+粘滯位、屬主、屬組、其他用戶組成,SetUID、SetGID、粘滯位(sticky位)分別用數字4、2、1表示,設置後, 可以用 ls -l 來查看. 如果本來在該位上有x, 則這些特殊標誌顯示爲小寫字母 (s, s, t). 否則, 顯示爲大寫字母 (S, S, T),賦予SetUID權限chmod命令:chmod 4xxx file(s)或chmod u+s file(s),撤銷SetUID權限:chmod xxx file(s)或chmod u-s file(s)

例:1、以SetUID爲例:

wKiom1LGb73AYEZfAADS2vqIk80276.jpg

2、在/home/sticky目錄中任何用戶都可以創建文件或目錄,但只有用戶自身和root用戶可以刪除用戶所創建的文件或目錄。

wKioL1LGb7DzpsUXAAEWHQdYAq0260.jpg


chattr與lsattr命令

這兩個命令是用來查看和改變文件、目錄屬性的,與chmod這個命令相比,這兩個命令是用來查看和改變文件、目錄屬性的,與chmod這個命令相比,chmod只是改變文件的讀寫、執行權限,更底層的屬性控制是由chattr來改變的。

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…

+ :在原有參數設定基礎上,追加參數。+ :在原有參數設定基礎上,追加參數。
- :在原有參數設定基礎上,移除參數。
= :更新爲指定參數設定。
A:文件或目錄的 atime (access time)不可被修改(modified), 可以有效預防例如手提電腦磁盤I/O錯誤的發生。
S:硬盤I/O同步選項,功能類似sync。
a:即append,設定該參數後,只能向文件中添加數據,而不能刪除,多用於服務器日誌文件安全,只有root才能設定這個屬性。
c:即compresse,設定文件是否經壓縮後再存儲。讀取時需要經過自動解壓操作。
d:即no dump,設定文件不能成爲dump程序的備份目標。
i:設定文件不能被刪除、改名、設定鏈接關係,同時不能寫入或新增內容。i參數對於文件 系統的安全設置有很大幫助。
j:即journal,設定此參數使得當通過mount參數:data=ordered 或者 data=writeback 掛 載的文件系統,文件在寫入時會先被記錄(在journal中)。如果filesystem被設定參數爲 data=journal,則該參數自動失效。
s:保密性地刪除文件或目錄,即硬盤空間被全部收回。
u:與s相反,當設定爲u時,數據內容其實還存在磁盤中,可以用於undeletion。
各參數選項中常用到的是a和i。a選項強制只可添加不可刪除,多用於日誌系統的安全設定。而i是更爲嚴格的安全設定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力(標識)的進程能夠施加該選項。

用chattr命令防止系統中某個關鍵文件被修改

[root@justin ~]# lsattr /etc/resolv.conf
-------------e- /etc/resolv.conf
[root@justin ~]# chattr +i /etc/resolv.conf
[root@justin ~]# lsattr /etc/resolv.conf
----i--------e- /etc/resolv.conf
[root@justin ~]# vim /etc/resolv.conf

wKiom1N0eC6xJQOfAAEL_dsuTZ8845.jpg

讓某個文件只能往裏面追加數據,但不能刪除,適用於各種日誌文件

[root@justin ~]# chattr +a /var/log/messages


###########################################################

關注微信公衆平臺,瞭解最新動態

155940478.jpg

Linux交流QQ羣:333212786

Linux系統運維技術交流

PS:由於學習階段部分不確定性文章會暫時隱藏,後期會公開,新公開和修正的文章會

通過微信公衆平臺(justin_rsdd)給出提示,歡迎關注,同時也希望得到大家的指點!

##############################################################


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