一、文件屬性
1.文件屬性:
文件屬性操作
chown : change owner ,設置文件所有者
chgrp : change group ,設置文件的屬組
文件屬主修改: chown
格式:chown [OPTION]… [OWNER][:[GROUP]] FILE…
用法:
OWNER
OWNER:GROUPNAME (同時修改屬主、屬組)
:GROUPNAME (默認屬主,修改屬組)
命令中的冒號可用.替換;
-R: 遞歸 (遞歸設置目錄中的文件、子目錄權限)
chown [OPTION]… –reference=RFILE FILE… 參照某文件權限設置權限
文件屬組修改: chgrp
格式:chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]
-R 遞歸 遞歸設置目錄中的文件、子目錄權限)
2.文件權限:
1)權限定義對象:
文件的權限主要針對三類對象進行定義:
owner: 屬主,文件擁有者, u
group: 屬組, 文件擁有組,g
other: 其他, 除以上兩類人以外的全部用戶,o
每個文件針對每類訪問者都定義了三種權限:
r: Readable ,讀取
w: Writable ,寫
x: eXcutable,執行
系統對于權限,是依次將用戶權限與文件、文件夾的所有者、組、其他權限,依次匹配
注:只針對部分文件系統,fat格式的文件系統不支持權限修改(元數據分區中無此內容)
2)權限實際意義
文件權限的實際意義:
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容,內容也可以被破壞,但是無法刪除文件
x: 可以把此文件提請內核啟動為一個進程,針對二進制程序、腳本而言
目錄權限的實際意義:
r: 無法進入目錄(cd)可以使用ls查看此目錄中文件列表,但是無法查看文件屬性—
w: 可在此目錄中創建文件,也可刪除此目錄中的文件(但需要先有X權限)
+wx : 可以進入目錄,創建、修改、刪除文件、文件內容,但是無法獲取文件列表
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此
3)權限操作
權限賦值的八進制數字法:
? — 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—–
rwxr-xr-x: 755
權限修改:
命令格式: chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… MODE[,MODE]… FILE…
-R: 遞歸修改權限 (此操作有風險)
+ X (大寫) 當遞歸+X時,如果目錄內有子目錄,則加執行權限, 如果遇到文件,若文件本身
無執行權限,則不加,若有則加x權限
eg : chomd a=rwX \目錄
MODE:
修改一類用戶的所有權限:
u= g= o= ug= a= (all,全部用戶) u=, g=
修改一類用戶某位或某些位權限
u+/- g+/- o +/- a+/-
八進制賦值
eg: chmod 666 file1
chmod [OPTION]… –reference=RFILE FILE…
參考RFILE文件的權限,將FILE的修改為同RFILE;
4)新文件、目錄默認權限 umask值
umask作用:用于設置創建文件、目錄時的默認權限
默認權限:
新建文件默認權限: 666-umask
(取值為666是處于安全考慮,使新建文件默認下均不含有執行權限)
如果所得結果某位存在執行(奇數)權限,則將其權限+1,得到最終權限
eg: umask=125 –> 666-125 =541 –>+1處理后為: 642 (5+1,1+1)
新建目錄默認權限: 777 – umask
eg : umask=100 –> 777-100=677 (rw-rwx-rwx)
umask 操作:
umask 查看umask 值 (無需加參數)
(注:如論如何設定,新文件默認均無執行權限)
umask N : 設定umask = N
注: umask 每個位的最大值不超過7
umask -S 以模式方式顯示umask
eg: u=rwx,g=rw,o=x
umask -p 輸出umask值以供調用
eg: umask 0022
3特殊權限:SUID(s), SGID(s), Sticky(t)
linux安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程:取決于發起者
對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為
發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
SUID
作用:可執行文件上SUID權限(作用于二進制程序)(u+s后)任何用戶可啟動此進程,且
視為以root用戶啟動,并且具備root權限
(對于各種命令,+s之后,任何用戶使用它都可以獲取root使用時的權限)
作用對象:SUID只對二進制可執行程序有效,SUID設置在目錄上無意義
權限設定:
chmod u+s FILE…
chmod u-s FILE…
SGID
作用:
目錄:當一個目錄實行了sgid,在目錄中任何新創建的文件,都繼承本目錄的屬組
為自己的屬組
文件:作用在文件上, 一旦一個文件被賦予SGID的權限, 無論當前的用戶有無執
行權限,用戶運行該程序,會自動繼承該程序所屬組的權限。
作用對象:目錄、文件
權限設定:
chmod g+s FILE…
chmod g-s FILE..
Sticky 位 (粘滯位)
作用:具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權
在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件
作用對象:僅作用于目錄,sticky 設置在文件上無意義
?權限設定:
chmod o+t DIR…
chmod o-t DIR…
?例如:
? ls -ld /tmp
drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp
注:當文件夾、文件 SUID\SGID\STKCKET 顯示為大寫時,為錯誤狀態
小寫才是正常狀態
chmod 777 /dir 未必可以除掉 s權限
應該改為: chmod 0777 /dir
特殊權限的數字法:
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
eg: chmod 4777 /tmp/a.txt
權限位映射:
SUID: user,占據屬主的執行權限位
s: 屬主擁有x權限
S:屬主沒有x權限
SGID: group,占據屬組的執行權限位
s: group擁有x權限
S: group沒有x權限
Sticky: other,占據other的執行權限位
t: other擁有x權限
T: other沒有x權限
注意:修改時,應注意是否需要先賦予x權限,后再追加s權限
設定文件的特定屬性:
chattr +i 不能刪除,改名,更改
chattr +a 只能增加
lsattr 顯示特定屬性
二、訪問控制列表ACL
1.ACL
ACL: Access Control List,實現靈活的權限管理
功能:除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
ACL生效順序:所有者,自定義用戶,自定義組,其他人
2. ACL安裝:
CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。
CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。
需手動增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt
3. ACL 使用詳解
命令:setfacl 設置ACL規則
getfacl file|dir 獲取文件、目錄ACL列表
setfacl 設定文件訪問控制列表
用法: setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
-m, –modify=acl 更改文件的訪問控制列表
u:username:rwx file/dir 用戶
g:groupname:rwx file/dir 組
o:0 file/dir 其他
:0 指無任何權限
-M, –modify-file=file 從文件中讀取訪問控制列表條目來修改對應文件
-x, –remove=acl 根據文件中訪問控制列表移除條目
-X, –remove-file=file 從文件讀取訪問控制列表條目并刪除
-b, –remove-all 刪除所有擴展訪問控制列表條目
-k, –remove-default 移除默認訪問控制列表
–set=acl 設定替換當前的文件訪問控制列表
–set-file=file 從文件中讀取訪問控制列表條目設定
–mask 重新計算有效權限掩碼
-n, –no-mask 不重新計算有效權限掩碼
-d, –default 應用到默認訪問控制列表的操作 (生效以后,目錄中的任何新建文件也會賦予acl默認權限)
-R, –recursive 遞歸操作子目錄
-L, –logical 依照系統邏輯,跟隨符號鏈接
-P, –physical 依照自然邏輯,不跟隨符號鏈接
–restore=file 恢復訪問控制列表,和“getfacl -R”作用相反
–test 測試模式,并不真正修改訪問控制列表屬性
-v, –version 顯示版本并退出
-h, –help 顯示本幫助信息
使用示例:
mount -o acl /directory 掛載ACL,使指定目錄的ACL臨時生效,重啟后失效
? getfacl file |directory 查詢ACL列表
? setfacl -m u:wang:rwx file|directory 設定用戶的指定權限
? setfacl -Rm g:sales:rwX directory 遞歸設定組對目錄以及其目錄內文件的權限
? setfacl -M file.acl file|directory 使用file.acl文件中的acl條目對file/dir進行acl修
改文件格式,參照getfacl得到的信息
? setfacl -m g:salesgroup:rw file| directory 對指定組設定對某文件、目錄的權限
? setfacl -m d:u:wang:rx directory 對dir中的新建文件也賦予wang:rx權限
刪除用戶wang對file/dir的ACL條目
文件內容格式:u:username
g:groupname
o:
? setfacl -X file.acl directory 刪除dir上 file.acl 文件中對應的條目
4. ACL中的mask值
ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限) ,除了所有者、
others ,其他人(屬組、ACL添加的其他用戶)的權限均不會高于此權限,受此權限的影響而非傳統的組權限
-
getfacl 可看到特殊權限: flags
-
默認ACL權限給了x,文件也不會繼承x權限。
-
base ACL 不能刪除
-
setfacl -k dir 刪除默認ACL權限
-
setfacl -b file1清除所有ACL權限
-
getfacl file1 | setfacl –set-file=- file2 復制file1的acl權限給file2
5.備份和恢復ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要
加上-p 參數。但是tar等常見的備份工具是不會保留目錄
和文件的ACL信息
#getfacl -R /tmp/dir1 > acl.txt
#setfacl -R -b /tmp/dir1
#setfacl -R –set-file=acl.txt /tmp/dir1
#getfacl -R /tmp/dir1
原創文章,作者:ldt195175108,如若轉載,請注明出處:http://www.www58058.com/29078
對命令的的常見用法總結的很好,可以嘗試著將自己的操作放進去,這樣在以后的復習中會更直觀哦。