Linux學習-7.文件的特殊和隱藏權限

1.SUID和SGID權限

SUID是一種對二進制程序進行設置的特殊權限,可以讓二進制程序的執行者臨時擁有屬主的權限。
SGID可以讓其他用戶對某個可執行命令擁有屬組權限,原理同SUID。

比如passwd命令是linux系統中用來修改密碼的命令,系統中所有用戶都可以使用。而passwd命令改密碼的行爲是通過修改/etc/shadow文件來實現。查看/etc/shadow的權限:

[root@shijie ~]# ls -l /etc/shadow
----------. 1 root root 1184 5月  13 23:54 /etc/shadow

/etc/shadow對於普通用戶沒有任何權限,但是普通用戶是可以修改密碼的。查看
/bin/passwd的權限。

[root@shijie ~]# ls -l /bin/passwd 
-rwsr-xr-x. 1 root root 27832 1月  30 2014 /bin/passwd

在原本所屬用戶執行權限的位置不是x而是s,這就是有SUID權限,普通用戶通過SUID權限使用passwd命令修改/etc/shadow文件了。若沒有執行權限設置了SUID權限這個位置就是S。

2.SBIT權限

SBIT特殊權限位可確保用戶只能刪除自己的文件,而不能刪除其他用戶的文件。SBIT只可以對目錄進行設置,當對某個目錄設置了SBIT權限後,那麼該目錄中的文件就只能被其所有者執行刪除操作了。
/tmp作爲一個共享文件的目錄,默認已經設置了SBIT特殊權限位,因此除非是該目錄的所有者,否則無法刪除這裏面的文件。

[root@shijie /]# ls -ld /tmp
drwxrwxrwt. 16 root root 4096 5月  15 00:48 /tmp

在原本其他用戶執行權限的位置不是x而是t,說明這個目錄開啓了SBIT權限。在該目錄下哪個用戶創建了文件或目錄,只有root或者該用戶才能刪除創建的文件。
若沒有執行權限設置了SBIT權限這個位置就是T。

3.設置特殊權限

新建文件file和文件夾dir,增加權限。

增加SUID:chmod u+s 文件名
取消SUID:chmod u-s 文件名
增加SGID:chmod g+s 文件名
增加SGID:chmod g-s 文件名

[root@shijie Desktop]# chmod u+s file 
[root@shijie Desktop]# ls -l 
drwxr-xr-x. 2 root shijie 6 5月  14 14:46 dir
-rwsr--r--. 1 root shijie 0 5月  14 14:47 file

使用數字配置

[root@shijie Desktop]# chmod 4744 file 
[root@shijie Desktop]# ls -l 
drwxr-xr-x. 2 root shijie 6 5月  14 14:46 dir
-rwsr--r--. 1 root shijie 0 5月  14 14:47 file
SUID:4
SGID:2
SBIT:1

權限數字相加,位置在所屬用戶之前。

4.文件的隱藏屬性

設置文件的隱藏屬性:chattr [參數] [+ - =][屬性] 文件

	參數 作用
	-R	遞歸處理目錄下的所有文件
	-v	設置文件或目錄版本
	-V	顯示指令執行過程
	+	開啓文件或目錄的該項屬性
	-	關閉文件或目錄的該項屬性
	=	指定文件或目錄的該項屬性
	屬性	作用
	i	不得任意更動文件或目錄
	a	僅允許補充(追加)內容,無法覆蓋/刪除內容(Append Only)
	S	文件內容在變更後立即同步到硬盤(sync)
	s	徹底從硬盤中刪除,不可恢復(用0填充原文件所在硬盤區域)
	A	不再修改這個文件或目錄的最後訪問時間(atime)
	b	不再修改文件或目錄的存取時間
	D	檢查壓縮文件中的錯誤
	d	使用dump命令備份時忽略本文件/目錄
	c	默認將文件或目錄進行壓縮
	u	當刪除該文件後依然保留其在硬盤中的數據,方便日後恢復
	t	讓文件系統支持尾部合併(tail-merging)
	x	可以直接訪問壓縮文件中的內容

例:增加隱藏屬性,讓file文件無法被刪除和修改。

[root@shijie Desktop]# chattr +a file 
[root@shijie Desktop]# rm file
rm:是否刪除普通空文件 "file"?y
rm: 無法刪除"file": 不允許的操作
[root@shijie Desktop]# echo 12345 > file
bash: file: 不允許的操作

查看文件權限,發現有所有權限,並不能看到無法刪除的屬性權限。這就要使用 lsattr命令查看隱藏屬性。

[root@shijie Desktop]# ls -l 
drwxr-xr-x. 2 root shijie 6 5月  14 14:46 dir
-rwxr--r--. 1 root shijie 0 5月  14 14:47 file
[root@shijie Desktop]# lsattr file
-----a---------- file
[root@shijie Desktop]# chattr -a file
[root@shijie Desktop]# lsattr file
---------------- file
[root@shijie Desktop]# rm file
rm:是否刪除普通空文件 "file"?y
[root@shijie Desktop]# 

刪除隱藏的a屬性,文件就可以修改和刪除了。

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