今天一直在做Samba服務(wù)的配置,深感權(quán)限控制的難度。文件許可機制是Linux系統(tǒng)的一大特色。除了我們現(xiàn)在熟知的read (R)、write (W)和execute (X)權(quán)限之外,還有三種特殊權(quán)限,分別是:setuid、setgid和stick bit (sticky bit)。
1.setuid和setgid解釋
看看它在系統(tǒng)中的什么地方被使用。以/etc/passwd和/usr/bin/passwd為例:
[普通]查看普通副本
[root @ salve 1 school]# ll/etc/passwd/usr/bin/passwd
-rw-r - r - 1 root root 2005年4月23日01:25 /etc/passwd
-rwsr-xr-x 1 root root 23420 2010年8月11日/usr/bin/passwd
[root@Salve1 school]#
分析一下,/etc/passwd的權(quán)限是-rw-r-r-即文件的所有者有讀寫的權(quán)限,而用戶組成員和其他成員只有查看的權(quán)限。我們知道,在系統(tǒng)中,我們需要修改用戶的密碼。root用戶和普通用戶都可以使用命令/usr/bin/passwd someuser來修改這個文件/etc/passwd。root本身對/etc/passwd有寫權(quán)限,這是可以理解的。普通用戶呢?這里使用的是setuid。setuid的作用是“讓執(zhí)行命令的用戶以命令所有者的權(quán)限執(zhí)行”,即普通用戶在執(zhí)行passwd時會擁有root的權(quán)限,這樣就可以修改文件/etc/passwd。它的logo是:S,會出現(xiàn)在X的地方,比如:-RWSR-XR-X . setgid的意思和它是一樣的,就是讓執(zhí)行文件的用戶在文件所屬組的權(quán)限下執(zhí)行。
2.粘性鉆頭(粘性鉆頭)
看看它在系統(tǒng)中的什么地方被使用。以/tmp為例:
[普通]查看普通副本
[root@Salve1 /]# ll -d /tmp
drwxrwxrwt 13 root root 4096 Apr 23 02:06/tmp
[root@Salve1 /]#
我們知道/tmp是系統(tǒng)的臨時文件目錄,所有用戶都擁有該目錄下的所有權(quán)限,也就是說可以在該目錄下隨意創(chuàng)建、修改、刪除文件。如果用戶A在這個目錄中創(chuàng)建了一個文件,而用戶B刪除了它,我們不能允許這樣做。為了實現(xiàn)這一目標,出現(xiàn)了棒形鉆頭的概念。這是目錄。如果目錄設(shè)置了stick bit,那么這個目錄下的文件可以被創(chuàng)建者和root用戶刪除和修改,其他用戶不能碰別人的文件。這就是Stickbit的功能。
3.以上特殊權(quán)限如何設(shè)置?
Modu XXX #設(shè)置setuid權(quán)限
更改s XXX #設(shè)置setgid權(quán)限
modo txxx #設(shè)置目錄的stick位權(quán)限。
Chmod 4775 xxx #設(shè)置setuid權(quán)限
Chmod 2775 xxx #設(shè)置setgid權(quán)限
Chmod 1775 xxx #設(shè)置目錄的stick位權(quán)限。
4.注意:有時候你設(shè)置了S或者T權(quán)限,會發(fā)現(xiàn)變成了S或者T,這是因為你沒有在那個位置給它X(可執(zhí)行)權(quán)限。在這種情況下,這樣的設(shè)置將不會有效。可以先給它X權(quán)限,再給它S或T權(quán)限。