理解基本權限以及特殊權限:Suid 、Sgid、Sticky以及acl

理解基本權限以及特殊權限:Suid 、Sgid、Sticky以及acl

1 在Linux中特殊權限是什麼?爲什麼要設定特殊權限?回答這個問題前,我們不妨思考爲什麼要設定權限?

  大家知道Linux中一切皆文件。不論你是什麼,在linux系統中都會被當做一個文件來看待。無論你是文本或目錄,硬件或軟件,圖片或視頻等等,統統都被當做文件來看待。所以,在linux中,文件的重要性不言而喻。那麼如何更合理的管理好文件呢?文件的權限管理是很重要的一環,所以接下來我將介紹文件的基本權限以及特殊權限。

1 基本文件權限

對於文件的權限linux系統中是通過讀(r)寫(w)執行(x)來進行管理的。
權限文件目錄
r可以打開和閱讀文件的內容可以用ls查看此目錄中的文件,但不能閱讀目錄內的文件
w可以修改文件內容可以在目錄中刪除或添加文件以及目錄
x可以運行一個執行文件可以使用cd進入到這個目錄

  介紹完了rwx權限在文件以及目錄中的意義,接下來介紹賦予權限的方法。在這裏我採用的八進制賦權的方法,權限對應關係如圖。 Alt text

wKiom1jorE-BoHHYAAAV-DGct-E684.png

通過這種對應關係,我們可以給文件或目錄賦權。以下是實例。

touch permission.txt
ls -l permission.txt 
-rw-r--r--. 1 root root 0 Apr  8 14:40 permission.txt
chmod 755 permission.txt 
ls -l permission.txt 
-rwxr-xr-x. 1 root root 0 Apr  8 14:40 permission.txt

講解:	1.創建一個文件	
        2.查看文件權限爲:-rw-r--r--,對應權限 屬主:讀寫;屬組:讀;其他者:讀
        3.接下來我們使用chmod更改文件的權限
        4.可以看到文件的權限爲:-rwxr-xr-x 對應權限 屬主:讀寫執行;屬組:讀執行;其他者:讀執行
note:一般我們設置文件的權限爲644,不輕易給文件賦予X權限,因爲執行權限對於文件來說十分重要

2 特殊權限 

講解完了基本權限,接下來該講講特殊權限。當有些權限問題,基本權限解決不了,那麼就需要特殊權限來解決了。這就是特殊權限存在的意義。

2.1 三大特殊權限分別對於文件以及目錄的作用。 Alt text

wKiom1jorHfSFiLXAABiVSjnRLk785.png

1.設置SUID的意義:讓其他用戶具有文件所有者的執行權限。
2.設置SGID的意義:讓其他用戶具有文件所屬組的權限。這樣其他用戶就可以在設置SGID的目錄中可以隨意的修改文件。生產環境中常爲開發人員用戶組設置此權限。
3.設置Sticky的意義:只有文件的屬主可以刪除文件。生產環境中常爲開發人員用戶組設置此權限。

2.2 如何判斷文件或者目錄設置了特殊權限 Alt text

wKioL1jorI3DxwHAAABxVg4_yf4118.jpg

通過上圖我們可以知道,當對用戶設置了SUID,用戶原本執行權限位置會被S或s替換掉。屬主有執行權限,替換爲s;屬主沒有執行權限時,則替換爲大S。大S在這裏是沒有任何作用,小s纔會讓其他用戶擁有執行權限。同理,SGID,Sticky也是相同的道理。

 ls -ld /usr/bin/passwd /tmp
 drwxrwxrwt. 16 root root  4096 Apr  8 15:03 /tmp
-rwsr-xr-x.  1 root root 27832 Jun 10  2014 /usr/bin/passwd
	以上是系統對文件以及目錄設置的特殊權限。
	passwd文件設置了SUID,作用是除root用戶以外的用戶可以修改自身的用戶密碼;
	tmp目錄設置了sticky,其作用是使進入tmp目錄內的用戶可以隨意修改	文件內容,但是不能刪除其他用戶創建的文件。

2.3 設置Suid、Sgid、Sticky

設置特殊權限很簡單,可以參考以下命令。

3.1 設置suid/取消suid
		chmod u+s file
		chmod u-s file
	3.2 設置sgid/取消sgid		
		chmod g+s dir
		chmod g-s dir
	3.3 設置sticky		
		chmod o+t dir
		chmod o-t dir

2.4 acl權限

除了文件的所有者,所屬組和其他人,可以對通過acl權限實現對更對的用戶設置權限。

獲取acl權限信息
	命令:getfacl dir/file
		mkdir acltest
		getfacl acltest/
		# file: acltest/
		# owner: root
		# group: root
		user::rwx
		group::r-x
		other::r-x設置acl權限
	命令:setfacl -m u/g:name:permission dir/file
		setfacl -m u:michael:rwx acltest/
		getfacl acltest/
		# file: acltest/
		# owner: root
		# group: root
		user::rwx
		user:michael:rwx		
		group::r-x
		mask::rwx
		other::r-x
以上通過setfacl命令,michael用戶對/tmp/acltest目錄已經擁有了rwx權限。這就是acl權限的作用,大家可以舉一反三。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章