黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

實(shí)際用戶id,有效用戶id,保存的設(shè)置用戶id

系統(tǒng) 2895 0

一個(gè)進(jìn)程的 real user ID 是指運(yùn)行此進(jìn)程的用戶角色的 ID。
一個(gè)進(jìn)程的 effective user ID 是指此進(jìn)程目前實(shí)際有效的用戶 ID(也就是權(quán)限的大小),effective user ID 主要用來校驗(yàn)權(quán)限時(shí)使用,比如打開文件、創(chuàng)建文件、修改文件、kill 別的進(jìn)程,等等。
如果一個(gè)進(jìn)程是以 root 身份來運(yùn)行的,那么上面這兩個(gè) ID 可以用 setuid/seteuid 隨便修改,想怎么改就怎么改,改來改去都可以。
但是如果一個(gè)進(jìn)程是以普通用戶身份來運(yùn)行的,那么上面這兩個(gè) ID 一般來說是相同的,并且也不能隨便修改。只有一種情況例外:此進(jìn)程的可執(zhí)行文件的權(quán)限標(biāo)記中,設(shè)置了“設(shè)置用戶 ID”位!
在命令行中,設(shè)置一個(gè)可執(zhí)行文件的“設(shè)置用戶 ID”位的最簡(jiǎn)單的方法,就是用

  1. chmod +s /path/to/file
復(fù)制代碼


這個(gè)命令。
一旦用了這個(gè)命令之后,再執(zhí)行這個(gè)文件,
那么生成的進(jìn)程的 effective user ID 就變成了這個(gè)可執(zhí)行文件的 owner user ID(屬主用戶 ID),
而 real user ID 仍然是啟動(dòng)這個(gè)程序時(shí)所用的用戶的 ID。
打個(gè)比方來說,如果有這樣的一個(gè)文件:

-rw s r- s r-x 1 susesuse susesuse 7902 2006-08-31 13:22 tuid


注意這個(gè)文件已經(jīng)用 chmod +s 命令設(shè)置過“設(shè)置用戶 ID”位了。
然后我用 flw 這個(gè)用戶來執(zhí)行它,那么生成的進(jìn)程它的 real user ID 就是 flw(因?yàn)槲沂怯?flw 運(yùn)行的),但是 effective user ID 就變成了 susesuse(因?yàn)檫@個(gè)可執(zhí)行文件被設(shè)置了“設(shè)置用戶 ID”位,并且它的 owner user ID 是 susesuse)。
這時(shí),這個(gè)進(jìn)程實(shí)際上就有兩個(gè)用戶權(quán)限了。只不過目前生效的是 susesuse,因此它目前能夠且只能夠操作 susesuse 用戶的文件,如果現(xiàn)在我又想要操作 flw 用戶的文件怎么辦?
很簡(jiǎn)單,只需要 seteuid( getuid() ) 就可以了。執(zhí)行完這句之后,effective user ID 就變成和 real user ID 一樣了,都變成 flw 了。

可是如果過了一會(huì)兒我又想要變回來怎么辦?因?yàn)?effective user ID 和 real user ID 此時(shí)都變成了 flw 了,所以操作系統(tǒng)必須得有一個(gè)地方保存住原來的“設(shè)置用戶 ID”(也就是可執(zhí)行文件的 owner user ID),不然等你再想要 seteuid 的時(shí)候,操作系統(tǒng)就不知道你有沒有那個(gè)權(quán)利了。(總不能再去訪問一次文件系統(tǒng)吧?那樣也太沒有效率了)

操作系統(tǒng)為了能夠在設(shè)置了 seteuid 之后,再次設(shè)置回來,所以特地將原來的“設(shè)置用戶 ID”保存下來了,這個(gè)保存下來的設(shè)置用戶 ID 自然就叫做“保存的設(shè)置用戶 ID”

注:

 setuid函數(shù)設(shè)置實(shí)際用戶ID和有效用戶ID。Linux的setuid函數(shù)和Unix中的setuid函數(shù)的行為是不同的。在Linux中, setuid(uid)函數(shù)的執(zhí)行步驟為:(1)如果由普通用戶調(diào)用,將當(dāng)前進(jìn)程的有效ID設(shè)置為uid. (2)如果由有效用戶ID符為0的進(jìn)程調(diào)用,則將真實(shí),有效和已保存用戶ID都設(shè)置為uid.

?

  在Unix中.setuid(uid)函數(shù)的行為為: (1)如果進(jìn)程沒有超級(jí)用戶特權(quán),且uid等于實(shí)際用戶ID或已保存用戶ID,則將有效的用戶ID設(shè)置為uid.否則返回錯(cuò)誤.(2)如果進(jìn)程是有超級(jí)用戶特權(quán),則將真實(shí)、有效和已保存用戶表示符都設(shè)置為uid.如果兩個(gè)條件都不滿足,則設(shè)置errno為EPERM。

?

  函數(shù)在執(zhí)行成功的時(shí)候返回0,在出錯(cuò)的時(shí)候返回-1.

?

參考: http://blog.csdn.net/felix_vip/article/details/7565703

http://baike.baidu.com/view/3999335.htm

實(shí)際用戶id,有效用戶id,保存的設(shè)置用戶id


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論