1、文件的權限分類
文件的權限對象分三類:屬主(u)、屬組(g)、其他(o),每個對象都有rwx,讀寫執行三類權限。
對于文件
r:可查看文件內容
w:可修改其類容
x:可把此文件提請內核啟動為一個進程
對于目錄
r:可使用ls查看此目錄中文件列表
w:可在此目錄中創建和刪除文件
x:可使用ls查看目錄中文件列表,可以cd進入此目錄
X:只給目錄x權限,不給文件x權限
【在訪問文件之前,必須要先能夠進入文件的父目錄】
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
root 沒有了 x 執行權限不能執行,但是可以給自己加權限
root用戶沒有讀和寫權限也可以直接修改查看。
2、chmod 用法
a、chmod [option]… 八進制 file
eg:chmod -R 755 /dir
b、chmod [option]… mode … file
eg:chmod u=rwx,g=rx,u= file/dir
或者 chmod a=rx file/dir 或者 chmod u+w file/dir
c、chmod [option] … –reference = rfile file
參考rfile權限 復制到 file
chmod -R a=rwX dir
目錄下的文件如果有x權限 則都有x權限
如果沒有x權限 則 所有的文件都沒有x權限
但是所有的目錄都有x權限
3、新建文件和目錄的默認權限
新建FILE權限:666-umask如果所得結果某位存在執行(奇數)權限,則將其權限+1
新建DIR權限: 777-umask,非特權用戶umask是002,root的umask是022
umask: 查看 umask#: 設定 #umask -S –> u=rwx,g=rx,o=rx #umask -p –> umask 0022
4、Linux文件系統上的特殊權限,SUID, SGID, Sticky
chmod 4755 file【文件】 /usr/bin/passwd chmod u+s /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
當用戶使用passwd【具有suid權限的二進制程序文件】命令,用戶權限臨時切換成【passwd文件所有者】權限
啟動為進程之后,其進程的屬主為原程序文件的屬主
/bin 文件夾下面有眾多 紅色背景的程序均是這樣。
chmod 2755 file【文件】 /usr/bin/passwd chmod g+s /usr/bin/passwd
-rwxr-sr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
當用戶使用passwd【具有suid權限的二進制程序文件】命令,用戶權限臨時切換成【passwd文件所屬組】權限 –黃色背景
啟動為進程之后,其進程的屬主為原程序文件的屬組
chmod 1777 /dir【目錄】 eg: /tmp
[root@localhost conf]#ll -d /tmp
drwxrwxrwt. 18 root root 4096 Oct 16 02:52 /tmp
可以在目錄中刪除【自己的】文件,而不能刪除別人的文件
chmod 2755 dir【目錄】 /dir chmod g+s /dir【目錄】
-rwxr-sr-x. 1 root root 30768 Feb 22 2012 /dir
當該目錄【所屬組用戶】在該目錄下創建文件的時候,創建的文件所屬組均為目錄的所屬組
小坑一個: 用0777,并不能把sst等權限去掉
沒有執行權限則該位置顯示為【S、T】
5、設定文件特定屬性(attr–attribute)
chattr +i 不能刪除,改名,更改 +a 只能追加(>>)
lsattr 顯示文件特定屬性。
6、ACL
ACL:Access Control List,實現靈活的權限管理,除了u,g,o可以對更多的用戶設置權限
ACL生效順序:所有者(屬主,屬組),自定義用戶,自定義組,其他人
setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
-b,–remove-all:刪除所有擴展的acl規則,基本的acl規則(所有者,群組,其他)將被保留。
-k,–remove-default:刪除缺省的acl規則。如果沒有缺省規則,將不提示。
-n,–no-mask:不要重新計算有效權限。setfacl默認會重新計算ACL mask,除非mask被明確的制定。
–mask:重新計算有效權限,即使ACL mask被明確指定。
-d,–default:設定默認的acl規則。
–restore=file:從文件恢復備份的acl規則(這些文件可由getfacl-R產生)。通過這種機制可以恢復整個目錄樹的acl規則。
此參數不能和除–test以外的任何參數一同執行。
–test:測試模式,不會改變任何文件的acl規則,操作后的acl規格將被列出。
-R,–recursive:遞歸的對所有文件及目錄進行操作。
-L,–logical:跟蹤符號鏈接,默認情況下只跟蹤符號鏈接文件,跳過符號鏈接目錄。
-P,–physical:跳過所有符號鏈接,包括符號鏈接文件。
–version:輸出setfacl的版本號并退出。 –help:輸出幫助信息。
–:標識命令行參數結束,其后的所有參數都將被認為是文件名
-:如果文件名是-,則setfacl將從標準輸入讀取文件名。
Usage: setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
-m, –modify=acl modify the current ACL(s) of file(s)
-M, –modify-file=file read ACL entries to modify from file
-x, –remove=acl remove entries from the ACL(s) of file(s)
-X, –remove-file=file read ACL entries to remove from file
例子:
mount -o acl /directory
getfacl file|directory –獲取文件或者目錄的acl
setfacl -m u:wang:rwx file|directory –增加文件或者目錄的用戶acl
setfacl -Rm g:sales:rwX directory –目錄及其子目錄以及文件增加用戶acl,新增加文件或者目錄【不會自帶acl】
setfacl -M file.acl file|directory –參照file.acl 給目錄或者文件增加acl
setfacl -m g:salesgroup:rw file| directory –增加文件或者目錄的用戶組acl
setfacl -m d:u:wang:rx directory –增加該目錄的acl,新增文件或者目錄的時候【自帶acl】,目錄下原有的文件或者目錄acl不變
setfacl -x u:wang file|directory –刪除文件或者目錄中,對應用戶的acl ,mask還在
setfacl -X file.acl directory –參照file.acl 刪除目錄中的acl ,mask還在
setfacl -Rb directory –清空目錄下的所有acl,包括mask
setfacl-k dir –刪除默認ACL權限
【注意】:
默認拷貝不會拷貝文件或者目錄的acl,用cp來復制文件的時候我們現在可以加上-p選項。對于不能拷貝的ACL屬性將給出警告。
mv命令將會默認地移動文件的ACL屬性,同樣如果操作不允許的情況下會給出警告。
如果你的文件系統不支持ACL的話,你也許需要重新mount你的file system: mount -o remount, acl [mount point]
如果用chmod命令改變Linux file permission的時候相應的ACL值也會改變,反之改變ACL的值,相應的file permission也會改變。
—-joker的部落閣
原創文章,作者:joker,如若轉載,請注明出處:http://www.www58058.com/61143