基本權限
文件屬性rwx
每個文件當用ls -l查看時,都會顯示文件的詳細屬性信息,其中在排在首位的共有10位字符信息
例如 -rw-r–rw-. 1 root root ……..
共有10位,第一位代表的是文件的類型,后邊9位表示的是文件的權限屬性,沒3個字符為一組,從左到右,依次表示owner,group,others的權限,其中每組3個字符中又對應三種狀態,分別是rwx。后邊的依次是連接數,所有者,所屬組,
1、權限對文件意義
r read,表示可讀取文件的實際內容
w write,可以編輯、新增或者修改文件的內容,但是不包括刪除該文件
x eXecute,表示該文件具有被系統執行的權限。在linux中,我們的文件能否被執行,是有x這個權限來決定的,而跟文件名沒有絕對的關系
notice:當我們對一個文件有w權限是,我沒只能對文件內容進行改動,而對文件本身是不具備刪除權限的。對于文件的rwx來說,主要都是針對的文件內容,與文件名的存在有否沒有關系。
2、權限對目錄的意義
文件是存放實際數據的所在,目錄的主要內容是記錄文件名列表,文件名與目錄有強烈的關聯
r: read content in directory
表示具有讀出目錄結構列表的權限,所以當對一個目錄具有r的權限的時候,表示我們可以查詢該目錄下的文件名的數據,所以可以使用ls命令將目錄的內容列表顯示出來
w:modify contents of directory 表示具有更改目錄結構列表的權限
x:access directory
目錄的x權限代表的是用戶能否進入到該目錄成為工作目錄的用途。如果對一個目錄不具備x權限,那么就無法切換到該目錄下,也就無法執行該目錄下的任何命令
要開放目錄的權限給別人時,應該至少要給r和x的權限,但是w的權限不能隨便給,因為給予w權限,就具備了對目錄中文件和目錄的一系列的刪除、新建、重命名等操作。
文件普通權限與屬性的修改
chown change owner 改變所有者
chgrp change group 改變所屬組
chmod change mode 改變文件的權限
chown [-R] [owner][:[group]] File
用法 owner 或者 owner: 相當于 owner:owner 或者:group
-R 表示遞歸,連同子目錄下的所有文件和目錄
chown [-R] –reference=file1 file2
將file2的權限修改成與file1的相同
chgrp [-R] [group] file
chgrp [-R] –reference=file1 file2
將file2的用戶組改成與file1相同
chmod 更改文件的權限
更改文件的權限有兩種方法
1、數字類型改變文件權限
r對應數值4,w對應2,x對應1,-對應0,相應的權限位置有則計算,沒有計為0,沒三個相加,得到數字就是最后的權限數,例如某個文件的權限:-rwxrw-r–,對應的數字就是421420400,最后的數字就是764
chmod 764 file
2、符號類型修改文件權限
修改一類用戶的所有權限:u=[rwx] g=[rwx] o=[rwx] ug=[rwx] a=[rwx] u=,g=
修改用戶的某些權限或某一位權限:u+ u-g+ g-o+ o-a+ a- + –
chmod [-R] –reference=file1 file2 參考file1的文件權限,將file2修改為與file1相同
新建文件和目錄的默認權限
當我們新創建一個目錄或者文件時都是有權限的,那他的默認權限是怎么來的?這就與umask有關了,umask是用戶在新建文件或目錄時的權限默認值。系統默認的umask=0022,其中,一般用戶在創建時取用后三位022,系統用戶在創建時取用前三位002,并且umask的值是可以查看和設定的,直接輸入umask 即為查看,輸入umask #即為設定,并且可以用 umask -S 來以模式的方式產看,umask -p 顯示的umask值可以被調用
新建文件的權限=最高權限-umask,新建文件的最高權限為666,新建目錄的最高權限為777。
由于umask的值可以在新建文件時重新設定,所以當得到的文件權限存在可執行(奇數)位時,就在對應的權限數值上+1,例如 umask=035,得到的文件權限為631,則最后的權限應該是642
umask值其實就是在新建文件或目錄時從做大權限中拿掉的權限。
文件系統的特殊權限SUID、SGID、Stick
進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
SUID
任何一個可執行程序文件能不能啟動為進程:取決于發起者對程序文件是否擁有執行權限,啟動為進進程之后,其進程的屬主為源文件的屬主。SUID就是讓普通用戶擁有可以執行“只有root權限才能執行”的特殊權限
SUID的限制與功能
1、SUID權限僅對二進制(binary program)程序有效,設置在目錄上無意義
2、執行者需要對于該程序有x的可執行權限
3、本權限只在執行改程序的過程中有效
4、執行者將具有該程序所有者的權限
權限設定 chmod u+s file… chmod u-s file…
SGID
可執行(具有x權限)文件上的SGID權限
任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限。啟動為進程之后,其進程的屬主為原程序文件的屬組
權限設定:chmod g+s file… chmod g-s file…
可執行目錄上的SGID權限
默認情況下,用戶創建文件時,其屬組為此用戶所屬組的主組
一旦某目錄被設定SGID,則對此目錄有寫權限的用戶,在此目錄中創建的文件,所屬的組為此目錄的屬組
通常用于創建一個協作的目錄
權限設定:chmod g+s dir… chmod g-s dir…
Sticky位(粘滯位)
具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權
在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件
sticky設置在文件上沒有意義
權限設定:chmod o+t dir… chmod o-t dir…
當設定對應的SUID SGID和Sticky時,如果對應的屬主、屬組和other沒有相應的x權限,那么特殊權限會由s s t變成,S S T
特殊權限的數字發設定
SUID=4,SGID=2,Sticky=1,將含有對應權限累加,得到數值后,放到普通權限三個數值的前面,即可用chmod命令設定
文件的隱藏屬性chattr lsattr
文件除了上邊介紹的屬性之外還具有隱藏的屬性,用命令chattr來修改,用lsattr來查看
chattr [+-=][ASacdistu] 文件或目錄名稱
選項 -R 遞歸,將目錄中的內容依次改變
參數
+ 增加某一個特殊參數,其他參數不改變
– 刪除某一個特殊參數,其他參數不改變
= 設定為后邊的參數
A 當設置了A后,當訪問這個文件時,文件的atime不會改變,對于I/O較慢的機器可以避免過度訪問磁盤
a 當設置a屬性之后,這個文件將只能增加數據,不能修改和刪除數據,只有root能設置這個屬性
c 文件設置c屬性之后,將會自動將此文件壓縮,讀取時自動解壓縮;進行存儲的時候,會先進行壓縮在存儲
i 設置i屬性之后,這個文件將不能被刪除、改名,設置連接也無法寫入或添加數據,只有root能夠設置
s 當設置s屬性后,文件被刪除之后,將會完全從磁盤被刪除,包括文件的具體數據
u 與s屬性相對應的,當文件設置u屬性之后,如果文件被刪除,將只會刪除文件的文件名,內部的具體數據依舊會存在磁盤上,可以恢復
lsattr 查看文件的隱藏屬性
lsattr [-adR] 文件或目錄
選項與參數:
-a :將隱藏文件的屬性也秀出來;
-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名;
-R :連同子目錄的數據也一并列出來!
主機的具體權限規劃:ACL
ACl是access control list的縮寫,主要目的是提供傳統的owner、group、others的r、w、x權限之外的具體權限設置。ACl可針對單一用戶、單一文件或目錄來進行rwx的權限設置,對于需要特殊權限的使用狀況非常有幫助
CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt
ACL的生效順序:所有者,自定義用戶,自定義組,其他人
設置文件的ACL權限 使用setfacl命令
選項:
–m 設置文件的acl參數,不能與-x混用
-x 刪除文件的acl參數,不能與-m混用
-b 清空文件所有的acl參數
-k 移除『預設的』 ACL 參數,關于所謂的『預設』參數于后續范例中介紹;
-R 遞歸設定 acl ,亦即包括次目錄都會被設定起來;
-d 設定『預設 acl 參數』的意思!只對目錄有效,在該目錄新建的數據會引用此默認值
-M 調用設置好的ACL權限設置文件 setfacl -M file.acl file|directory
設置方式 setfacl -m[R] u[g]:username[groupname]:[rwx權限] file[dir]
取消方式 setfacl -x[-R] u[g]:username[groupname] file[dir]
這種取消方式可能不徹底,可以使用-b選項全部取消
setfacl -m d:u:wang:rx dir d 是default,意思是將來目錄下新建的文件自動有次權限,只對新文件有效,對于舊文件無效
setfacl -X file.acl directory 刪除文件中的權限
用命令getfacl可以查看文件的ACL權限 getfacl file
在看到的選項中有一項是mask值,是自定義用戶,自定義組的最大權限,既ACL文件上的group權限是mask值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限。mask只影響所有者和other的之外的人和組的最大權限。mask需要與用戶的權限進行邏輯運算后,才能變成有限的權限(effective permission),用戶和組的設置必須存在與mask權限設定范圍內才會生效。
mask值的設置 setfacl -m mask::[權限] file
原創文章,作者:black_fish,如若轉載,請注明出處:http://www.www58058.com/27526