文件的屬性

Linux下的文件類型
- -:普通文件
- d:?目錄文件
- b: 塊設備
- c:?字符設備
- l:?符號鏈接文件
- p:?管道文件pipe
- s:?套接字文件socket
……


在文件權限中,一共有十字符,第一個字符為文件的類型。接下來的字符分為三組,分別是文件所有者、所屬組、其他人。
每一組分別由rwx?三個參數組合。其中,r代表可讀(read)、w代表可寫(write)、x代表可執行(execute)
這三個權限的位置不會改變,如果沒有權限,就會出現減號–而已
-
文件所有者:由于Linux是個多人多任務的系統,每個人的都有自己的隱私,總不希望被別人看到吧!文件所有者的角色顯得非常重要了
-
所屬組:是多個用戶的集合**
-
其他人:不是所有者,又沒有加入這個 組里的成員。
Linux下的權限管理
文件的權限
對于二進制文件來說,r和w沒有任何意義,但x是非常危險的
對于普通文件來說:文件對應的是文件的內容。
r只能讀取文件內容。也能復制文件的內容,復制到的目標目錄必須有wx的權限。
w:能編輯文件內容。刪文件,移動、改名、新建文件是由它所在的目錄決定的。是由目錄的wx權限來決定的(因為目錄存的是文件的列表結構和inode號)
x:是對文件的執行。x對文件來說是非常危險的,特別是對于可執行程序的文件,對文本文件毫無意義。
目錄的權限
對目錄來說:對應的是文件名的列表
r:能讀取目錄內的文件列表,但無法讀取文件屬性。
w:可以mv,cp,rm,mkdir,touch與該目錄下的文件名異動有關,前提要有x權限。
x:能否進入該目錄成為工作目錄,cd
有w無x:是無法刪除、移動、改文件
X:只給目錄x權限,不給文件x權限,如果文件本身有x權限 ,那同樣會給。
權限獲取的順序
獲取權限的順序:先看你是不是所有者,再看你是不是所屬組,最后看你是不是其他人。如果是其中的一類人,那后面的不會去看。
對普通用戶來說,沒有權限是不能訪問資源的
讀寫權限對root用戶不受限制。但x權限受控制。
需要注意的是:對root用戶來說,如果自己沒有x權限。只要權限后面的幾類人帶有x權限,root就能執行。而普通用戶不行
文件的所有者的所屬組
- 修改文件的屬主:chown
chown [OPTION]… [OWNER][:[GROUP]] FILE…
用法:
OWNER
OWNER:GROUP
命令中的冒號可用.替換
-R: 遞歸 - 修改文件的屬組:chgrp
chgrp [OPTION]… –reference=RFILE FILE…
-R 遞歸 - 修改文件的權限:chmod
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 [OPTION]… –reference=RFILE FILE…
參考RFILE文件的權限,將FILE的修改為同RFILE。只改變文件的權限。
上面所提的權限在Linux通用的傳統系統EXT系列和Centos 7上的xfs文件系統才支持,權限的支不支持不是Linux說了算,而是由文件系統說了算。
新建文件和目錄的默認權限與umask
umask 可以拿掉一些權限,因此,適當的定義 umask 有助于系統的安全, 因為他可以用來建立默認的目錄或文件的權限。
對目錄來說:
default=777-umask
對文件來說:
default =666-umask 再觀察結果。
如是有基數們,基數加1。是偶數數不變
- 非特權用戶umask是 002
- root的umask 是 022
- umask: 查看
- umask #: 設定
- umask 002
- umask –S 模式方式顯示
- umask –p 輸出可被調用
- 全局設置: /etc/bashrc 用戶設置:~/.bashrc
Linux系統上文件的特殊權限
SUID, SGID, Sticky
三種常用權限:r, w, x user, group, other
安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程,取決發起者對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者,進程的屬組為發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
SUID:?user,占據屬主的執行權限位
- s: 屬主擁有x權限
- S:屬主沒有x權限
- SUID:用數字4表示。
只適合于二進制程序上,繼承于所有者的權限。
SGID:?group,占據屬組的執行權限位
- s: group擁有x權限
- S:group沒有x權限
- SGID:用數字2表示。
1)繼承二進制程序所屬組的權限
2)作用于目錄,此目錄新建的文件繼承目錄的所屬組.
Sticky:?other,占據other的執行權限位
- t: other擁有x權限
- T:other沒有x權限
- Sticky:用數字1表示
- sticky:作用于目錄,此目錄的文件只能被所有者和root刪除
針對普通用戶來說,在此目錄下,不能覆蓋別人的文件。要想覆蓋必須在這個文件所屬的組或者有別人的文件w權限才行。
ACL 訪問靈活的權限管理
設置ACL權限:setfacl
查看ACL權限:getfacl
語法:setfacl [-bkRd] [-m|-x acl 參數] 目標文件名
選項與參數:
- -m:設置后續的acl權限,不可與-x一起使用
- -M:用文件批量設置acl權限
- -x: 刪除后續的acl權限,不可與-m一起使用
- -X:用文件批量刪除acl權限
- -b:刪除所有的acl權限
- -k:刪除默認的acl權限
- -R:遞歸設置acl權限
- -d:設置默認acl權限,只對目錄有效
ACL:Access Control List,實現靈活的權限管理 除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限 CentOS7 默認創建的xfs和ext4文件系統具有ACL功能 CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加 tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1 /mnt/test
ACL生效順序:所有者,自定義用戶,自定義組,其他人
mask
- mask值:文件或目錄一旦定義了acl,ACL文件上的group權限是mask的值,用chmod改組的權限,是改的mask的值
- mask只影響除所有者和other的之外的人和組的最大權限
- mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)
- 用戶或組的設置必須存在于mask權限設定范圍內才會生效 setfacl -m mask::rx file
–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以
示例:
setfacl –set u::rw,u:wang:rw,g::r,o::- file1
getfacl file1 | setfacl –set-file=- file2 復制file1的acl權限給file2
備份和恢復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 setfacl --restore acl.txt getfacl -R /tmp/dir1
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95445