權限,特殊權限,FACL
用ls -l filename 可以查看文件或者目錄的詳細信息,具體分析一下
在第一個空格前,有10個字段,第一個“-”表示文件類型,后邊“rw-r–r–”表示權限
文件類型 ????“-”? 普通文件
“d”? 目錄
“b”? 塊設備文件
“c”? 字符設備文件
“l”?? 字符鏈接文件(軟鏈接)
“p”?? 管道文件
“s”?? 套接字文件
文件(目錄)權限 ??共9位,每3位一組,每一組都有r(讀)w(寫)x(執行)三個權
限,第一個3位表示屬主的權限,第二個3位表示屬組的權限,第三
個3位表示other權限
以上圖為例,第一個“-”表示是個普通文件,后邊3位“rw-”表示屬主權限,有讀寫權限,執行位位“-”說明沒有執行權限,“r–”表示屬組有只讀權限,other和屬組一樣都是只讀文件的權限主要針三類對象進行定義
owner:屬主?? u
group:屬組??? g
other?? 其他?? o
all??? 所有?? a??? 修改所有
文件權限
r:可讀,可以使用cat等命令來查看文件內容
w:可寫,可以編輯或者刪除此文件
x:可執行,可以在命令提示符下當做命令提交給內核執行
目錄權限
r:可讀,可以對目錄執行ls列出內部的所有內容
w:可寫,可以在此目錄創建或刪除文件(需要x權限)
x:可執行,可以用cd命令切換進此目錄,也可以使用ls -l查看詳細的信息
X:該權限只能對目錄使用,給目錄下的子目錄加x權限,但是如果文件本身有x權限,那么也不會去管,如果文件沒有x權限也不會加x
數字法表示權限
讀 r=4? ??寫 w=2 ???執行 x=1
例: rwxrw–w-??? 用數字法就是,(4+2+1)(4+2+0)(0+2+0)=762
權限管理命令
chown??? 修改屬主
-R:遞歸 (作用于目錄,修改該目錄下的所有子目錄和文件)
例:chown? username:groupname?? filename(directory) (該命令既可以修改屬主也可以修改屬組,命令中的:可以用.代替)
chgrp???? 修改屬組
-R:遞歸 (作用于目錄,修改該目錄下的所有子目錄和文件)
chmod??? 修改權限(該命令也可以用數字法來設置權限,例:chmod? 632? filename)
用法:chmod [OPTION]… OCTAL-MODE FILE…
-R: 遞歸修改權限
chmod [OPTION]… MODE[,MODE]… FILE… MODE: 修改一類用戶的所有權????????? 限: u= g= o= ug= a= u=,g= 修改一類用戶某位或某些位權限 u+ u- g+ g- o+ o- a+ a- + –
例:chmod u=rwx,g=r,o= file1? 該命令就把文件file1的權限修改為:屬主有讀寫執行權限,屬組有只讀權限,其他沒有權限
chmod [OPTION]… –reference=RFILE FILE…
參考RFILE文件的權限,將FILE的修改為同RFILE
例 : chmod? –reference=file1 file2? 參照file1的權限的設置file2的權限
umask值:遮罩碼
root默認umask值為022
普通用戶的umask默認值為002
umask:可以查看用戶的umask值
umask #:可以設定為#的umask值
例:umask? 145,那么通過umask命令可以看到顯示為145,
那么新建文件的權限就為:666-umask??????? 666-145
新建目錄的權健就為:777-umask??????? 777-145
如果umask為默認,那么root創建文件或目錄的權限就是777或666減去默認值022
其他用戶創建的權健就是777或666減去默認值002
有相減的方法來設置目錄的權限時,算出來的結果是多少,那么權限就是多少。但是對文件來說,文件默認是么有x權限,如果相減算出來的結果有x權限的話,則將其權限+1
umask -S:用模式法來顯示
例: [root@centos7 app]#umask -S
顯示結果:??? ??u=rwx,g=rx,o=rx
umask -P :輸出的結果可以被直接調用
特殊權限:SUID? SGID? Sticky
SUID: 運行某程序時,相應進程的屬主是程序文件自身的屬性,而不啟動者(只要該程序有SUID權限,那么不管訪問該程序的用戶是屬組還是other,都在訪問的時候臨時擁有屬主的權限,用屬主的身份進行訪問)
SGID:運行某程序時,相應進程的屬組是程序文件自身的屬性,而不啟動者所屬的基本組(只要該程序有SGID權限,那么不管訪問該程序的用戶是屬組還是other,都在訪問的時候臨時擁有屬組的權限,用屬組的權限進行訪問)
Sticky:創建一個公共目錄,在該公共目錄下,每個人都可以創建刪除自己的文件,但是不能刪除別人的文件
SUID()
1、 suid只能作用在二進制程序上,不能作用在script上
2 、執行suid權限的程序時,此用戶將繼承此程序的所有者權限
SGID
1 、作用在二進制程序上,執行sgid權限的程序時,此用戶將繼承此程序的所屬組權限
2 、作用在目錄上:在此目錄新的文件的所屬組,將自動繼承目錄的所屬組
Sticky:
1 、只能作用在目錄
2 、具有sticky權限的目錄,普通用戶只能自已刪除自已的文件,不能刪除別人的文件
特殊權限的設置命令
chmod? u+s |u-s filename
chmod? g+s |g-s filename(directory)
chmod? o+t |o-t directory
如果屬主,屬組和other沒有相應的x權限,那么特殊權限設置以后顯示為大寫(S,S,T)
特殊權限單獨用數字法來表示SUID(4)、SGID(2) 、Sticky(1)
例:chmod? 4743 | 2654 |1400? filename
chattr? +i? 不能刪除,修改,改名,所有用戶都不可以,包括root
+a? 只能進行追加內容,不能刪除,不能清空
+A? 不更新atime
-i?? 去除i特殊屬性,恢復原來的權限
-a
-A
lsattr :i和a、A特殊屬性設置成功后,可以用lsattr進行查看
例:[root@centos7 app]#chattr +i file1
[root@centos7 app]#lsattr file1
i屬性顯示結果 ??—-i———– file1
a屬性顯示結果?? —–a———- file1
ACL? 訪問控制列表
(ls -l查看文件目錄時,9位權限之后的點變為“+”,表示該文件目錄設置了ACL)
ACL:Access Control List,實現靈活的權限管理
除了文件的所有者,所屬組和其它人,可以對更多的用戶設 置權限
CentOS7 默認創建的xfs和ext4文件系統具有ACL功能
CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加
CentOS6系統安裝完成后,新建分區默認不支持ACL
setfacl ??-m:設置,附加acl權限
格式:setfacl -m u:username:perm? filename? 例:setfacl -m u:yan:rw ?file
setfacl -m g:groupname:perm? filename? 例:setfacl -m g:opts:rwx ?file
-x:取消acl權限,用法同-m
-k:清空默認的acl權限
-R:遞歸(對目錄下新建文件不生效,如果要對新建文件生效需要加d(d表示默認)(例:d:username:rw))
-b:清空所有的ACL
getfacl:獲?。ú榭矗〢CL權限
getfacl file1 | setfacl –set-file=- file2 復制file1 的acl權限給file2
ACL生效順序:所有者,所屬組,自定義用戶,自定義組,其他人
getfacl 獲取ACL時,有一個mask,這個mask的值,就是ACL文件(目錄)上的group的權限,并不是傳統的組權限。
mask的作用范圍是(自定義用戶,自定義組,所屬組),起到一個限制最大權限的作用。這三類用戶的最大權限不能超過mask的權限(mask最大權限需要與用戶的權限進行邏輯與運算后才能得到).
用戶或組的設置必須存在于mask權限設定范圍內才會生效
修改 mask值:
setfacl ?-m ?mask::(rwx)? filename
備份和恢復ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 參數。但是tar等常見的備份工具是不會保留目錄 和文件的ACL信息
例:1、getfacl -R ?filename > acl.txt
setfacl -R –set-file=acl.txt ?filename2
2、setfacl –restore? acl.txt(該命令要在相對路徑下執行)
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88605