一、文件權限
linux系統中文件眾多,針對不同的文件面向的對象不同,因此對其設置的權限各不相同,那么我們來對文件設置權限呢?
如上圖所示,文件的權限主要分三個部分:r、w、x
文件面向的對象有三類:屬主,數組和other
rwx權限分別對于應文件和目錄的意義如下:
對于文件:
r:可以ls,可以cat
w:可以修改文件中的內容,可以ll,如果其父目錄具有wx權限可以刪除文件
x:可以執行二進制程序
對于目錄:
r:可以ls
w:可以在目錄中創建文件,但需要配合x使用
x:可以cd到目錄,可以訪問目錄中的文件
相關命令:chmod chown chgrp
chmod:修改權限
格式:
chmod [option] file | dir
chmod u+rwx file
chmod a+rwx file a—-ugo
chmod u=rwx file
chmod 777 file
注意:當我們執行給文件添加X權限時,如果該文件之前權限有一位x,則可以添加x權限,如果一位x權限都沒有,則不能添加x權限。
目錄不受影響
rwxr–r– –>chmodrwxrwxrwx
——— –>rw-rw-rw-
選項:
-R 遞歸
–reference=RFILE FILE… 參考RFILE文件的權限,修改FILE的權限與RFILE一致
chown:修改屬主和屬組
格式:
chown tom:harry f1
chown tom f1 修改屬主為tom
chown tom: f1 修改屬主和屬組為tom
chown :harry f1 修改屬組為tom
chgrp:將文件的屬組
umask:我們發現在我們創建文件或目錄時,他們都會有一個默認的權限,這個權限就是通過umask來設置的,umask這個值管理員默認是022,普通用戶是002,當我們在配置文件(/etc/profile、/etc/bashrc、也可以是用戶自己的.bashrc)中配置umask的值時,就可以定義用戶創建文件或目錄時的默認權限,也可以說是限制了ugo的權限。
管理員文件的權限和umask的關系為:666-022=644,如果計算結果中有基數,則加1,例如666-123=543 ->644,這里加1主要是為了避免給用戶提供文件的執行權限,將執行權限屏蔽。
管理員目錄的權限和umask的關系為:777-022=755
umask -S 查看文件夾的默認權限
umask -p 輸出可以被調用
umask # 可以設置默認值的大小臨時生效
二、文件系統的特殊權限
當我們用tom的身份執行cat /etc/passwd 時,我們的匹配權限的流程是,先匹配/etc/passwd 這個文件的屬主,該文件的數主是root與tom不是同一個,不匹配,接著匹配文件的數組,發現也不匹配,接下來就到other的權限了,我們發現other的權限為r,所以我們就以other的身份來訪問/etc/passwd 這個文件了,這里需要注意的是,當我們從前往后匹配的時候,如果匹配到權限就不往后面匹配了,就算后面的數組或者other的權限比數主大,也不匹配。
tom@cenots6.8 ~ # ll /etc/passwd -rw-r--r--. 1 root root 1849 8月 6 17:44 /etc/passwd tom@cenots6.8 ~ # cat /etc/passwd
特殊權限
suid
面向對象:二進制程序
格式:chmod u+s file 、 chmod 4### file
作用:用戶發起進程訪問文件時,不在是以用戶自己的身份來訪問,而是以進程屬主的身份來訪問。
應用場景:passwd 所有用戶都需要執行的二進制程序,直接給管理員的程序,不用單獨給某些用戶添加加權限。
-rwsr-xr-x. 1 root root 30768 11月 24 2015 /usr/bin/passwd —–此時我們就是以passwd的數主roor身份運行,而不是當前用戶的身份。
sgid
面向對象:文件、目錄
格式: chmod g+s file | dir 、 chmod 2### file | dir
作用:
目錄:用戶在該目錄下創建文件時,文件的屬組不在是以自己的身份創建,而是以該目錄數組的身份創建。
文件:用戶發起進程訪問文件時,不在是以用戶自己的身份來訪問,而是以進程屬組的身份來訪問。
應用場景:
目錄:比如組內同事,以某一特定的權限共享將一些文件或目錄給大家,這樣避免單獨給多個文件分別設置權限。
sticky
面向對象:目錄
格式:chmod o+t dir 、chmod 1### dir
作用:用戶在該目錄下可以自由的創建改文件,但是不能刪除非自己創建的文件
應用場景:/tmp 所有用戶都可以編輯,但是不能刪除別人的文件
注意:在給文件添加uid gid sticky位后,如果對應的位為S或T,則表示該文件之前具有x權限,如果對應的對時s或t,則表示文件沒有x權限。
三、訪問控制列表
通常我們訪問文件時,是以屬主、屬組或其他的身份訪問的,當我們想單獨給某一個用戶設定權限時,可通過ACL訪問控制列表來進行設置。
相關命令:setfacl 、getfacl 、mask
setfacl:
選項:
-Rm(遞歸指定權限):u(指定用戶):user1(用戶名):rwx(權限) dir
-x(取消權限):g(指定組) file | dir
-M file.txt file|dir –> 文件格式:u:wang:0 指定文件中用戶或組acl權限
u:wangcai:rw
g:it:rw
-X file.txt file|dir 取消文件中用戶或組acl權限
-x:d:u:user:rwx 對新建的文件具有的acl權限
-b file | dir:清除所有acl權限
-k file | dir:清除默認acl權限
–set選項會吧原有的acl項都刪除,用新的替代,需要注意的時一定要包含ugo的設置,不能像-m一樣添加acl就可以
setfacl –set u::rw,u:wang:rw,g::r,p::- file1
getfacl file | dir:查看文件或目錄的acl權限
getfacl -R dir > acl.txt 將dir目錄及其子目錄的acl權限記錄到acl.txt文件中
getfacl file1| setfacl –set-file=- file2 復制file1的acl權限給file2
mask:是在指定給某些用戶或者組設置ACL權限時,針對除了屬主和other之外的人,其中
包括屬組和添加ACL的用戶和組,限制了他們的權限,不能超過mask的權限,mask在使用時需要注意的是,當我們設置了ACL權限時,如果設置組的權
限chmod g=rw file|dir,等同于設置了mask的權限,此時所有設置了ACL權限的人和文件或目錄的數組都會改變。
ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限) ,而非傳統的組權限,改變group權限,mask也會變。
默認ACL權限給了x,文件也不會繼承x權限,這就是為什么針對file文件給user1用戶指定rwx權限時,我們getfacl file查看mask權限為rw-的原因。
mask的設置方法:setfacl -m m::rw file
setfacl -m mask::rwx file
當我們通過tar命令打包文件時,是不能像cp -p|-a 一樣保存元數據屬性,我們可以采取如下備份和恢復訪問控制列表的方法:
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
getfacl -R /tmp/dir1
設定文件特定屬性
chattr +A 鎖定不能修改時間
-A 解鎖
+i 不能更改刪除改名 只能讀
+a 只能修改內容
lsattr 顯示特定屬性(chattr都設置了那些屬性)
原創文章,作者:Naruto,如若轉載,請注明出處:http://www.www58058.com/30247