一、綜述
在用戶和組的管理中介紹了Linux系統是用戶多任務的分時操作系統,這意味著同時可以有多人在同一臺pc上進行不同的操作。為了能夠保護每個用戶的數據安全,針對不同的用戶設置相應的權限是非常重要的。
Linux文件系統權限主要針對三類用戶:
文件的所有者: owner,用u標識
文件的所有組:group,用g標識
其他人: other,用o標識。不包含在文件所有者和所有組內的系統其他用戶。
二、文件權限及從屬關系修改
1、查看文件權限
使用ls –l可以查看。以
1.1文件類型:
普通文件—f;目錄文件—d;塊設備文件—b;字符設備文件—c;軟連接文件—l;套接字文件—s;管道文件—p
1.2文件權限:
讀—r readable
寫—w writeable
執行—x。excutable(比如腳本、二進制文件、目錄等文件具有此權限)
本文主要就文件權限進行解釋以及對文件屬組、屬主、權限的修改做相關介紹。其他內容暫不做介紹。
2、對于文件和目錄來說,rwx代表的權限是不一樣的。
rwx對文件來說:
r: 代表可以使用文件查看類命令來查看文件內容,比如cat、less等。
w:代表可以通過編輯器等修改文件內容。比如vim、nano、重定向等。
x: 代表可以把此文件提交給內核啟動為進程。
rwx對目錄來說:
說明下,目錄也是一種文件,存放的是下屬的文件與inode節點的對應關系。
r: 可以通過ls查看文件內容
w:可以在該目錄下創建文件或刪除文件
x:可以通過cd命令進入該目錄,以及通過ls –l查看目錄下屬文件的詳細信息。
3、文件權限的表示方法:
文件的權限是3個字符一組的。分別對應所有者、所屬組、其他人的權限
權限、二進制、八進制表示如下表
例如:/etc/passwd的權限rw-r–r–可以表示為: 644
4、文件權限的修改
通過chmod命令修改。用法為:
chmod [OPTION]… OCTAL-MODE FILE…
常用options有:
-R 表示遞歸修改,長用于包含多個文件或子目錄的目錄權限修改。
–reference=source_file 參考某文件的權限來修改
4.1修改權限的方式一:
可以針對屬主、屬組、other單獨修改: chmod u=|g=|o= file/dir
也可以組合修改: chmod ug=|go= file/dir
例:在某目錄下有test.file文件,對其進行權限修改
4.2 方法二:
使用八進制來修改。上圖中文件的權限為664,將其修改為屬主、屬組、other都具有r、x權限。
4.3 方法三:
參考某文件的權限進行修改。如:新建文件new.file,參考test.file將其權限修改與test.file一致。
5、修改文件從屬關系
5.1 修改屬主、屬組。chown命令
chown [options] username:groupname filename
常用options:-R 遞歸,用于目錄
chown root testfile :修改文件的屬主
chown root:admins testfile:修改文件的屬主和屬組
chown :admins testfile:修改文件的屬組
例:將test.file 屬主、屬組修改為hadoop,new.file屬組修改問gentoo
5.2 chgrp (change group的縮寫,顧名思義,只能修改文件的屬組)
chgrp grouname file
常用參數:-R:遞歸,用于目錄
三、umask介紹
umask指在創建文件或目錄時的默認權限。
1、新建的文件默認權限:666-umask
一般來說,文件默認不允許包含x權限,如果所得結果某位存在執行(奇數)權限,則將其權限+1
2、新建的目錄默認權限:777-umask
查看umask:umask
設定umask:umask #
umask –p:輸出可被調用
五、linux文件系統的特殊權限
權限針對owner、group、other,特殊權限也分別針對這三類用戶。
owner、group、other分別對應SUID、SGID、STICKY。
5.1 SUID介紹
要了解SUID的應用,先來了解下安全上下文。
安全上下文:任何一個可執行文件能不能啟動為進程,起決于其發起者對程序文件是否有可執行權限。啟動為進程后,進程的屬主為發起者,進程的屬組為發起者所屬的組。進程訪問文件時的權限,起決于進程的發起者:
1、 進程的發起者,同文件的屬主,則應用文件屬主權限
2、 進程的發起者,屬于文件的屬組,則應用文件屬組的權限
3、 應用other的權限
應用場景:當一個用戶要以程序文件的的屬主身份發起進程,并且訪問文件時。比如:passwd命令可以修改用戶的密碼,但是普通用戶對/etc/passwd沒有讀權限,對/etc/shadow是沒有任何權限的。但是普通用戶又能成功修改密碼,這是因為,passwd文件具有SUID權限。
設置和取消SUID權限。
chmod u+s file 設置SUID
chmod u-s file 取消SUID
當文件的屬主具有x權限是,SUID表現為s,當沒有SUID權限時,表現為S。
需要注意的是。具有SUID的程序文件運行為進程訪問文件是通過程序文件的屬主來對比權限的,在給屬主為root的文件設置SUID時應考慮到到對系統的破壞性,建議慎用。
5.2 SGID介紹
當多個成員共同參與一個項目,該項目有專用的目錄來存放項目文件,目錄的屬組為項目組。這時,項目成員在該目錄下創建的目錄分別為自己的基本組,對于項目組管理來說帶來不便。
若為此目錄設置設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組。這就是SGID的作用。
SGID的設置方法:
chmod g+s DIR…
chmod g-s DIR…
5.3 STICKY介紹
若一個用戶對某目錄具有rwx權限時,意味著他可以刪除該目錄下其他用戶的文件,在項目協作的目錄中,要使用戶只能刪除自己所有的文件,其他文件可以修改但是不可刪除。這就需要設置STICKY權限。
權限設定:
chmod o+t DIR…
chmod o-t DIR…
5.4 權限位映射:
SUID: user,占據屬主的執行權限位
s: 屬主擁有x權限
S:屬主沒有x權限
SGID: group,占據屬組的執行權限位
s: group擁有x權限
S: group沒有x權限
Sticky: other,占據other的執行權限位
t: other擁有x權限
T: other沒有x權限
六、訪問控制列表
ACL(Access Control List)
除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限,實現靈活的權限管理。
6.1 設置ACL
setfacl –m u|g:username|groupname:mode file:為某用戶或組設置acl。
setfacl -M acl_file file:使用acl_file里面的配置來設置文件的acl
setfacl -x user file:刪除指定文件指定用戶的acl
setfacl -X acl_file file:參考cal_file刪除指定文件的acl配置
mask的權限也可通過修改屬組的權限來修改,屬組的權限和mask權限同步
setfacl -m mask::mode file
setfacl -m d:u:username:mode dirname:對一個目錄設置defaults權限,在目錄先新建的文件將繼承此權限
setfacl -k file/dir:刪除默認的acl權限
mask:除了所有者和other,其他用戶的權限不能高于mask定義的權限;
setfacl -b f ile/dir:刪除所有的acl權限(包括屬組的權限,通過setfacl新增的用戶、組的權限等)
setfacl acl.txt | setfacl -M- newacl.txt:參考文件1的acl來設置文件2的acl
例:設置/gramdir /programfile1的權限,使hadoop用戶不具有寫、執行權限,program組具有讀寫權限,使新建文件自動具有acl權限:gentoo用戶具有rw權限;sysadmins組具有r權限。
查看:getfacl filename
6.2 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
#getfacl -R /tmp/dir
例:備份gramdir目錄中所有文件的ACL,清除gramdir的所有ACL權限,并利用備份還原
原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/28347
對命令的常見用法總結的很好,SUID,SGID,Sticky的應用場景給出一些示例來,能讓讀者更清晰哦。