日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2748 0

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

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


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

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


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

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

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

注:

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

?

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

?

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

?

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

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 山东省| 修武县| 工布江达县| 大竹县| 太湖县| 利津县| 固原市| 固阳县| 汉沽区| 伊春市| 三都| 阿尔山市| 文化| 金沙县| 贺兰县| 平舆县| 民县| 无锡市| 大渡口区| 伊川县| 孟津县| 洱源县| 淅川县| 巴彦淖尔市| 临夏县| 丽水市| 宁强县| 沽源县| 麻江县| 永靖县| 额尔古纳市| 鹰潭市| 威信县| 河北区| 会宁县| 湘西| 临西县| 乌兰县| 浦北县| 咸阳市| 东乌|