1. 程式人生 > >特殊權限set_uid,set_gid,stick_bit和軟、硬鏈接

特殊權限set_uid,set_gid,stick_bit和軟、硬鏈接

linux

● suid
前面講的文件權限都是3位數,其實在前面還有一位,就是特殊權限,set uid,set gid,stick bit。
該權限針對二進制可執行文件,使文件在執行階段具有文件所有者的權限。
例如passwd命令,當普通用戶執行passwd命令時,可以臨時獲得root權限,從而可以更改密碼。

[root@leewill2 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd

數字表示為4755,當有特殊權限時,第一位數字可以是0,1(--t),2(-s-),3(-st),4(s--),5(s-t),6(ss-),7(sst)。

增減權限也用chmod,chmod u+s /bin/ls
如果文件權限為S,是由於沒有了執行權限。

● sgid
該權限可以應用在文件或者目錄上,在文件上,則同suid,必須為二進制可執行文件,在目錄上,任何用戶在此目錄下創建的文件或目錄都具有和該目錄所屬的組相同的組。
chmod g+s /tmp/test

● sticky_bit
可以理解為防刪除位。一個文件是否可以被刪除,取決於該文件所在目錄是否具有寫權限,沒有寫權限,則不能被刪除,也不能添加新文件。
如果希望能夠添加文件且不能刪除該目錄下的其他用戶文件,則可以對父目錄增加該權限。例如/tmp/目錄就設置過。
設置權限:chmod o+t 目錄名稱

●軟連接

軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接有著自己的 inode 號以及用戶數據塊。因此軟鏈接的創建與使用沒有類似硬鏈接的諸多限制:

軟鏈接有自己的文件屬性及權限等;
可對不存在的文件或目錄創建軟鏈接;
軟鏈接可交叉文件系統;
軟鏈接可對文件或目錄創建;
創建軟鏈接時,鏈接計數 i_nlink 不會增加;
刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。

●硬鏈接
若一個 inode 號對應多個文件名,則稱這些文件為硬鏈接。換言之,硬鏈接就是同一個文件使用了多個別名。硬鏈接可由命令 link 或 ln 創建。

由於硬鏈接是有著相同 inode 號僅文件名不同的文件,因此硬鏈接存在以下幾點特性:

文件有相同的 inode 及 data block;
只能對已存在的文件進行創建;
不能交叉文件系統進行硬鏈接的創建;
不能對目錄進行創建,只可對文件創建;
刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。

特殊權限set_uid,set_gid,stick_bit和軟、硬鏈接