LinuxDev 板


LINE

環境: ubuntu 11.04 首先我用帳號 styx, babe 各用 touch 產生了一個檔案: (放到 /tmp) -rw-r----- styx styx maury -rw-r----- babe babe mjb 接著在帳號 styx 下編譯以下程式: /* step1. gcc setuid-test.c -o suidtest step2. cd /tmp step3. cp ~/suidtest . */ #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> int main(void) { int uid, euid, fdmjb, fdmaury; int egid; uid = getuid(); euid = geteuid(); printf("uid = %d, euid = %d, egid = %d\n", uid, euid, getegid()); fdmjb = open("mjb", O_RDONLY); fdmaury = open("maury", O_RDONLY); printf("fdmjb = %d, fdmaury = %d\n", fdmjb, fdmaury); setuid(uid); printf("after setuid(%d): uid = %d, euid = %d, egid = %d\n", uid, getuid(), geteuid(), getegid()); fdmjb = open("mjb", O_RDONLY); fdmaury = open("maury", O_RDONLY); printf("fdmjb = %d, fdmaury = %d\n", fdmjb, fdmaury); setuid(euid); printf("after setuid(%d): uid = %d, euid = %d, egid = %d\n", euid, getuid(), geteuid(), getegid()); return 0; } 然後改變他的 suid 並且複製到 /tmp : chmod u+s suidtest 退出帳號 styx,改進入帳號 babe,執行 ./suidtest 得到結果: 註 styx, babe 的 id: uid=1004(babe) gid=1005(babe) groups=1005(babe) uid=1003(styx) gid=1004(styx) groups=1004(styx) /tmp$ ./suidtest uid = 1004, euid = 1003, egid = 1005 fdmjb = 3, fdmaury = 4 after setuid(1004): uid = 1004, euid = 1004, egid = 1005 fdmjb = 5, fdmaury = -1 after setuid(1003): uid = 1004, euid = 1003, egid = 1005 原本小弟預期第一次 open("mjb") == -1,因為 euid = styx,但是可能 因為 egid = babe 的緣故,造成 open("mjb") != -1,於是小弟又加上 sgid: chmod g+s suidtest 再次執行,這次的結果更驚奇了: uid = 1004, euid = 1003, egid = 1004 fdmjb = 3, fdmaury = 4 after setuid(1004): uid = 1004, euid = 1004, egid = 1004 fdmjb = 5, fdmaury = 6 after setuid(1003): uid = 1004, euid = 1003, egid = 1004 照道理說這次第一次 open("mjb") == -1 (因為 euid 與 egid 都是 styx), 怎麼會這樣呢!? 最後沒招了,只好: chmod g-s suidtest (先退回原本的狀態) chmod g-r mjb (-rw-r----- 變為 -rw-------) ./suidtest 最後這才是我一開始預期的結果: uid = 1004, euid = 1003, egid = 1005 fdmjb = -1, fdmaury = 3 after setuid(1004): uid = 1004, euid = 1004, egid = 1005 fdmjb = 4, fdmaury = -1 after setuid(1003): uid = 1004, euid = 1003, egid = 1005 請各位有空幫小弟看看,感恩! --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 171.25.193.131
1F:推 yvb:都是因為 groups 造成的, 但一般使用者又沒權限 setgroups() 08/29 22:19
2F:→ yvb:另外, fdmaury = 6 那邊因為你沒使用 setgid(), 只用 setuid() 08/29 22:21
3F:→ godspeedlee:我有用 chgrp 指令強迫變更 mjb 的 group,就達到我要 09/01 04:29
4F:→ godspeedlee:的效果了 09/01 04:30
5F:→ godspeedlee:fdmaury = 6,那個暫且不論,一開始euid與egid都已經是 09/01 04:31
6F:→ godspeedlee:styx,為什麼還能開啟babe的檔案(mjb)呢? 09/01 04:33
7F:推 yvb:你打命令 "id" 時會列出三項: id, gid, 和 groups 09/01 22:56
8F:→ yvb:那個 groups 稱做 supplementary groups 09/01 23:00
9F:→ yvb:只要存取的檔案, gid出現在其中, 就視做以該gid進行存取, 09/01 23:02
10F:→ yvb:因此而可以存取 mjb. 09/01 23:03
11F:→ godspeedlee:uid也有出現,那為什麼拿掉mjb group r屬性就不能存取 09/02 01:44
12F:→ godspeedlee:了呢? 09/02 01:44
13F:推 yvb:檔案的存取權限判斷: 09/02 21:02
14F:→ yvb:(1) 檔案 uid 等於 euid ==> 取得 user 存取權限 09/02 21:03
15F:→ yvb:(2) 否則, 檔案 gid 等於 egid, 或在 groups 中 ==> 09/02 21:05
16F:→ yvb: 取得 group 存取權限 09/02 21:05
17F:→ yvb:(3) 否則, 取得 others 存取權限. 09/02 21:05
18F:推 yvb:有 supplementary groups, 但沒有 supplementary users. 09/02 21:09
19F:→ yvb:不過, 要達到你要的權限存取, 在 file mode 為 -rw-r---- 時, 09/02 21:11
20F:→ yvb:Linux 還是有別的方式: 要使用 setfsuid() 和 setfsgid(). 09/02 21:12
21F:→ godspeedlee:babe只有primary group,沒有supplementary group 09/07 16:10
22F:→ godspeedlee:還是說supplementary包含了primary group 09/07 16:10
23F:推 yvb:不清楚是否有文件規範是否 supplementary 包含 primary group, 09/09 19:41
24F:→ yvb:但目前所使用的 login 程式, 都會叫用 initgroup(), 09/09 19:42
25F:→ yvb:將 primary group 設進 supplementary. 09/09 19:43
26F:→ yvb:更正, initgroups(), 09/09 19:44
27F:→ godspeedlee:謝謝,查了一下UNP,的確是如此 09/12 13:38







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP