一、前言
在linux中,每個目錄或者文件都有相對應的權限,linux通過文件屬主(user),文件屬組(group),其它人(order)對一個文件或者目錄控制讀寫執行權限,當然在這些基本權限之外還有特殊權限,facl(file access control list)等。
二、文件基本權限
2.1:屬主、屬組、order概念
屬主:即文件的擁有者,當創建或復制一個目錄或者文件時,默認是執行此命令的用戶為屬主,用戶所屬的群組為文件或者目錄的屬組。除非使用其它選項(cp命令的選項 -a -p)或者此目錄下有默認屬主或屬組的權限。
屬組:即一個或多個用戶同屬于一個用戶組對這個文件擁有屬組的權限
order : 其它人,除屬主和屬組以外的用戶
2.2:文件屬性
下面我們看一個文件的屬性,如下
[root@dns tmp]# \ls -ld mytest d rwx r-x r-x. 4 root root 4096 Aug 2 05:10 mytest | | | | | | 文 屬 屬 order 屬 屬 件 主 組 權 主 組 類 權 權 限 型 限 限
2.3:基本文件權限
一個文件或者目錄有讀、寫、執行權限。在其中在上圖中,屬主、屬組、order 權限中3位一組。r:表示讀權限(read),w:表示寫權限(write)。x:表示執行權限(execute),- :表示無任何權限。
r(read):對目錄而言,用戶可以對目錄就有瀏覽權限。對文件而言,用戶可以讀取文件內容
w(write):對目錄而言,用戶刪除,移動目錄內的文件權限。對文件而言,用戶可以寫文件
x(execute):對目錄而言,用戶可以進入目錄。對文件而言,用戶有執行文件的權限
r:可以用數字4表示讀權限,w:可以用2表示寫全些,x:可以用1表示執行權限,-:可以用0表示無權限。那么一個屬主的權限rwx可以表示為4+2+1=7,屬組的權限r-x可以表示為4+0+1=5,order的權限r-x的權限可以表示為4+0+1=5,那么上述mytest的屬主屬組和order權限為755??梢允褂妹頲hmod更改用戶文件權限,如chmod 644 mytest 。chmod的具體用法如下
chmod [OPTION]… MODE[,MODE]… FILE…
[root@dns tmp]# chmod -R 700 mytest #遞歸更改mytest權限 [root@dns tmp]# ll -d mytest drwx------. 4 root root 4096 Aug 2 05:10 mytest [root@dns tmp]# chmod 777 a_b [root@dns tmp]# ll a_b -rwxrwxrwx+ 1 leon leon 0 Aug 2 04:40 a_b
2.4:文件特殊權限
suid:set uid 權限,任何一個用戶運行一個帶此權限的命令時,不是以此用戶的身份啟動,而是以文件自身的屬主訪問。
[root@dns mytest]# ll `which passwd` -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
sgid : set gid權限,若一個目錄設置了SGID,則所有被復制到這個目錄下的文件, 其所屬的組都會被重設為和這個目錄一樣,除非在復制文件時加上-p (preserve,保留文件屬性)的參數,才能保留原來所屬的群組設置。
[root@dns tmp]# chmod g+s mytest [root@dns tmp]# ll -d mytest drwx--S---+ 5 root root 4096 Aug 7 10:05 mytest
sticky :又稱黏滯位,對一個文件設置了sticky-bit之后,盡管其他用戶有寫權限, 也必須由屬主執行刪除、移動等操作。對一個目錄設置了sticky-bit之后,存放在該目錄的文件僅準許其屬主執行刪除、 移動等操作。
[root@dns tmp]# chmod o+t mytest #設置sticky權限 [root@dns tmp]# ll -d mytest drwx--S--T+ 5 root root 4096 Aug 7 10:05 mytest
三、ACL權限
FACL(file access control list)文件系統訪問控制列表,在基本的文件權限之后,由ACL控制權限來控制文件權限,FACL可以設置多個用戶或者組對文件或目錄的權限,包括一個目錄下各文件的默認權限。用法如下
getfacl - get file access control lists getfacl [-aceEsRLPtpndvh] file ... setfacl - set file access control lists setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ... [root@dns tmp]# getfacl a_b #查看a_b的acl權限 # file: a_b # owner: leon # group: leon user::rwx user:leon:rw- group::r-- mask::rwx other::rwx [root@dns tmp]# setfacl -m u:gentoo:rw- a_b #添加gentoo訪問控制權限 [root@dns tmp]# getfacl a_b # file: a_b # owner: leon # group: leon user::rwx user:leon:rw- user:gentoo:rw- #gentoo訪問控制權限 group::r-- mask::rw- other::rwx [root@dns tmp]# setfacl -m d:u:gentoo:rwx mytest #設置文件夾的默認權限 [root@dns tmp]# getfacl mytest # file: mytest # owner: root # group: root user::rwx group::--- other::--- default:user::rwx #默認權限, default:user:gentoo:rwx default:group::--- default:mask::rwx default:other::---
四、總結
文件或目錄通過基本權限控制用戶或者進程訪問,基本權限不能滿足用戶需求的情況下可以設置特殊權限和FACL權限,在線上環境時,不能隨便設置777的權限,可以通過FACL設置某個用戶rwx的權限??傊?,文件系統的權限一定要把控好,否則將存在嚴重的安全隱患。
原創文章,作者:成吉思汗,如若轉載,請注明出處:http://www.www58058.com/6978
贊,應該首次寫文章吧,分類和標簽都有,意識非常強
好東西 感謝分享和付出 。。