linux文件權限:
在linux系統中,每個文件或目錄都包含有相應的權限,這些權限決定了哪些用戶或組能夠對此文件做哪些操作,如讀取、刪除、寫入等操作
文件權限分為三類:r,w,x
應用于文件:
r:只讀,只能查看其文件的內容,例如使用cat命令查看
w:寫入,能修改其文件的內容,但不能刪除,也無法查看內容
x:執行,可執行的二進制程序或者腳本文件
應用于目錄:
r:能夠查看其目錄下的文件,但無法查看詳細信息
w:可以在目錄下創建或者刪除文件,需要配合x權限
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
安全上下文:
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
原創文章,作者:zhai796898,如若轉載,請注明出處:http://www.www58058.com/29109
文章思路清晰,從權限模型到特殊權限都有著自己的操作和理解。