Linux Process Credentials

Process Credentials包含一系列的ID:

  • real user ID & real group ID
  • effective user ID & effective group ID
  • saved set-user-ID & saved set-group-ID
  • file-system user ID & file-system group ID
  • supplementary group IDs
real user ID & real group ID

real user ID和real gourp ID確定了進程所屬的用戶與組从铲。在登陸過程中(只討論終端登陸情況)锚国,init進程調(diào)用getty完成用戶名與密碼的輸入后管嬉,login進程會從/etc/passwd文件中讀取相應(yīng)用戶密碼記錄的第三字段(UID)和第四字段(GID)示绊,并調(diào)用setuid()設(shè)定登陸成功后對應(yīng)Shell進程的real user ID與real group ID柬采。即real user ID(real group ID)用于標識當前用戶(組)是誰盏档。
可使用logname命令獲取real user ID:

┌─[peven@Arch] - [~] - [Sat Dec 01, 16:03]
└─[$] <> logname
peven
effective user ID & effective group ID

一般而言旅赢,effective user ID(effective group ID)是與real user ID(real group ID)相同的谷朝,但當我們的程序需要額外的權(quán)限去訪問他們沒有權(quán)限訪問的資源時斜姥,他們就需要將自己的user ID或group ID改為一個具有適當權(quán)限的ID(effective user/group ID)鸿竖。這可以通過調(diào)用setuid()setgid()來實現(xiàn)铸敏。
effective user ID 可以通過whoami命令來查看:

┌─[peven@Arch] - [~] - [Sat Dec 01, 16:18]
└─[$] <> whoami
peven
┌─[peven@Arch] - [~] - [Sat Dec 01, 16:18]
└─[$] <> su #切換為root用戶
Password: 
[root@Arch peven]# logname #可以看到當前Shell的real user ID仍為peven
peven
[root@Arch peven]# whoami #effctive user ID變成了root
root
saved set-user-ID & saved set-group-ID

在設(shè)計程序時缚忧,應(yīng)當遵守最小權(quán)限準則,以減少惡意用戶試圖欺騙我們的程序以非預(yù)期的方式使用其特權(quán)而損害安全性的可能性杈笔。saved set-user-ID(saved set-group-ID)是與set-user-ID(set-group-ID)程序結(jié)合使用的闪水。

此名稱中的saved保存的實際是effective user ID(effective group ID)。

  • 若可執(zhí)行文件的set uid/gid權(quán)限位開啟(eg. chmod u+s a.out)蒙具,則將進程的effective user/group ID置為可執(zhí)行文件的屬主球榆。否則朽肥,進程的effective user/group ID將保持不變。
  • 無論可執(zhí)行文件的set /uid/gid權(quán)限位是否開啟持钉,saved set-user-ID(saved set-group-ID)對effective user/group ID值的復(fù)制都會進行衡招。

比如我們有一個程序,其作用是打印real user ID每强,effective user ID以及saved set-user-ID:

/* res.c */
#define _GNU_SOURCE        
#include <unistd.h>
#include <stdio.h>

int main(void)
{
        uid_t ruid, euid, suid;
        getresuid(&ruid, &euid, &suid);
        printf("real user ID: %d\neffective user ID: %d\nsaved set-user-ID: %d\n", ruid, euid, suid);
        return 0;
}

其權(quán)限為:

-rwxr-xr-x 1 peven users 17K Dec  1 17:17 res.o

編譯運行:

  • 在未開啟set uid/gid權(quán)限位時蚁吝,以普通用戶運行:
real user ID: 1000
effective user ID: 1000
saved set-user-ID: 1000

root用戶:

real user ID: 0
effective user ID: 0
saved set-user-ID: 0
  • 開啟set uid/gid權(quán)限位后(chmod u+s res.o),普通用戶:
real user ID: 1000
effective user ID: 1000
saved set-user-ID: 1000

root用戶:

real user ID: 0
effective user ID: 1000
saved set-user-ID: 1000
file-system user ID & file-system group ID.

file-system user/group ID始見于Linux1.2版本舀射,當時如果某進程甲的effective user ID等同于某進程乙的real user ID或effective user ID窘茁,那么甲就可以向乙發(fā)送信號。file-system user/group ID就是為了防范這一風險而生的脆烟。不過從Linux2.0版本起山林,Linux開始在信號發(fā)送權(quán)限方面遵循SUSv3所強制規(guī)定的規(guī)則,且這些規(guī)則不再涉及目標進程的effective user ID邢羔。這樣看來驼抹,file-system user/group ID在今天已經(jīng)可以廢除了。但為了保持軟件的兼容性拜鹤,還是將其保留了下來框冀。

supplementary group IDs

supplementary group IDs用于標識進程所屬的若干附加的組。supplementary group IDs會配合file-system ID和effective ID來進行進程是否有訪問某些資源權(quán)限的判定敏簿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末明也,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惯裕,更是在濱河造成了極大的恐慌温数,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜻势,死亡現(xiàn)場離奇詭異撑刺,居然都是意外死亡,警方通過查閱死者的電腦和手機握玛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門够傍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挠铲,你說我怎么就攤上這事冕屯。” “怎么了市殷?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵愕撰,是天一觀的道長。 經(jīng)常有香客問我,道長搞挣,這世上最難降的妖魔是什么带迟? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮囱桨,結(jié)果婚禮上仓犬,老公的妹妹穿的比我還像新娘。我一直安慰自己舍肠,他們只是感情好搀继,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著翠语,像睡著了一般叽躯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肌括,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天点骑,我揣著相機與錄音,去河邊找鬼谍夭。 笑死黑滴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的紧索。 我是一名探鬼主播袁辈,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼珠漂!你這毒婦竟也來了晚缩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤甘磨,失蹤者是張志新(化名)和其女友劉穎橡羞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體济舆,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年莺债,在試婚紗的時候發(fā)現(xiàn)自己被綠了滋觉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡齐邦,死狀恐怖椎侠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情措拇,我是刑警寧澤我纪,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響浅悉,放射性物質(zhì)發(fā)生泄漏趟据。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一术健、第九天 我趴在偏房一處隱蔽的房頂上張望汹碱。 院中可真熱鬧,春花似錦荞估、人聲如沸咳促。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跪腹。三九已至,卻和暖如春飞醉,著一層夾襖步出監(jiān)牢的瞬間尺迂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工冒掌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留噪裕,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓股毫,卻偏偏與公主長得像膳音,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铃诬,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容