日期: 2015年08月30日
進程的安全上下文
(1)、用戶是否能夠把某個可執行程序文件啓動爲進程,取決於用戶對程序文件是否擁有執行權限
(2)、程序啓動爲進程後,此進程的屬主爲當前用戶,也即進程的發起者;進程所屬的組,爲發起者的基本組
(3)、進程擁有的訪問權限,取決於屬主的訪問權限
(a) 進程的屬主,同文件屬主,則應用文件屬主權限
(b) 進程的屬主,屬於文件的屬組,則應用文件屬組的權限
(c) 否則應用其他權限
SUID:
展示於文件屬主的執行權限位,s表示屬主原本擁有x權限,S表示屬主原本無x權限
功用:對於一個可執行文件來講,任何用戶運行此程序爲進程之後,其屬主不再是進程的發起者,而是程序文件自己的屬主,這種機制即爲SUID
權限設定:
chmod u+s FILE...
chmod u-s FILE...
例如:用戶需要修改密碼,輸入passwd命令之後,則運行/usr/bin/passwd文件,該文件的屬主、屬組都是root,其他用戶只有執行權限。
而運行該命令修改密碼後它會更新/etc/passwd和/etc/shadow文件,而這兩個文件只有root用戶才具修改限限。
所以,/usr/bin/passwd文件的SUID權限會讓該程序運行後就具有root的權限,那麼以root的身份就能修改,
/etc/passwd、/etc/shadow這兩個文件了。
SGID:
展示於文件屬組的執行權限位
默認情況下,用戶創建文件時,其屬組爲此用戶所屬的基本組;
一旦某目錄被設定了SGID權限,則對此目錄擁有寫權限的用戶在此目錄中創建文件,這些所屬的組均爲該目錄的屬組。
權限設定:
chmod g+s FILE...
chmod g-s FILE...
例如:有一羣人需要在某個目錄協同工作時,可爲目錄設置SGID權限。這樣在該目錄中創建的文件屬組都是該目錄的屬組,再把該組添加爲用戶的附加組,對組分配相應的權限。在該目錄下大家就可協同工作了。
在一個公共的目錄,給目錄的屬組分配rwx權限,這樣只要隸屬於該組的用戶都可以在該目錄內創建文件,而創建的文件或目錄大家都有權打開和修改。爲了防止用戶誤操作,限制用戶只能刪除自己創建的文件,這就是特殊權限Sticky的作用。
Sticky:
展示於其他用戶的執行權限位,小寫字母t
對一個公共目錄,此權限用於限制每個用戶只能刪除自己創建的文件
權限設定:
chmod o+t FILE...
chmod o-t FILE...
特殊權限的二進制數表示方式
SUID, SGID, STICKY
000 | 0 | 無 |
001 | 1 | STICKY |
010 | 2 | SGID |
011 | 3 | SGID+STICKY |
100 | 4 | SUID |
101 | 5 | SUID+STICKY |
110 | 6 | SUID+SGID |
111 | 7 | SUID+SGID+STICKY |
特殊權限也可以跟文件正常的權限一起設置:
chmod 4777 FILE
chmod 2755 DIR
chmod 3755 DIR
實例:
//在/home下創建個pub目錄,爲該目錄同時設置SUID和Sticky權限