linux文件權限:linux
在linux系統中,每一個文件或目錄都包含有相應的權限,這些權限決定了哪些用戶或組可以對此文件作哪些操做,如讀取、刪除、寫入等操做shell
文件權限分爲三類:r,w,x安全
應用於文件:ide
r:只讀,只能查看其文件的內容,例如使用cat命令查看spa
w:寫入,能修改其文件的內容,但不能刪除,也沒法查看內容3d
x:執行,可執行的二進制程序或者腳本文件blog
應用於目錄:遞歸
r:可以查看其目錄下的文件,但沒法查看詳細信息進程
w:能夠在目錄下建立或者刪除文件,須要配合x權限get
x:能夠進入目錄,可訪問目錄下的內容
X:只對目錄的x權限生效,文件不生效
當咱們使用ls -l命令查看文件或目錄時會列出一系列的屬性信息:
最左側一列由十位組成,其中第一位表示文件的的類型,d表示目錄文件,-表示普通文件,等等
其他九位表示文件的權限,其中每三位一組,分爲三組,自左而右匹配,第一組表示文件屬主的權限,第二組表示文件屬組的權限,第三組則爲其餘用戶的權限
修改文件的屬主或屬組:
chown:修改文件的屬主或屬組
-R:遞歸,對目錄下全部子文件及目錄所有生效
–reference:參考文件的屬主屬組,將文件的屬主或屬組與某一文件設定一致
chown owner FILE:修改文件的屬主
chown :group FILE:修改文件的屬組
chown owner:group:修改文件的屬主與屬組
chgrp:修改文件屬組,因爲chown包含了此命令的功能,在此不作介紹
權限的八進制表示法:
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
640等於rw-r—–
755等於rwxr-xr-x
chmod:權限管理
-R:遞歸,修改目錄下全部文件及目錄的權限
–reference:參考某文件的權限,將文件的權限設定與指定文件權限一致
三類用戶:
u:文件屬主
g:文件屬組
o:其餘用戶
a:表示全部
chmod [OPTION]… MODE[,MODE]… FILE…
權限表示法:
賦權表示法:直接操做一類用戶的全部權限位(可組合)
u=
g=
o=
a=
受權表示法:操做一類用戶的一個或多個權限位(可組合)
u+,u-
g+,g-
o+,o-
a+,a-
八進制表示法:直接使用八進制對全部權限位進行賦權
如777表示權限爲rwxrwxrwx
755表示rwxr-xr-x
644表示rw-r—–
umask:文件權限的反向掩碼,建立文件或目錄時設定的默認權限
umask:查看當前umask值
umask MASK:修改umask值,只對當前shell進程有效,若是想永久有效 須要在配置文件當中定義umask值
默認建立文件:666-umask值
默認建立目錄:777-umask值
特殊權限:SUID,SGID,Sticky
Linux系統上的特殊權限
特殊權限:SUID, SGID, STICKY
安全上下文:
1.當用戶要發起某個程序爲進程時,首先此用戶要對此程序文件具備執行權限才行
2.當程序被髮起爲進程時,進程的屬主是發起者的屬主,屬組則爲發起者的屬組
3.當進程去訪問某文件時,權限取決於發起此進程的用戶的權限
(1)當進程的屬主與文件的屬主所匹配,則應用屬主權限
(2)當進程的屬主屬於文件的屬組,則應用屬組權限
(3)應用other權限
SUID:
若是一個可執行程序擁有SUID,當此程序被啓動爲進程時,進程的屬主再也不是發起者,而是程序自身文件的屬主,SUID只對二進制程序有效
權限設定:chmod u+s FILE
chmod u-s FILE
注意:若是屬主位擁有x權限,則SUID表示爲小s,不然爲大S
SGID:
當一個可執行程序擁有SGID,此程序運行爲進程時,屬主不是發起者,而是原文件的屬組
當一個目錄擁有SGID,則目錄下新建文件的屬組同此目錄的屬組一致
權限設定:
chmod g+s FILE|DIR
chmod g-s FILE|DIR
注意:若是此程序文件的屬組位擁有x權限,則SUID表示爲小s,不然爲大S
Sticky:
若是一個目錄具備寫權限,意味着全部用戶均可以任意添加刪除目錄下的文件,若是添加Sticky權限,則只有文件的全部者或root才能刪除該文件
權限設定:
chmod o+t DIR
chmod o-t DIR
注意:若是此目錄的other位擁有x權限,則SUID表示爲小t,不然爲大T
特殊權限八進制表示法:
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
chattr:設定文件特定屬性:
-i:鎖定文件,只能讀取文件,不能修改、刪除、移動
-A:鎖定文件訪問時間戳
-a:只能增長
lsattr:查看文件特定屬性
FACL:File Access Control List即文件訪問控制列表,在原有的u,g,o以外,另外一層讓普通用戶能控制賦權給另外的用戶或組的賦權機制,主要用於實現權限的靈活管理。
權限匹配安全模型:
當程序被運行爲進程時,以運行此進程的用戶的身份去完成全部操做
1.當用戶以某進程訪問文件時,首先判斷此進程的屬主與文件屬主是否一致,若是一致,則應用屬主權限,不然,進入第二步
2.檢查此進程的屬主是否有特定的FACL權限,若是有,則應用,不然,進入第三步
3.檢查此進程的屬主是否屬於文件的屬組,若是屬於,則應用屬組權限,不然,進入第四步
4.檢查此進程的屬主所屬的組是否有特定的FACL權限,若是有,則應用,不然,進入最後一步
5.應用other權限
setfacl:設定facl權限
setfacl -m u:USERNAME:MODE FILE | DIR:對文件或目錄設定某個用戶特定的FACL
setfacl -m g:GROUPNAME:MODE FILE | DIR:對文件或目錄設定某組特定的FACL
setfacl -M ACL.FILE FILE | DIR:讀取指定文件中的FACL列表
setfacl -R u:USERNAME:MODE DIR:對目錄下全部文件都設置FACL
setfacl -m d:u:USERNAME:MODE DIR:對目錄下後續建立的文件設定默認FACL
setfacl -x u:USERNAME:MODE FILE | DIR:撤銷某個FACL權限
setfacl -X XACL.FILE FILE | DIR:經過文件中定義的FACL列表來撤銷FACL權限
setfacl -k DIR:撤銷目錄上的默認FACL權限
setfacl -b FILE | DIR:清空全部FACL列表
getfacl:可查看FACL權限列表
getfacl FILE | DIR:查看文件或目錄的FACL權限列表
getfacl FILE1 | setfacl –set-file=- FILE2:複製FILE1文件的FACL給FILE2文件
mask:控制FACL權限的邊界,隻影響除了屬主和other之外的全部權限
用戶或組的權限必須在mask設定範圍以內纔會生效
設定mask權限:
setfacl -m mask::rx FILE
備份FACL列表:
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
getfacl -R /tmp/dir1