綠色資源網:您身邊最放(fàng)心(xīn)的安全下載站(zhàn)! 最新軟件|熱門排行|軟件分類|軟件專題(tí)|廠商大全

綠色資源網

技術教程
您的位置:首頁操作(zuò)係統(tǒng)linux → Linux係統UID和GID介紹

Linux係統UID和GID介紹

我要評論 2012/09/25 16:17:45 來源:綠色資源網 編輯:www.ynaad.com [ ] 評論:0 點擊:206次

一個文件都有一(yī)個所有者, 表示該文件是(shì)誰創建的. 同時, 該文件還(hái)有一個組編號(hào), 表示該文件所屬的組, 一(yī)般為文件(jiàn)所(suǒ)有者所屬的組.

如果(guǒ)是一個可執行(háng)文件, 那麽(me)在執行時, 一(yī)般該文(wén)件隻(zhī)擁有調用(yòng)該文件的用戶具(jù)有的權限. 而setuid, setgid 可以(yǐ)來改(gǎi)變(biàn)這種設置.

setuid: 設置使(shǐ)文件在執行階段具有文件所有者的權限. 典型的文件是 /usr/bin/passwd. 如果一般(bān)用戶執行該文(wén)件, 則在執(zhí)行過程中(zhōng), 該文件可以獲得root權限, 從(cóng)而(ér)可以更改用戶的密碼.

setgid: 該(gāi)權限隻對目錄有效. 目錄被設置該位後, 任何用(yòng)戶(hù)在(zài)此目錄下創建的文件都具有和該目錄所屬的組相同的組.

sticky bit: 該位可以理解為防刪除位. 一個文件是否可以被某用戶刪除, 主要取決於該文件所屬的組是否對該用戶具(jù)有寫權限. 如果沒有寫權限, 則這個目錄下的所有文件都不能被刪除(chú), 同時也不能添加新的文(wén)件. 如果希(xī)望用戶(hù)能夠添加文件(jiàn)但(dàn)同時不能刪除文件, 則可以對文件使用sticky bit位. 設置該位後, 就算用(yòng)戶(hù)對目錄具有寫權限, 也不能(néng)刪除該文件.

下麵說一下如何操作這些標誌:

操作這些標誌與操作文件權限的命(mìng)令是一樣的, 都是 chmod. 有兩種方法來操作,
1) chmod u+s temp -- 為temp文(wén)件加上setuid標誌. (setuid 隻對文件有效)
chmod g+s tempdir -- 為tempdir目錄加上setgid標誌 (setgid 隻對目錄有效)
chmod o+t temp -- 為temp文件加(jiā)上sticky標誌 (sticky隻(zhī)對文件有效(xiào))
2) 采用八進製方式. 對(duì)一般文件通過三組八進(jìn)製數字來置標誌, 如 666, 777, 644等. 如果(guǒ)設置這些特殊(shū)標誌, 則在這組數字之外外加一組八進製(zhì)數字. 如 4666, 2777等. 這一組八進製數字三(sān)位(wèi)的意義如下(xià):
abc
a - setuid位, 如果該位為1, 則表示設置setuid
b - setgid位, 如果該位為1, 則表示設置setgid
c - sticky位, 如果該位為1, 則表示設置sticky

設置完這些標誌後, 可以用 ls -l 來查看. 如果有這些標誌, 則會在原來的執行標誌位(wèi)置上顯示(shì). 如
rwsrw-r-- 表示有setuid標誌
rwxrwsrw- 表示有setgid標誌
rwxrw-rwt 表示有sticky標誌
那(nà)麽原來(lái)的執行標誌x到哪裏去了呢(ne)? 係統是這樣規定的, 如果本來在(zài)該位上有x, 則這些特殊標誌顯示為小寫字母 (s, s, t). 否則, 顯示為大寫字母 (S, S, T)

要(yào)刪除一個文件,你不(bú)一定要(yào)有(yǒu)這個文(wén)件的寫權限,但你一定要有(yǒu)這個文件的上級目錄的寫權限。也(yě)就是說,你即使沒有一個文件的寫權限,但(dàn)你有這個文件的上級目錄的寫權限,你也可以把(bǎ)這個(gè)文件給刪除,而如果沒有一個目錄的寫權(quán)限,也就不能在這個目錄下創建文件。
如何才能使一個目錄既可以讓任何用戶寫入文件,又不讓用戶刪除這個目錄下他人的文件,sticky就是能起到這個作(zuò)用(yòng)。stciky一般隻用在目錄上,用在文件上起不到什麽作用。
在一個目錄上(shàng)設(shè)了(le)sticky位(wèi)後,(如/tmp,權限為1777)所有的用戶都可以在這個目錄下創建文件,但隻能刪除自己創建的文件,這就對所(suǒ)有用戶(hù)能寫的目錄下的用戶文件啟到了保護的作用。(我當時/tmp沒有設sticky位,而在文件上設了,這(zhè)也就(jiù)是為什(shí)麽我為什麽設了(le)sticky位,還能刪除自己創建的(de)文件(jiàn)的原因了)

--------------------------------------------------------------------------------

suid/sgid

要了解 suid/sgid, 必需先(xiān)了解 process 及 permission.
我們需(xū)知道: 每(měi)個 process 都有其 effective uid/gid , 以決定其在傳統(tǒng) unix filesystem 中獲得(dé)的實際 permission .
再, process 是(shì)由(yóu) binary 產生的, 而 binary 是從 shell / shell script 載入執行(háng).
在正(zhèng)常的情況下, process 的 effective uid/gid 是從 parent 繼承, 或簡單(dān)說(shuō)是與(yǔ) shell 的 uid/gid 一樣。
shell 的 uid/gid 則是根據 /etc/passwd 的第 3 與第 4 兩位決定.
當我(wǒ)們有了(le)以上的概(gài)念之後, 再來看 suid 對 effective uid/gid 的影響:
若 binary file 帶有 suid/sgid 的時候, 其 effective id 就(jiù)不是從 parent 那邊繼承, 而是以(yǐ) binary file 本身的 user/group 為準。

舉例而言, 若一個(gè) prog1 的(de) user/group 都是 root , 但沒設(shè) suid/sgid ,
那當(dāng)一個uid(500)/gid(500) 的(de) parent process 執行(háng)這個 prog1 的話,
那(nà) effective uid/gid 就是 500 ...
但若 prog1 設了 suid/sgid 後(hòu), 那其 effective uid/gid 就是 root !

一旦這個 process effective 是 root 的話, 那它對 file system 的 permission 就不受任何限製(zhì)了.
因(yīn)此(cǐ)我才在前(qián)麵提到木馬程式與病毒的例子...
試(shì)想一下: 若病毒(dú)的 user/group 被(bèi)設為 root, 然後被一(yī)般 user 執行時,
suid/sgid 的有與無將導致什麽(me)不同結果?

好了, 由於 suid/sgid 在係統上有其存在的必要性(如 /usr/bin/passwd 與 /etc/shadow 為(wéi)例),
但(dàn)同(tóng)時又有極大的殺傷力, 在應用上要(yào)異常小心!
因此, bash shell script 在先天上不支援 suid/sgid .
perl 亦如此, 除非額外再安裝 suid-perl ....


--------------------------------------------------------------------------------


uid gid euid egid
root 0 0

test 500 500

tset.shell 500 500 500 500 登陸後的shell

test.passwd.process 500 500 0 500 fork後
(-r-s--x--x)

test用戶fork binary文(wén)件passwd後,test屬於others,擁有該文件的x權利,因為設置了(le)suid,所以fork出來的(de)進程(passwd.process)的euid=

文件(passwd)的owner的uid 也就是

passwd.process.euid=passwd.owner.uid=0

euid和guid是用(yòng)來進程passwd.process發生讀,寫,執行文件shadow的時候確認訪問權限的.


-r-------- 1 root root 855 Sep 4 10:58 /etc/shadow ( passwd.uid=0 有r權限 )

文(wén)件shadow.owner.uid為0擁有r權限 因為passwd.process.euid=shadow.ower.uid=0所以由test用戶產生的進程passwd.process擁有文件

shadow的(de)r權限

-r-s--x--x 1 root root 19336 Sep 7 2004 /usr/bin/passwd

關鍵詞:Linux

閱讀本文後您有什(shí)麽感想? 已有 人給出評價!

  • 0 歡(huān)迎喜(xǐ)歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡