首先,仍是要從用戶帳戶的做用出發;安全
用戶帳戶的做用:證明操做者的身份bash
不容許任何人都以管理的身份來對計算機資源進行使用,這樣會使計算機的安全性特別低。併發
其次,用戶帳戶經過以後,咱們要對於不一樣的用戶帳戶進行不一樣的受權(權限)
異步
例如:超級用戶(root),擁有對於計算機的資源擁有全部權ide
普通帳戶(user1,user2,...),擁有指定賦予的權限。spa
文件系統的權限管理:rest
普通權限日誌
特殊權限遞歸
文件的擴展屬性進程
FACL(文件系統訪問控制列表)
咱們把這4個部分組成的一套體系稱爲:DAC(自主訪問控制)
說到這套體系就必須說到另外一個概念
安全上下文:
任何在計算機中執行的任務都是由進程實現的;
進程有必要訪問和使用文件或某些數據資源;
簡單理解起來就是:張三的車只有張三能開,
李四不可以開,除非張三容許李四開張三的車
張三,李四分別對車之間就有權限的關係;
就至關於: 張三對應進程1
李四對應進程2
車至關於計算機資源1
進程1可以使用資源1
進程2不能使用資源2
補充:人操做計算機就是:人使用一個用戶帳戶登錄到計算機,計算機操做就是用戶帳戶經過
「識別」的人體手動操做打開對應的進程,而這些進程就會去對相應的文件進行執行和
處理或使用。
進程和其要操做的文件之間的關係,就定義爲安全上下文;
在DAC模型中,定義安全上下文的方式很簡單:
全部權
任何啓動進程的用戶就是該進程的全部者;進程的全部者能夠變動;
任何建立文件的用戶就是該文件的全部者;文件的全部者能夠變動;
使用權
在文件上面定義的對該文件的特定使用過濾規則;
三個權限:全部者權限,所屬組權限,其餘人權限;
安全上下文的匹配規則:
當某個進程試圖操做某個文件時,DAC將作以下規則匹配:
1.判斷進程的全部者和文件的全部者是否爲同一用戶,若是是,則直接應用 文件的全部者權限;
2.若是不是,進一步判斷進程的全部者是否爲文件的所屬組的成員,若是 是,則直接應用文件的所屬組權限;
3.若是不是,直接應用其餘人權限;
在Linux中查看某個文件的權限可使用:ls -l[d] /PATH/TO/SOMEFILE
接下來就是要介紹與權限相關的和其命令操做:
rwxr-xr-x:三個權限位(屬主/全部者,屬組/所屬組,其餘用戶)
屬主權限:rwx,此權限位標識爲user,簡寫爲u;
屬組權限:r-x,此權限位標識爲group,簡寫爲g;
其餘用戶權限:r-x,此權限位標識爲other,簡寫爲o;
全部的權限位能夠統一用all標識,簡寫爲a;
注意:"-"表示在該權限位上不具有指定權限;
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; ug=rwx; u=rwx,g=rx,o=r; a=rwx
2.使用數字標識法只能同時標識全部權限位;
示例:
755; 644; 7 == 007 ; 75 == 075
修改文件的使用權:
chmod - change file mode bits
格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
MODE:符號權限標識法:
u, g, o, a:表示權限位;
+, -, =:表示受權方式;
+:表示在指定的權限位上增長指定權限;若是新增的權限是已經存在的權限,則結果相比較受權以前無變化;
-:表示在指定的權限位上撤銷指定權限;若是被撤銷權限在原權限位並不存在,則結果相比較受權以前無變化;
=:表示在指定的權限位上精確受權;此種受權方式不考慮該權限位原有的權限設定的;
r, w, x:表示具體的權限;
示例:
# chmod u-x,g+rw,o+r txt.user3
# chmod u-x,g-x,o-wx txt.user3
# chmod u+rw,g+rw,o+r txt.user3
# chmod u=r,g=r,o=rwx txt.user3
注意:
chmod +|- r|x FILE:在全部的權限位上增長或撤銷讀或執行權限;
chmod +|- w FILE:僅在全部者權限位上增長或撤銷寫權限;
注意:對於文件來講,執行權限是很是重要的安全上下文標識;所以默認狀況下,全部的非目錄文件都不該該有執行權限;由於一旦非目錄具備了執行權限,則意味着該文件能夠被執行,發起爲進程,則能夠按需使用系統資源;
OCTAL-MODE:八進制數字權限標識法
示例:
# chmod 640 root.txt
--reference=RFILE:
示例:
# chmod --reference=/etc/shadow root.txt
//參考/etc/shadow文件的權限位root.txt設置相同權限;
經常使用選項:
-R, --recursive:遞歸地設置目標文件或目錄的權限;
修改文件的全部權:
chown
chown - change file owner and group //修改文件的屬主和屬組
格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
示例:
~]# chown user3 test1 //只修改這個文件的全部者,所屬組不變
~]# chown user3: test2 //把這個文件全部者改爲user3,並把user3的主要組改爲此文件的所屬組
~]# chown :user3 test3 //把此文件的所屬組改爲user3,而全部者/屬主不變
~]# chown user3:myuser test4 //直接把此文件的屬主和屬組改爲user3和myuser
注意:在使用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
1.SUID:SUID僅設置在可執行的文件上。
默認狀況下,當用戶執行此類可執行文件時,被髮起的進程的全部者不是進程發起者,而是可執行文件的全部者;換句話說,進程以文件全部者的身份運行;
SUID權限所顯示的位置:文件的屬主的權限位中的執行權限位上;若是屬主原本就具備執行權限,則顯示爲"s";若是屬主原本沒有執行權限,則顯示爲"S";
管理SUID權限:
1.符號標識法:chmod u+s FILE
2.數字標識法:chmod 4755 FILE
2.SGID:SGID能夠設置在可執行文件或目錄的屬組權限位的執行權限上。
若是某個目錄設置了SGID權限,而且對於某些用戶有寫權限,則全部在此目錄中建立的新文件和目錄的所屬組均爲其父目錄的所屬組,而並不是進程發起者的主要組;
SGID權限的顯示位置:文件的屬組權限位上的執行權限上;若是屬組原本就有執行權限,則顯示爲"s",不然,就顯示爲"S";
管理SGID權限:
1.符號標識法:chmod g+s DIR
2.數字標識法:chmod 2770 DIR
3.STICKY:STICKY僅設置在目錄的其餘用戶權限位的執行權限上。
若是在某個目錄上的權限設置爲多個用戶都擁有寫權限,那就意味着凡是擁有寫權限的用戶都能直接管理該目錄中的全部文件名,包括更名文件及刪除文件名等操做;所以須要在這樣的目錄上設置STICKY特殊權限;若是此類目錄設置了STICKY,則全部用戶即使擁有寫權限,也僅能刪除或更名全部者爲其自身的文件;
STICKY權限的顯示位置:在目錄的其餘用戶的權限位的執行權限上;若是該權限位原本有執行權限,則顯示爲"t",不然,顯示爲"T";
管理STICKY權限:
1.符號標識法:chmod o+t DIR
2.數字標識法:chmod 1777 DIR
權限遮罩碼:umask
做用:在建立目錄或文件時,被建立出來的目錄或文件的默認權限上刪除遮罩碼上所對應的權限;
注意:在建立目錄或文件時,默認不設置特殊權限;
對於目錄文件:默認的權限爲:0777-umask 0777-0033 = 0744
對於非目錄文件:默認的權限爲:0666-umask 0666-0033 = 0644
umask [OCTAL-MODE]
默認設置遮罩碼的文件:/etc/bashrc
規則:若是用戶的UID大於199而且用戶的用戶名和主要組的組名相同,則遮罩碼爲002;不然遮罩碼爲022;
文件的擴展屬性:
lsattr:
lsattr - list file attributes on a Linux second extended file system
格式:
lsattr [ -RVadv ] [ files... ]
chattr:
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權限位以外,讓普通用戶可以控制權限賦予另外的某個指定的用戶或組的一種賦權機制;
這種機制在CentOS或者RHEL7以後的發行版本中,才逐漸成熟;
與FACL相關的命令:
getfacl:
getfacl - get file access control lists
格式:
getfacl [-aceEsRLPtpndvh] file ...
setfacl
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從指定文件上移除;
acl_spec:acl_specification,acl規格,訪問控制列表;
u:USERNAME:MODE
g:GROUPNAME:MODE
MODE通常是使用符號權限標識法標識的權限;
示例:
爲文件賦予指定用戶的額外訪問權限:
[user3@lab1 ~]$ setfacl -m u:link:rwx /tmp/temp/
撤銷指定文件的額外訪問權限:
[user3@lab1 ~]$ setfacl -x u:link /tmp/temp/
注意:若是設置了FACL以後,再修改目標文件的使用權限,那麼FACL中設置的權限條目可能受到影響而致使受權失敗;所以,爲了保證沒有此項干擾,應該先調整目標文件或目錄的權限,再設置FACL;