SUID的應(yīng)用場(chǎng)景和簡(jiǎn)單見(jiàn)解

前言

在看到apue的進(jìn)程的時(shí)候,我發(fā)現(xiàn)一個(gè)叫suid的概念,也就是"設(shè)置用戶(hù)ID"。一開(kāi)始對(duì)這個(gè)概念十分陌生,單憑從字面來(lái)看確實(shí)不容易理解,后面通過(guò)查閱資料并且了解到它的一些應(yīng)用場(chǎng)景之后才逐步了解,本文就是簡(jiǎn)單記錄一下我對(duì)suid的個(gè)人見(jiàn)解。

其實(shí)要了解一個(gè)抽象東西最好的方法就是:找到它的應(yīng)用場(chǎng)景,并且獲取一個(gè)應(yīng)用的例子,通過(guò)例子來(lái)了解它。那么suid的應(yīng)用例子是什么呢?最典型的就是passwd了。

passwd是如何運(yùn)用suid的

相信有過(guò)一定開(kāi)發(fā)或者運(yùn)維經(jīng)驗(yàn)的都知道,passwd就是一個(gè)可以用于修改用戶(hù)密碼的linux工具,如果再深入了解一點(diǎn),就會(huì)知道這個(gè)工具其實(shí)是修改/etc/passwd這個(gè)文件的。讓我們先簡(jiǎn)單看一看/etc/passwd這個(gè)文件:

-rw-r--r-- 1 root root 1537 Jan 12 16:18 /etc/passwd

這個(gè)文件存儲(chǔ)的就是linux所有用戶(hù)的一些密碼信息,出于安全的要求,文件的所屬用戶(hù)和所屬組均是root,并且只能讓root去修改文件。

然而,作為一個(gè)普通用戶(hù),我就想改我自己的密碼,難道還得取得root權(quán)限或者說(shuō)讓root管理員給我們?nèi)バ薷拿艽a?這很明顯是不人性化的。

當(dāng)然,你可以想,那既然這樣也可以把其他用戶(hù)設(shè)置成可寫(xiě)嘛。那么這就問(wèn)題大了,如果這個(gè)用戶(hù)亂改怎么辦呢?因此最好的解決辦法就是我們開(kāi)發(fā)一個(gè)程序,這個(gè)程序去驗(yàn)證執(zhí)行用戶(hù)的修改密碼操作是否合法,如果合法則把它的新密碼寫(xiě)到/etc/passwd這個(gè)文件的對(duì)應(yīng)用戶(hù)中去。

但是我們又忽略了這么一點(diǎn),作為一個(gè)普通用戶(hù),我們確實(shí)可以執(zhí)行修改密碼程序,但是我們執(zhí)行時(shí)候得實(shí)際用戶(hù)id依然不是root,因此即使我們的操作合法,也不能讓這個(gè)程序去修改/etc/passwd文件,因?yàn)檫@個(gè)文件僅僅運(yùn)行root管理員去修改。

passwd很好的告訴我們應(yīng)該怎么解決這個(gè)問(wèn)題,且先看看passwd這個(gè)程序的信息:

-rwsr-xr-x 1 root root 47032 May 16  2017 /usr/bin/passwd*

我們知道第三個(gè)位置是執(zhí)行位,但很奇怪的是,這次執(zhí)行位不是常規(guī)的"x"而是"s"。其實(shí)這個(gè)"s"就是表示這個(gè)passwd程序具有suid的功能。因此,當(dāng)普通用戶(hù)執(zhí)行這個(gè)passwd程序的時(shí)候,它就具備了root的權(quán)限,當(dāng)具備了root權(quán)限的時(shí)候,當(dāng)然也能去修改/etc/passwd文件了,這么一來(lái),我們既讓普通用戶(hù)在非root權(quán)限下?lián)碛辛诵薷淖约好艽a的能力,也能最大限度的保證了整個(gè)系統(tǒng)的安全,可以說(shuō)是一舉兩得的。

總結(jié)

最后簡(jiǎn)單總結(jié)一句話(huà):suid就是允許用戶(hù)在執(zhí)行程序的時(shí)候擁有這個(gè)程序?qū)僦鞯臋?quán)限的一個(gè)機(jī)制,也可以理解為執(zhí)行程序的時(shí)候被屬主"靈魂上身",但執(zhí)行結(jié)束后又會(huì)"打回原形"了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容