大綱:
一、前言
二、普通權限
三、特殊權限
四、ext文件的擴展屬性
五、文件的訪問控制列表(facl)
一、前言
linux中常見的權限有讀(r)、寫(w)、執行(x),還有3個特殊的權限。因此下面就從普通權限開始介紹起
二、普通權限
rwx:讀 寫 執行
rwxr-xr-x : 讀寫執行 讀_執行 讀_執行 (分別對應)屬主 屬組 其他組
111101101:對應上述位轉化成10進制就是755(因此在賦予權限時就可以用 chmod 755 FILE )
在linux里面,有目錄及目錄中的文件,而上述權限相對應的目錄及文件有所不同,如下:
目錄:
r:能用ls查看目錄中的文件名列表 w:可以在目錄中添加/刪除文件 x:能夠cd進目錄,以及使用ls -l 命令查看文件列表
文件:
r:能查看文件內容 w:可以修改文件內容 x:使文件可以啟動為一個進程
權限的修改:
1、使用八進制來進行
chmod [-R] MODE FILE :如 chmod 777 /tmp/123.txt
[-R]遞歸修改:修改一個目錄及里面文件的權限,僅對當前文件生效,后追加的不生效
2、指定一個或多個類別
chmod 類別 = MODE :如 chmod u=rw /tmp/123.txt
同理:chmod ug=rw /tmp/123.txt chomd o= /tmp/123.txt 等同于 chmod o=--- /tmp/123.txt chomd a=r /tmp/123.txt 等同于 chmod ugo=r /tmp/123.txt
3、指定類別的權限的+/-
chmod 類別+/- MODE : 如 chmod u+x /tmp/123.txt
注意 chmod +w 僅對u生效 ,r x 是對a生效
4、參考其他文件的權限
chmod --reference=FILE :如 chmod --reference=/tmp/file
三、特殊權限
特殊權限有三類:suid sgid sticky
suid:
修改方式:chmod u[+/-]s FILE
當進程執行此文件時,將以此文件的屬主進行執行,當然前提是此類文件都是可執行程序。
比如:/etc/shadow 是沒有權限訪問的,但是任何用戶都可以修改自己密碼,
當用戶(ubuntu)訪問這個文件時,實際上是以此文件的屬主root發起這個進程,所以可以修改shadow這個文件。
guid:
修改方式:chmod g[+/-]s FILE
類似于sgid
那當上圖這種情況下,是否可以修改用戶的密碼?
要回答這個問題,我們先要知道進程訪問文件的次序,如下:
進程的屬主,是否與被訪問的文件屬主相同; 進程的屬主所屬于的組當中,是否有一個與被訪問的文件的屬組相同; 以other的權限進行訪問;
假設我們以ubuntu這個普通用戶訪問/etc/shadow 時,相當于屬主所屬的組是root(/usr/bin/passwd 的屬組root),去訪問/etc/shadow,但是shadow 的屬組雖然為root,但是卻沒有任何可執行權限,因此不能修改用戶的密碼。
那這個guid有什么用呢?
好處如下:如果將目錄的屬組設置SGID權限之后,所有用戶在此目錄創建文件的屬組不再是用戶的基本組,而是目錄的屬組
這樣幾個用戶就可以加入一個附加組,創建一個目錄,將其屬組改成相同的附加組;從而可以實現在同一目錄下,多用戶可以進行文件共享的操作了
如: 用戶ubuntu 、007的附加組都有一個share,/tmp/share 的屬主屬組為 root share
因此 在/tmp/share 里面ubuntu 007 建立的文件可以互相訪問以及修改
但是用戶可以刪除其他用戶建立的文件,要避免這個問題,需要用到以下的sticky位功能。
sticky
修改方式:chmod o[+/-]t FILE
使用了這個權限,則用戶不能刪除其他用戶創建的文件。如007 刪除不了ubuntu用戶創建的文件。
當然以上三個權限又可以組成一個八進制數值,我們賦值的時候也可以這樣做
chmod 7111 FILE 如:chmod 7111 /tmp/share
如果是 7000 FILE 如:chmod 7000 /tmp/share
這就是權限位大小寫字母的區別
四、ext文件的擴展屬性
lsattr 查看屬性
上面有個e,只要能看到這個文件,肯定都存在e屬性,表示支持這個擴展屬性格式的。
chattr修改屬性
chattr [+-=][FILE]
a:只能增加,不能修改。 c:壓縮格式,將會自動的壓縮文件。 d:尚未備份 i:無法修改
以下以i屬性作為介紹,設置而了i屬性后,即使root也無法修改文件。
五、文件的訪問控制列表(facl)
facl也是用到了文件的擴展屬性,但是和以上的文件擴展屬性沒有相關,只是有點近似。
作用:讓普通用戶透過文件的擴展屬性,為其添加額外的用戶訪問授權機制而無須改變其屬主、屬組,也不用更改other的權限
命令:
設置 setfacl -m u:USERNAME/UID:MODE FILE g:GROUPNAME/GID:MODE FILE 取消 setfacl -x u:USERNAME/UID FILE g:GROUPNAME/GID FILE 查看 getfacl
舉個例子:
用戶ubuntu對一個屬主是自己的文件進行facl授權,讓用戶007可以對此文件擁有讀寫權限。但是007本身是個數字,直接使用007會導致授權到UID為7的用戶;因此使用007的uid,即4431進行授權
用戶007進行文件的更改:
設置了facl后,權限應用模型是 自上而下的生效的。屬主-用戶級別facl-屬組-組級別facl-其他
以上是一些體會,還有很多擴展功能還沒學到,以后再慢慢分享。
原創文章,作者:麥鯨,如若轉載,請注明出處:http://www.www58058.com/3838