特殊權限:SUID SGID STICKY
linux的安全上下文:
1.進程以用戶的身份運行,進程是發起此用戶的代理,因此以此用戶的身份和權限完成所有的操作。
2.權限匹配模型:
1)判斷進程的屬主,是否以被訪問的文件屬主。如果是,則應用屬主權限,否則進入第2步。
2)判斷進程的屬主,是否屬于被訪問的文件屬組。如果是,則應用屬組的權限,否則進入第3步。
3)應用other的權限。
SUID:
默認情況下,用戶發起的進程,進程的屬主是其發起者,因此,其以發起者的身份在運行。
SUID的功用:用戶運行某程序時,如果此程序擁有SUID權限,那么程序運行時,進程的屬主不是發起者,而是程序文件自己的屬主。
管理文件的SUID權限:
chmod u+|-s FILE
展示位置:屬主的執行權限位
如果屬主本有執行權限,顯示為小寫s,
否則,顯示為大寫S。
[root@localhost ~]# cp /bin/cat /tmp/jackfile1 #將cat命令拷貝為jackfile1
[root@localhost ~]# mv /bin/cat /bin/cat.txt #把cat路徑重新編輯,使系統找不到cat命令
[root@localhost tmp]# chmod u+s jackfile1 #增加jackfile1特殊權限suid
[root@localhost tmp]# ll jackfile1 #查看jackfile1的屬主屬組和權限
-rwsr-xr-x. 1 jack jack 48568 Aug 1 19:11 jackfile1
[jack@localhost jack]$ ll 2.txt #jack用戶新建2.txt文件,jack5用戶對此文件無任何權限
-rw-rw—-. 1 jack jack 52 Aug 1 19:25 2.txt
[jack5@localhost jack]$ /tmp/jackfile1 2.txt #使用jack5用戶查看jack用戶所建的2.txt文件
agjjfjskdfjlsdfjlsfjsldjgljgljlajgljhljlkdahljfsdjk
實驗結論:以上試驗中,把jackfile1變成cat命令使用,當jackfile1具有s權限時,其他用戶使用jackfile1命令,就相當擁有jackfile1的屬主權限,所以任何jack所建的文件,其他用戶都可以進行訪問。
SGID:
功用:當目錄屬組有寫權限,且有SGID權限時,那么所有屬于此目錄的屬組,且以屬組的身份在此目錄中新建文件或者目錄時,新文件的屬組不是用戶的基本組,而是此目錄的屬組。
管理文件的SGID權限:
chmod g+|-s FILE
展示位置:屬組的執行權限位
如果屬組原本有執行權限,顯示為小寫s
否則,顯示為大寫S
[jack@localhost jack]$ ll -d #設定文件目錄jack有SGID權限
drwxrwsr-x. 2 jack jack 4096 Aug 1 19:25 .
[jack3@localhost jack]$ id jack3 #設定jack組為jack3的附加組
uid=4019(jack3) gid=4019(jack3) groups=4019(jack3),4023(jack)
[jack3@localhost jack]$ touch 5.txt #使用jack3用戶新建5.txt文件
[jack3@localhost jack]$ ll #查看5.txt文件的所屬組是jack,而不是主要組jack3
-rw-rw-r–. 1 jack3 jack 0 Aug 1 19:39 5.txt
實驗結論:
1.需要jack3用戶有jack的附加組。(如果其他用戶有寫權限,所建文件也是jack組)
2.由于加入SGID權限,用戶所建文件的組為jack,意味著jack組內任何成員都可以對5.txt文件進行讀寫操作。
SGID還有一種用法類似SUID:
[root@localhost ~]# ll /bin/cat #給cat設置sgid
-rwxr-sr-x. 1 root root 48568 May 11 16:59 /bin/cat
[root@localhost ~]# ll /etc/shadow #給shadow設置有root組有讀權限
—-rwx—. 1 root root 2899 Aug 2 14:51 /etc/shadow
[jack5@localhost ~]$ cat /etc/shadow #隨便使用一個用戶借用root組的權限
root:$6$zNiiCr8zbAa2xFVa$4Tw89HFHnREnLhhyK2Z/E.w4WlUEIgXR2RaY5bYPu1/f.A3QJF8mcFNaz4EnB7LAUQ/KXWYieQ2cZwhdnTV981:17001:0:99999:7:::
bin:*:15980:0:99999:7:::
STICKY:
功用:對于屬組或全局可寫的目錄,組內的所有用戶或系統上的所有用戶對在此目錄中都能創建新文件或刪除所有的已有文件,如果為此類目錄設置sticky權限,則每個用戶都能創建新文件,且只能刪除自己的文件。
管理文件的sticky權限:
chmod o+|-t FILE
展示位置:其它用戶的執行限位
如果其它用戶原本有執行權限,顯示為小寫t
否則,顯示為大寫T
系統上的/tmp和/var/tmp目錄默認均有sticky權限
[jack@localhost jack]$ ll -d #設置jack目錄擁有sticky權限,注意看t
drwxrwxrwt. 2 jack jack 4096 Aug 1 20:04 .
[jack4@localhost ~]$ id jack4 #用戶jack4為普通用戶,跟jack無任何關系
uid=4020(jack4) gid=4023(jack) groups=4023(jack)
[jack4@localhost jack]$ touch 4.txt #jack4用戶在jack目錄里建文件4.txt
[jack3@localhost jack]$ rm 4.txt #使用另一jack3賬戶對jack4所建文件4.txt進行刪除,失敗
rm: remove write-protected regular empty file `4.txt'? Y
rm: cannot remove `4.txt': Operation not permitted
實驗結論:
1.用戶在擁有t權限目錄中所建文件,其他用戶只能互相修改查看,無法刪除其他人所建文件,只能自己刪除自己的文件。
2.建立t權限目錄的用戶有權限刪除該目錄下的任何文件。
原創文章,作者:zebra930,如若轉載,請注明出處:http://www.www58058.com/27626