1. 程式人生 > >文件系統權限   -- 學習筆記

文件系統權限   -- 學習筆記

文件系統權限

文件系統的權限管理:
安全上下文:
任何在計算機中執行的任務都是由進程實現的
進程有必要訪問和使用文件或某些數據資源
進程和其要操作的文件之間的關系,就定義為安全上下文
在DAC模型中,定義安全上下文的方式很簡單
所有權
任何啟動進程的用戶就是該進程的所有者,進程的所有者也可以變更
任何創建文件的用戶就是該文件的所有者,文件的所有者可以變更
使用權
在文件上面定義的對於該文件的特定使用過濾規則
三個權限:所有者權限,所屬組權限,其他人權限
安全上下文的匹配規則
當某個進程試圖操作某個文件時,DAC將做如下規則匹配
1.判斷進程的所有者和文件的所有者是否為同一用戶,如果是,則直接應用文件的所有者權限

2.如果不是,進一步判斷進程的所有者是否為文件所屬組的成員,如果是,則直接應用文件所屬組的權限
3.如果不是,直接應用其他人權限;
文件權限的構成:
使用權:MODE,Premission
三個基本權限:
r:Readable,可讀
w:Writable,可寫
x:eXecutable,可執行
目錄文件:
r:可以使用ls命令獲取其中包含的所有文件的文件名列表
w:可以在此目錄中進行文件名修改(創建,刪除,修改)
;即:可以創建文件名,刪除文件名及修改文件名;
x:可以使用ls -l命令來查看各個文件的屬性信息;在路徑中引用該目錄
非目錄文件;
r:可以利用cat類的命令獲取文件中存放的數據信息
w:可以修改(添加,修改,刪除,覆蓋)文件中存放的數據信息
x:可以將文件發起為進程
獲取使用權和所有權的相關信息
ls -l[d]/PATH/TO/SOMEFILE
rwxr-xr-x.:三個權限位(屬主/所有者,屬組/所屬組,其他用戶)
屬主權限:rwx,此權限位標識為user,簡寫為u
屬組權限:r-x,此權限位標識為other,簡稱為o
其他用戶權限:r-x
*註意:“-”表示在該權限位上不具備指定權限
rwx組合稱為“權限標識三元組”
數字權限標識:二進制數字標識,在對應的權限位上有權限則為1,無權限則為0;
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
使用符號標識權限和數字標識權限的區別
1.使用符號標識法可以只標識某個特定的權限位,也可以同時標識所有的權限位
例:u=rx..............
2.使用數字標識法只能同時標識所有權限位
例:
修改文件的使用權
chmod == chage file mod bits

MODE :符號權限標識法
u,g,o,a:表示權限位
+,-,=:表示權限方式
+:表示在指定的權限位上增加指定權限;如果新增的權限是已經存在的權限,則結果相比較授權之前無變化
-:表示在指定的權限位上撤銷指定權限:如果被撤銷權限在原權限
*註意:
chmod +|- r|w FILE:在所有的權限位上增加或撤銷讀或執行權限
chmod +|- w FILE:僅在所有者權限上增加或撤銷權限
*註意:對於文件來說,執行權限是非常重要的安全上下文標識;因此默認情況下,所有的非目錄文件都不應該有執行權限;因為一旦非目錄具有了執行權限,則意味著該文件可以被執行,發起為進程,則可以按需使用系統資源

修改文件的所有權
chown - 修改文件所有者和組別
格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
*註意:在使用chown命令時,特別的,可以使用"."代替":";
-R, --recursive:遞歸地設置目標文件或目錄的所有權;
*註意:對於文件來說,普通用戶可以修改所有者為自己的文件的使用權,但無法修改文件的所有權;修改文件所有權的操作只有root可以完成;
chgrp(不常用)
chgrp - change group ownership
格式: chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
註意:chown和chgrp命令所指定的用戶和組,既可以是用戶名和組名,也可以是UID和GID;
mkdir:-m MODE:在創建目錄時為其指定權限;

install命令:install - copy files and set attributes
格式: install [OPTION]... [-T] SOURCE DEST
單源復制,為復制後的文件增加執行權限;
install [OPTION]... SOURCE... DIRECTORY
多源復制,為復制後的文件增加執行權限;
install [OPTION]... -d DIRECTORY...
創建目錄;
常用選項: -g, --group=GROUP
set group ownership, instead of process‘ current group
//設定目標文件的所屬組為指定組,而不是進程所有者的主要組;
-m, --mode=MODE
set permission mode (as in chmod), instead of rwxr-xr-x
//設定目標文件的權限,而不是rwxr-xr-x;
-o, --owner=OWNER
set ownership (super-user only)
//設定目標文件的所有者,僅root可用;
*註意:install命令,不能復制目錄,即不能以目錄為源文件;如果其源文件是一個目錄,則install命令會進入該目錄,依次復制其中的所有非目錄文件到目標位置;
特殊權限:

SUID,SGID,STICKY
SUID:SUID僅設置在可執行的文件上,默認情況下,當用戶執行此類可執行文件時,被發起的進程的所有者不是進程發起者,而是可執行文件的所有者;換句話說,進程以所有者的身份運行
SUID權限所顯示的位置,文件的屬主的權限位中的執行權限位上;如果屬主本來就具有執行權限,則顯示為“s”;如果屬主本來沒有執行權限,則顯示為“S”
管理SUID權限:
1.符號標識法:chmod u+s FILE
2.數字標識法:chmod 4755 FILE
SGID:SGID可設置在可執行文件或目錄的屬組權限位的執行權限上
如果某個目錄設置了SGID權限,並且對於某些用戶有寫權限,則所有在此目錄中創建的新文件和目錄的所屬組均為其父母錄的所屬組,而並非進程發起者的主要組
SGID權限的顯示位置:文件的屬組權限位上的執行權限上,如果屬組本來就有執行權限,則顯示為“s”,否則,就顯示為“S”
管理SGID權限:
1.符號標識法:chmod g+s DIR
2.數字標識法:chmod 2770 DIR
STICKY:STICKY僅設置在目錄的其他用戶權限位的執行權限上,
如果在某個目錄上的權限設置為多個用戶都擁有寫權限,那就意味著凡是擁有寫權限的用戶都能直接管理該目錄中的所有文件名,包括改名文件及刪除文件名等操作;因此需要在這樣的目錄上設置STICKY特殊權限;如果此類目錄設置了STICKY,則所有用戶即便擁有寫權限,也僅能刪除或改名所有者為其自身的文件;
STICKY權限的顯示位置:在目錄的其他用戶的權限位的執行權限上;如果該權限位本來有執行權限,則顯示為"t",否則,顯示為"T";
管理STICKY權限:
1.符號標識法:chmod o+t DIR
2.數字標識法:chmod 1777 DIR


權限遮罩碼:umask
作用:在創建目錄或文件時,被創建出來的目錄或文件的默認權限上刪除遮罩碼上所對應的權限
*註意:在創建目錄或文件時,默認不設置特殊權限
對於目錄文件:默認的權限為:0777-umask
對於非目錄文件:默認的權限為:0666-umask
umask[OCTL-MODE]
默認設置遮罩碼的文件:/etc/bashrc
規則:如果用戶的UID大於199並且用戶的用戶名和主要組的組名相同,則遮罩碼為002;否則遮罩碼為022;
文件的擴展屬性:
lsattr:lsattr - 顯示文件在Linux第二擴展文件系統上的特有屬性
格式:lsattr [ -RVadv ] [ files... ]
chattr - change file attributes on a Linux file system
格式:chattr [ -RVf ] [ -v version ] [ mode ] files...
mode可以是:+-=[aAcCdDeijsStTu
a:在向文件寫數據時,只能以附加的方式進行寫操作;文件的內容不能被更改和刪除;一般會為日誌文件設置此屬性;
A:atime,文件的訪問時間戳控制屬性;對於並發訪問量較大或者並發訪問頻率較高的文件,應該設置此屬性以降低IO成本;防止IO瓶頸;
c:設置是否自動壓縮之後再存儲;
C:是否開啟"寫時復制";
d:使用dump備份文件系統是,跳過屬性設置為d的文件;
D:設置文件在文件系統中的異步寫操作;
i:設置文件不能被刪除,改名及設定鏈接關系;
s:設置文件的保密性刪除;
u:與s屬性相反,如果此類文件被刪除,則在存儲器中會繼續保存其內容;
FACL:Filesystem Access Control List,文件系統訪問控制列表
想要應用此功能,必須讓文件系統能夠支持;
FACL為文件系統的額外賦權機制;
在原有的u,g,o權限位之外,讓普通用戶能夠控制權限賦予另外的某個指定的用戶或組的一種賦權機制;
與FACL相關的命令:
getfacl - get file access control lists
格式:getfacl [-aceEsRLPtpndvh] file ...
setfacl - set file access control lists
格式:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] file ...
setfacl --restore=file
常用選項:
-m acl_spec:為指定文件設置acl_spec;
-x acl_spec:將acl_spec從指定文件上移除
註意:如果設置了FACL之後,再修改目標文件的使用權限,那麽FACL中設置的權限條目可能受到影響而導致授權失敗;因此,為了保證沒有此項幹擾,應該先調整目標文件或目錄的權限,再設置FACL;
acl_spec:acl_specification,acl規格,訪問控制列表;
u:USERNAME:MODE
g:GROUPNAME:MODE
MODE一般是使用符號權限標識法標識的權限;


本文出自 “小小殊童” 博客,請務必保留此出處http://yigechenlin.blog.51cto.com/13306169/1980660

文件系統權限 -- 學習筆記