溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

linux中SUID,SGID與SBIT的奇妙用途詳解

發(fā)布時(shí)間:2020-09-03 12:20:49 來(lái)源:腳本之家 閱讀:122 作者:小菜鳥(niǎo)上校 欄目:服務(wù)器

前言 

linux對(duì)文件的權(quán)限管理簡(jiǎn)直是讓人嘆為觀止,又回顧了一下SUID,SGID和SBIT的作用,總結(jié)一下。

其實(shí)SUID和SGID的作用跟sudo是相似的。當(dāng)用戶(hù)A想執(zhí)行一個(gè)原本屬于用戶(hù)B的可執(zhí)行文件時(shí),若B的文件設(shè)置了suid位,則A在執(zhí)行時(shí)是以用戶(hù) B的身份來(lái)執(zhí)行。

SUID是Set UID的簡(jiǎn)稱(chēng),翻譯過(guò)來(lái)是設(shè)置用戶(hù)ID,感覺(jué)很別扭,還是覺(jué)得SUID最為簡(jiǎn)煉。它會(huì)出現(xiàn)在文件擁有者權(quán)限的執(zhí)行位上,具有這種權(quán)限的文件會(huì)在其執(zhí)行時(shí),使調(diào)用者暫時(shí)獲得該文件擁有者的權(quán)限。例如,使用如下命令:

ls -l /usr/bin/passwd

我們會(huì)得到如下的結(jié)果:

-rwsr-xr-x 1 root root 42824 Sep 13  2012 /usr/bin/passwd

可以看到,在文件擁有者的執(zhí)行位上出現(xiàn)為s而不是x,所以說(shuō)passwd這個(gè)程序是具有SUID權(quán)限的。我們直到在修改用戶(hù)密碼的時(shí)候,用的就是passwd這個(gè)命令,而我們又知道在linux下面,用戶(hù)密碼是存儲(chǔ)在/etc/shadow這個(gè)文件里面的。首先查看一下/etc/shadow這個(gè)文件的權(quán)限:

ls -l /etc/shadow

返回的結(jié)果如下:

-rw-r----- 1 root shadow 1138 Dec 13 20:00 /etc/shadow

由上面的結(jié)果,我們知道只有root可以往shadow文件中寫(xiě)入數(shù)據(jù),其他用戶(hù)連查看的權(quán)限都沒(méi)有。那我們平時(shí)是怎么修改密碼呢?沒(méi)錯(cuò),就是和SUID有關(guān)。當(dāng)我們使用passwd命令時(shí),就獲得了passwd的所有者即root的權(quán)限,進(jìn)而可以對(duì)shadow文件進(jìn)行寫(xiě)入操作。

使用SUID肯定滿(mǎn)足一下幾點(diǎn):

1.SUID只對(duì)二進(jìn)制文件有效

2.調(diào)用者對(duì)該文件有執(zhí)行權(quán)

3.在執(zhí)行過(guò)程中,調(diào)用者會(huì)暫時(shí)獲得該文件的所有者權(quán)限

4.該權(quán)限只在程序執(zhí)行的過(guò)程中有效

《鳥(niǎo)哥的linux私房菜》中,有一張圖特別能表示這個(gè)意思:

linux中SUID,SGID與SBIT的奇妙用途詳解

SGID即Set GID的縮寫(xiě),它出現(xiàn)在文件所屬組權(quán)限的執(zhí)行位上面,它對(duì)普通二進(jìn)制文件和目錄都有效。當(dāng)它作用于普通文件時(shí),和SUID類(lèi)似,在執(zhí)行該文件時(shí),用戶(hù)將獲得該文件所屬組的權(quán)限。當(dāng)SGID作用于目錄時(shí),意義就非常重大了。當(dāng)用戶(hù)對(duì)某一目錄有寫(xiě)和執(zhí)行權(quán)限時(shí),該用戶(hù)就可以在該目錄下建立文件,如果該目錄用SGID修飾,則該用戶(hù)在這個(gè)目錄下建立的文件都是屬于這個(gè)目錄所屬的組。

SBIT即Sticky Bit,它出現(xiàn)在其他用戶(hù)權(quán)限的執(zhí)行位上,它只能用來(lái)修飾一個(gè)目錄。當(dāng)某一個(gè)目錄擁有SBIT權(quán)限時(shí),則任何一個(gè)能夠在這個(gè)目錄下建立文件的用戶(hù),該用戶(hù)在這個(gè)目錄下所建立的文件,只有該用戶(hù)自己和root可以刪除,其他用戶(hù)均不可以。例如:

ls -ld /tmp

可以得到以下結(jié)果:

drwxrwxrwt 12 root root 12288 Dec 17 16:33 /tmp

可以看到最后一位為t,這說(shuō)明/tmp文件就是這種文件。

那么,如何設(shè)置上面所說(shuō)的三種權(quán)限呢?首先來(lái)介紹一點(diǎn)預(yù)備的知識(shí),用數(shù)字來(lái)表示權(quán)限:

4表示SUID
2表示SGID
1表示SBIT

如果兩個(gè)或三個(gè)權(quán)限同時(shí)存在時(shí),就將者寫(xiě)權(quán)限的值相加就是需要的結(jié)果了。利于SUID和SGID同時(shí)存在,則為6。下面可以看一下修改的例子:

chmod 4777 test

使test文件具有SUID權(quán)限,你可能已經(jīng)看明白了,就是在普通文件權(quán)限前面再加上這些特殊權(quán)限值就可以了。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI