使用者的權限管理
使用者的權限管理中包含主要的四部分:普通權限、特殊權限、檔案的特殊屬性、FACL:
一、普通權限:
普通權限下的程序安全上下文包括如下幾點:
1、判斷程序的所有者是否想要操作所有者的屬主,如果是,就按照屬主的權限進行授權,如果不是,就轉到第二條;
2、判斷程序所有者是否想要操作檔案屬組中的成員,如果是,就按照屬組的權限進行授權,如果不是,就轉到第三條;
3、按照其他使用者的權限進行授權。
權限包括使用權和所有權,具體構成如下:
1、MODE(Permission):使用權
使用權中的權限位為r(readable 可讀)、w(writeable 可寫)、x(executable 可執行)
目錄中權限位的具體用法如下:
r:可以使用ls指令擷取其中所有目錄的檔案名清單;ls -l指令來擷取指令中檔案的詳細屬性資訊,不能使用cd指令進入其中,也不能在路徑中引用該目錄;
w:可以修改此檔案的檔案名或檔案清單,即可以在此指令中建立、修改或删除檔案名;
x;可以使用ls指令來擷取檔案中纖細的屬性資訊,可以自路徑中引用該目錄,也可以使用cd指令來進入其中。
注意:x權限是目錄的基本權限,換言之,任何目錄都必須給任何使用者開放x權限,如果沒有執行權限則不能引用路徑。
2、OWNERSHP:所有權
所有權包括三類:屬主的、屬組的、其他使用者的
屬主所有權:資源掌控的某些特定使用者,用group表示,簡寫為g;
屬組所有權:資源掌控的某個特定使用者,用owner(user)表示,簡寫為u;
其他使用者的所有權:未曾掌控資源的那些使用者,用other表示,簡寫為o,為了安全,對于其他使用者的寫權限可以不給的話就不給;
全部使用者可以用all表示,簡寫為a。
檔案(非目錄)中權限位的具體用法如下:
r:可以檢視或擷取該檔案中存放的資料;
w;可以修改檔案中存儲的資料;
x:可以将此檔案發起為程序。
其中使用ls -l(ll)指令可以顯示檔案的詳細屬性
權限的三種表達方式為:字元權限(如:rw-r--r--);8位二進制權限(如:110100100);十進制權限(如:644)
對于權限rw-r--r--的解釋為:rw-(權限屬主)、r--(檔案屬組)、r--(其他使用者權限)
權限辨別可以用三元組來表示,有權限用1表示,無權限用0表示,對于無權限在字元權限中可以用-來表示,具體例子如下:
--- 000
--x 001
-w- 010
-wx 011
r-- 100
r-x 101
rw- 110
rwx 111
注意:隻有某個檔案的屬主才能修改檔案的使用權限(root除外,root不受限定)
修改權限位的指令:chmod、chown、chgrp、install、mktemp
1、chmod:change mode
chmod修改檔案的權限位(change file mode bits)
chmod格式為:
chmod[OPTION]…MODE[,MODE]…FILE…()注意省略中MODE用逗号分隔
MODE的權限辨別所有法為:u、g、o、a(all)
+、-、=三個辨別的授權方式如下:
+:在所有的權限基礎上添加新的權限;
-:在所有的權限基礎上去除某些權限;
=:不考慮原有檔案,直接将該權限設定為目标檔案。
在MODE中,r、w、x表示具體的内容,具體如下所示:
例如:chmod u+w file 改變屬主
chmod g+rw file 改變屬組
chmod u+x,g-wx,o-x file (注意用逗号隔開)
chmod u=rx,g=r,o=r file
chmod ug-x file
chmod +x file 預設的為a添加執行權限
chmod +w file 預設的隻為屬主添加寫權限
注意:檔案的執行權限,對于Linux檔案系統來說是一種非常重要的安全網絡辨別,因為檔案一旦具備了執行權限,移位着該檔案可以被發起者執行為程序,是以預設情況下,檔案都不具備執行權限。
chmod [OPTION]…OCTAL-MODE FILE(八進制數字辨別法)
如果使用八進制數字辨別法,則每次必須給足所有的權限位,如果給的權限位不完整,檔案系統會自動補足,将給定的權限自動放在權限的右側,左側用0來補足。、
例如:cmd 640 file
chmod [OPTION]…--reference=RFILE FILE…
chmod --reference=/PATH/TO/SAMEFILE DES_FILE
例如:chmod --reference=a b
chmod中的選項R(recursive):遞歸,将目标目錄中的檔案基子目錄和子目錄中的檔案統一設定為指定的權限辨別。
2、chown
chown 可以修改檔案的屬主和屬組(change file and group)
chown的格式為:
chown [OPTION]…[OWNER][:[GROUP]] FILE…
chown OWNER FILE 改變檔案的屬主或屬組,其中可以存在省略
chown :GROUP FILE 隻改變屬組
chown OWNER FILE是将目标檔案屬主改為OWNER,同時将屬組改為OWMER的基本組
chown OWNER:GROUP FILE将目标檔案的屬主和屬組改為OWNER和GROUP
chown [OPTION]…--reference=RFILE FILE…
chown中的選項R(recursive):遞歸,将目标目錄中的檔案基子目錄和子目錄中的檔案統一設定為指定的權限辨別。
注意:修改OWNERSHIP操作隻有超級使用者(root)可以執行
3、chgrp
chgrp隻能修改檔案的屬組(change group ownership)
chgrp [OPTION]…GROUP FILE…
chgrp [OPTION]… --reference=RFILE FIKE…
4、install指令
安裝、複制檔案,為檔案賦予執行權限(copy files and set attributes)
install的複制包括單源複制和多源複制,如下:
單源複制:install[OPTION]…[-t] SOURCE DEST
多源複制:install[OPTION]…-t DIRECTORY SOURCE…
install[OPTION]…SOURCE…DIRECTORY…
建立目錄:install [OPTION]… -d DIRECTORY…
install常用選項如下:
-m,--mode=MODE: 指定目标檔案的權限,預設為755
-o,--owner=OWNER: 設定目标檔案的屬主,隻能是root可用
-g,--group=GROUP: 設定目标檔案的屬組,僅root可用
注意:install指令不僅能複制目錄,即其源不能為目錄;如果其源為目錄,則install經曆了會進入目錄,依次複制其中所有非目錄檔案到目錄位置
5、mktemp指令
一般來說,臨時檔案都會建立在/tmp或/var下。在tmp目錄中,無需手動删除,系統會定期自動清除這兩個目錄中的檔案
mktemp的選項:-d,--directory:可以建立臨時目錄
例如:mktemp [-d] /PATH/TO/TMP.XXXXXX(至少3個XXX)
二、特殊權限
特殊權限包括SUID、SGID、STICKY,預設情況下,使用者發起執行的一個程序,也就是說,該程序是以其發起者的身份在運作
1、SUID
功能作用:使用者發起執行一個程序時,該程式檔案如果擁有SUID權限的話,那麼此程式發起的程序其屬主為該程式檔案的屬主,而不是其發起者
SUID權限所顯示的位置:檔案的屬主權限中的執行權限位;如果屬主本就是執行權限,顯示為s;否則,顯示為S
管理檔案的SUID權限為: chmod u+|-s FILE……
2、SGID
功能作用:如果某個目錄對于一些使用者有寫權限并且設定了SGID權限時,則所有對此目錄有寫權限的使用者在建立新的檔案或目錄以後,性檔案的屬組不在是建立使用者的基本組,而是繼承了該目錄的組
SGID權限顯示的位置:檔案的屬組權限中的執行權限位,如果屬組本來及時執行權限,顯示為s,否則顯示為S
3、STICKY——粘滞位
STICKY的功能作用:如果某個目錄中,有超過一個使用者可以有寫權限,則這多個使用者都可以在該目錄中随意建立、修改和删除檔案名。如果為上述類似的目錄設定了STICKY權限,則每個使用者仍舊能夠建立和修改檔案名,但每個使用者隻能删除那些屬主為其自身的檔案名
sticky權限的顯示位置:在檔案權限的其他使用者的執行權限位,如果原來就有執行權限,則顯示為t,否則為T
管理檔案的SYICKY權限:chmod o+|-t FILE…,具體表達格式如下:
Suid sgid sticky
--- 000 0
--t 001 1
-s- 010 2
-st 011 3
S-- 100 4
S-t 101 5
Ss- 110 6
Sst 111 7
特殊權限還有另一種修改方式:将特殊權限對應的八進制數字放置于普通權限八進制數字的前面即可
例如:想要把某個目錄加上粘滞位:chmod 1755 DIRECTORY…
4、umask——權限遮罩碼
在建立檔案或目錄時預設的權限生成标準,root的權限遮罩碼為0022,普通使用者遮罩碼為0002。對于普通使用者,不考慮特殊權限位,對于新建立的檔案或目錄,不遮擋屬主的任何權限;遮住了屬組的寫權限和其他使用者的寫權限
例如:# mkdir test -->rwxr-xr-x
# touch test.txt---->rw-r--r--
可以了解為,将遮罩碼的值變為二進制,凡是有1的位置,其權限在建立檔案時,就不設定,預設情況下,檔案的遮罩碼已經有了一個0111,在此基礎之上再次運用umask來遮罩
例如:000011011 -------110100100 644
-------111100100 744
三、檔案的特殊屬性
1、檢視檔案的特殊屬性
lsattr: list file attributes on a linux second extended file system
格式:lsattr [-RVadv][files…]
2、修改設定檔案的特殊屬性
chattr: change file attributes on a linux file system
格式:chattr [-Rvf] [-v version] [mode] files…
格式中,mode會使用+、-、=的方式來設定,整個chattr指令最關鍵最核心的設定就是[mode]部分,[aAcCdDeijsStTu]都是所需要的屬性
其中的+、-、=的意義如下:
+:在保有屬性設定的基礎上,添加新屬性
-:從原有屬性設定中移除指定的屬性
=:不考慮原有的屬性設定,直接将檔案的屬性更新為指定的屬性内容
chattr的選項如下:
a: append,設定這個屬性的檔案,其内容不能别修改和删除,隻能以追加的方式向檔案中寫資料,多數的伺服器日志類檔案會設定為此屬性
A:atime,檔案的通路時間戳,IO瓶頸,設定A屬性,可以說的檔案在通路時不更改檔案的時間戳,、進而可以有效的防止IO瓶頸的發生
c: 設定檔案是否壓縮後再進行存儲
C: 設定檔案是否開啟“寫時複制”屬性
d: 設定檔案在使用dump進行備份的時候,不會稱為備份目标
D: 設定檔案在檔案系統中的異步寫操作(一般不設定)
i: 設定檔案不能被删除、修改、設定連結關系
s:設定檔案的保密性删除,一旦設定s屬性的設定被删除,其對應儲存設備中的使用空間會被一并收回
u: 跟s屬性相反,如果這樣的而檔案被删除,則其存儲于裝置中的資料會被留存
chattr中,最常用的屬性為i和a ,例如:chattr +i FILE
chattr中,常用選項R,遞歸的設定指定目錄中的所有檔案和子目錄的屬性
四、FACL(File Access Control List)
FACL為為檔案賦予額外的權限機制,檔案通路控制清單
檔案的額外賦權機制為:在原有的u、g、o權限位之外,讓普通使用者能夠控制權限賦予另外的使用者群組的一種賦權機制。一般在CentOS或RHEL7版本以後的發行版中,才逐漸成熟
與FACL有關的指令有getfacl、Setfacl,具體表示如下:
getfacl :get file access control lists
格式:Getfacl [-aceEsRLPndvh] file…
其中,MODE一般采用權限符号辨別法:有u:USERNAME:MODE、g:GROUPNAME:MODE
為使用者賦予額外權限:setfacl -m u:USERNAME:MODE FILE…
為組賦予額外權限: setfacl -m g:GROUPNAME:MODE FILE…
撤銷為使用者賦予的額外權限:setfacl -x u:USERNAME
撤銷為組賦予的額外權限:setfacl -x g:GROUPNAME
注意:如果設定了FACL之後再修改目标檔案的使用權限,那麼FACL中設定的條目就可能受到影響而導緻要求不符,是以,如果真的需要設定FACL,就要在已經确定指令檔案的使用權限以後再行設定。
本文轉自little_ding 51CTO部落格,原文連結:http://blog.51cto.com/12496428/1912809,如需轉載請自行聯系原作者