亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 服務(wù)器 > Linux服務(wù)器 > 正文

詳解Linux Namespace之User

2024-09-05 23:05:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

User namespace 是 Linux 3.8 新增的一種 namespace,用于隔離安全相關(guān)的資源,包括 user IDs and group IDs,keys, 和 capabilities。同樣一個(gè)用戶的 user ID 和 group ID 在不同的 user namespace 中可以不一樣(與 PID nanespace 類似)。換句話說(shuō),一個(gè)用戶可以在一個(gè) user namespace 中是普通用戶,但在另一個(gè) user namespace 中是超級(jí)用戶。

User namespace 可以嵌套(目前內(nèi)核控制最多32層),除了系統(tǒng)默認(rèn)的 user namespace 外,所有的 user namespace 都有一個(gè)父 user namespace,每個(gè) user namespace 都可以有零到多個(gè)子 user namespace。 當(dāng)在一個(gè)進(jìn)程中調(diào)用 unshare 或者 clone 創(chuàng)建新的 user namespace 時(shí),當(dāng)前進(jìn)程原來(lái)所在的 user namespace 為父 user namespace,新的 user namespace 為子 user namespace。

說(shuō)明:本文的演示環(huán)境為 ubuntu 16.04。

創(chuàng)建 user namespace

我們可以通過(guò) unshare 命令的 --user 選項(xiàng)來(lái)創(chuàng)建新的 user namespace:

$ unshare -user -r /bin/bash

Linux,Namespace,User

通過(guò) -r 參數(shù),我們把新的 user namespace 中的 root 用戶映射到了外面的 nick 用戶(接下來(lái)會(huì)介紹映射相關(guān)的概念)。在新的 user namespace 中,root 用戶是有權(quán)限創(chuàng)建其它的 namespace 的,比如 uts namespace。這是因?yàn)楫?dāng)前的 bash 進(jìn)程擁有全部的 capabilities:

Linux,Namespace,User

下面我們創(chuàng)建一個(gè)新的 uts namespace 試試:

$ unshare --uts /bin/bash

Linux,Namespace,User

我們看到,新的 uts namespace 被順利的創(chuàng)建了。這是因?yàn)槌?user namespace 外,創(chuàng)建其它類型的 namespace 都需要 CAP_SYS_ADMIN 的 capability。當(dāng)新的 user namespace 創(chuàng)建并映射好 uid、gid 了之后, 這個(gè) user namespace 的第一個(gè)進(jìn)程將擁有完整的所有 capabilities,意味著它就可以創(chuàng)建新的其它類型 namespace。

其實(shí)沒(méi)有必要把上面的操作(創(chuàng)建兩個(gè) namespace)分成兩步,我們可以通 unshare 一次創(chuàng)建多個(gè) namespace:

Linux,Namespace,User

在 unshare 的實(shí)現(xiàn)中,其實(shí)就是傳入了 CLONE_NEWUSER | CLONE_NEWUTS,大致如下:

unshare(CLONE_NEWUSER | CLONE_NEWUTS);

在上面這種情況下,內(nèi)核會(huì)保證 CLONE_NEWUSER 先被執(zhí)行,然后執(zhí)行剩下的其他 CLONE_NEW*,這樣就使得不用 root 用戶而創(chuàng)建新的容器成為可能,這條規(guī)則對(duì)于clone 函數(shù)也同樣適用。

理解 UID 和 GID 的映射

在前面的演示中我們提到了用戶在 user namespace 之間的映射,下面我們同樣通過(guò)演示來(lái)理解映射是什么。我們先查看下當(dāng)前用戶的 ID 和 user namespace 情況:

Linux,Namespace,User

然后執(zhí)行 unshare --user /bin/bash 命令創(chuàng)建一個(gè)新的 user namespace,注意這次沒(méi) -r 參數(shù):

$ unshare --user /bin/bash

Linux,Namespace,User

在新的 user namespace 中,當(dāng)前用戶變成了 nobody,并且 ID 也變成了 65534。

這是因?yàn)槲覀冞€沒(méi)有映射父 user namespace 的 user ID 和 group ID 到子 user namespace 中來(lái),這一步是必須的,因?yàn)檫@樣系統(tǒng)才能控制一個(gè) user namespace 里的用戶在其他 user namespace 中的權(quán)限(比如給其它 user namespace 中的進(jìn)程發(fā)送信號(hào),或者訪問(wèn)屬于其它 user namespace 掛載的文件)。

如果沒(méi)有映射,當(dāng)在新的 user namespace 中用 getuid() 和 getgid() 獲取 user ID 和 group ID 時(shí),系統(tǒng)將返回文件 /proc/sys/kernel/overflowuid 中定義的 user ID 以及 proc/sys/kernel/overflowgid 中定義的 group ID,它們的默認(rèn)值都是 65534。也就是說(shuō)如果沒(méi)有指定映射關(guān)系的話,會(huì)默認(rèn)會(huì)把 ID 映射到 65534。

下面我們來(lái)完成 nick 用戶在新的 user namespace 中的映射。

映射 ID 的方法就是添加映射信息到 /proc/PID/uid_map 和 /proc/PID/gid_map (這里的 PID 是新 user namespace 中的進(jìn)程 ID,剛開(kāi)始時(shí)這兩個(gè)文件都是空的)文件中。這兩個(gè)文件中的配置信息的格式如下(每個(gè)文件中可以有多條配置信息):

ID-inside-ns ID-outside-ns length

比如 0 1000 500 這條配置就表示父 user namespace 中的 1000~1500 映射到新 user namespace 中的 0~500。

對(duì) uid_map 和 gid_map 文件的寫(xiě)入操作有著嚴(yán)格的權(quán)限控制,簡(jiǎn)單點(diǎn)說(shuō)就是:這兩個(gè)文件的擁有者是創(chuàng)建新的 user namespace 的用戶,所以和這個(gè)用戶在一個(gè) user namespace 中的 root 賬號(hào)可以寫(xiě);這個(gè)用戶自己是否有寫(xiě) map 文件的權(quán)限還要看它有沒(méi)有 CAP_SETUID 和 CAP_SETGID 的 capability。注意:只能向 map 文件寫(xiě)一次數(shù)據(jù),但可以一次寫(xiě)多條,并且最多只能 5 條。

我們把剛才打開(kāi)的 shell 窗口稱為第一個(gè) shell 窗口開(kāi)始執(zhí)行用戶的映射操作(把用戶 nick 映射為新 user namespace 中的 root)。

第一步,先在第一個(gè) shell 窗口中查看當(dāng)前進(jìn)程的 ID:

Linux,Namespace,User

第二步,新打開(kāi)一個(gè) shell 窗口,我稱之為第二個(gè) shell 窗口。查看進(jìn)程 3049 的映射文件屬性:

Linux,Namespace,User

用戶 nick 是這兩個(gè)文件的所有者,讓我們嘗試向這兩個(gè)文件寫(xiě)入映射信息:

Linux,Namespace,User

看上去很奇怪呀,明明是文件的所有者,卻沒(méi)有權(quán)限向文件中寫(xiě)入內(nèi)容!其實(shí)根本的原因在于當(dāng)前的 bash 進(jìn)程沒(méi) CAP_SETUID 和 CAP_SETGID 的權(quán)限:

Linux,Namespace,User

下面我們?yōu)?/bin/bash 程序設(shè)置相關(guān)的 capabilities:

 

復(fù)制代碼代碼如下:
$ sudo setcap cap_setgid,cap_setuid+ep /bin/bash

 

$ sudo setcap cap_setgid,cap_setuid+ep /bin/bash

然后重新加載 bash,就可以看到相應(yīng)的 capabilities 了:

Linux,Namespace,User

現(xiàn)在重新向 map 文件寫(xiě)入映射信息:

$ echo '0 1000 500' > /proc/3049/uid_map$ echo '0 1000 500' > /proc/3049/gid_map

這次的寫(xiě)入成功了。后面就不需要我們手動(dòng)寫(xiě)入映射信息了,所以我們通過(guò)下面的命令把 /bin/bash 的 capability 恢復(fù)為原來(lái)的設(shè)置:

$ sudo setcap cap_setgid,cap_setuid-ep /bin/bash

Linux,Namespace,User

第三步,回到第一個(gè) shell 窗口

重新加載 bash,并執(zhí)行 id 命令:

Linux,Namespace,User

當(dāng)前用戶已經(jīng)變成了 root(新的 user namespace 中的 root 用戶)。在看看當(dāng)前 bash 進(jìn)程具有的 capability:

Linux,Namespace,User

0000003fffffffff 表示當(dāng)前運(yùn)行的 bash 擁有所有的 capability。

第四步,在第一個(gè) shell 窗口中

查看 /root 目錄的訪問(wèn)權(quán)限:

Linux,Namespace,User

沒(méi)權(quán)限??!嘗試修改主機(jī)的名稱:

Linux,Namespace,User

依然是沒(méi)有權(quán)限啊!看來(lái)這個(gè)新 user namespace 中的 root 用戶在父 user namespace 里面不好使。這也正是 user namespace 所期望達(dá)到的效果,當(dāng)訪問(wèn)其它 user namespace 里的資源時(shí),是以其它 user namespace 中的相應(yīng)用戶的權(quán)限來(lái)執(zhí)行的,比如這里 root 對(duì)應(yīng)父 user namespace 的用戶是 nick,所以改不了系統(tǒng)的 hostname。

普通用戶 nick 沒(méi)有修改 hostname 的權(quán)限,那把默認(rèn)的 user namespace 中的 root 用戶映射為子 user namespace 中的 root 用戶后可以修改 hostname 嗎?答案是,不行!那是因?yàn)椴还茉趺从成洌?dāng)用子 user namespace 的用戶訪問(wèn)父 user namespace 的資源的時(shí)候,它啟動(dòng)的進(jìn)程的 capability 都為空,所以這里子 user namespace 的 root 用戶在父 user namespace 中就相當(dāng)于一個(gè)普通的用戶。

User namespace 與其它 namespace 的關(guān)系

Linux 下的每個(gè) namespace,都有一個(gè) user namespace 與之關(guān)聯(lián),這個(gè) user namespace 就是創(chuàng)建相應(yīng) namespace 時(shí)進(jìn)程所屬的 user namespace,相當(dāng)于每個(gè) namespace 都有一個(gè) owner(user namespace),這樣保證對(duì)任何 namespace 的操作都受到 user namespace 權(quán)限的控制。這也是為什么在子 user namespace 中設(shè)置 hostname 失敗的原因,因?yàn)橐薷牡?uts namespace 屬于的父 user namespace,而新 user namespace 的進(jìn)程沒(méi)有老 user namespace 的任何 capabilities。

以 uts namespace 為例,在 uts_namespace 的結(jié)構(gòu)體中有一個(gè)指向 user namespace 的指針,指向它所屬的 user namespace(筆者查看的 v4.13內(nèi)核,uts_namespace 結(jié)構(gòu)體的定義在 /include/linux/utsname.h 文件中):

Linux,Namespace,User

其它 namespace 的定義也是類似的。

總結(jié)

相對(duì)其它的 namespace 而言,user namespace 稍顯復(fù)雜。這是由其功能決定的,涉及到權(quán)限管理的內(nèi)容時(shí),事情往往會(huì)變得不那么直觀。筆者在本文中也只是介紹了 user namespace 的基本概念,更多豐富有趣的內(nèi)容還有待大家自行發(fā)掘。

參考:

user namespace man page
Namespaces in operation, part 5: User namespaces
Namespaces in operation, part 6: more on user namespaces
Linux capabilities

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到服務(wù)器教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
男同在线观看| 99九九99九九九视频精品| 尤物视频在线观看| 色素色在线综合| 日本按摩中出| 亚洲一区第一页| 亚洲高清视频的网址| 91日本在线观看| 亚洲丝袜美腿一区| 久久久久成人精品| 国产日产一区二区| 欧美成人三级在线视频| 国产又大又粗又硬| 中文字幕在线永久| 欧美成人三级在线播放| 国产三级国产精品国产国在线观看| 久久久久91| 成年美女网站| 亚洲一区av在线| 天天干天天爽天天操| 色屁屁www国产馆在线观看| 九九九在线观看视频| 91麻豆一区二区| 最近中文字幕免费mv视频多少集| av老司机免费在线| 热久久美女精品天天吊色| 在线精品观看国产| 又黄又免费的网站| 欧美精彩视频一区二区三区| 国内精品亚洲| 亚洲国产综合av| 欧洲性视频在线播放| 国产精品白丝av嫩草影院| 亚洲国产精彩视频| 在线影视一区| 欧美变态tickle挠乳网站| 免费黄色网址网站| 亚洲日本韩国在线| 国产精品黄色影片导航在线观看| 色婷婷av久久久久久久| 日韩欧美自拍| 国内一区二区三区在线视频| 亚洲精品精品亚洲| 久久久久美女| 两个人免费视频观看日本| 91三级在线| 国产一区二区电影| 精品久久久久久久久久| 午夜国产小视频| 永久555www成人免费| 欧美日韩一区二区免费视频| 精品一区二区国产| 国产在线精彩视频| 免费黄色av网站| 成 年 人 黄 色 大 片大 全| 黄色三级视频在线| 国产专区精品视频| 亚洲综合区在线| 亚洲mv大片欧洲mv大片精品| 黄色亚洲在线| 亚洲成人短视频| 在线亚洲+欧美+日本专区| 亚洲欧洲99久久| 欧美日韩裸体免费视频| 亚洲精品97久久| 欧美暴力喷水在线| 97中文字幕在线观看| 综合久久综合久久| 国产l精品国产亚洲区久久| 国产一区二区三区在线播放免费观看| 美女高潮久久久| 97精品人妻一区二区三区蜜桃| 91在线公开视频| 丰满人妻熟女aⅴ一区| 4444亚洲人成无码网在线观看| 亚洲无线码在线一区观看| 国产粉嫩在线观看| 美腿丝袜一区二区三区| jizz免费| 欧美乱妇高清无乱码免费| 欧美日韩精品一区二区| 99国产麻豆精品| 五月天男人天堂| 国产91精品在线| 国产奶头好大揉着好爽视频| 在线观看免费一区二区| 天堂av一区二区三区在线播放| 国产免费一级片| 日本高清久久一区二区三区| 国产精品久久久久免费a∨| 亚洲第一网站免费视频| 日韩美女一区二区三区四区| 97自拍视频| 亚洲精品欧美极品| 国产内射老熟女aaaa| 亚洲素人一区二区| 日韩在线一二三区| 91精品国产综合久久久久久久久| 亚洲久久视频| 国产男女无遮挡猛进猛出| 青青草国产成人a∨下载安卓| 美女日韩欧美| 网站免费满18成年在线观看| 性欧美videoshd高清| 亚洲图片欧美一区| 亲子乱一区二区三区电影| 欧美日韩国产一级| 韩国精品一区二区三区六区色诱| xxx在线免费观看| 伊人久久综合网另类网站| 日韩成人精品视频在线观看| 日韩中文字幕视频在线观看| 久久精品三级视频| 97色在线播放视频| 日韩精品久久一区二区三区| 国产精品一二三四五| 日韩欧洲国产| 黄动漫在线看| 在线观看中文字幕2021| 精品国产综合| 久久社区一区| av老司机在线观看| 精品国产伦一区二区三区观看说明| 91精品国产调教在线观看| 妞干网在线免费视频| 亚洲精品国产精品国产| 欧美激情第6页| 国产一区二区三区观看| 精品亚洲国内自在自线福利| 91久久精品国产91性色69| 色综合色综合色综合色综合色综合| 老鸭窝一区二区久久精品| 免费在线黄色av| 99久久99久久精品免费观看| √天堂资源地址在线官网| 国产精品99久| 国产中文字幕免费| 色偷偷av亚洲男人的天堂| 中文字幕一区二区三区人妻| 动漫3d精品一区二区三区乱码| 久久艹中文字幕| 女人色极品影院| 欧美制服第一页| 免费播放片a高清在线观看| 影音先锋电影在线观看| 国产中文字幕乱人伦在线观看| 女女同性女同一区二区三区91| 国产探花视频在线观看| 婷婷精品进入| 草草视频在线免费观看| 久久影院在线观看| 国产精品亚洲欧美| www.亚洲黄色| 在线视频国产区| 欧美日韩精品在线观看视频| 欧美三片在线视频观看| eeuss一区| 久久久久久久久国产一区| 国产精品麻豆免费版| 国产成人av自拍| 久久人人爽人人爽人人片av不| 女性生殖扒开酷刑vk| 日韩中文字幕在线不卡| 日韩成人av电影在线| 300部国产真实乱| 日韩av电影资源网| 玖草视频在线观看| 国产在线播放观看| 美女视频黄是免费| 国产精品日本一区二区| 欧美三级日韩在线| 亚洲国产综合在线观看| 性开放的欧美大片| 人禽交欧美网站免费| 亚洲一区二区三区美女| 久久久久se| 欧美影视一区| 色婷婷av一区二区三| 最近中文字幕在线观看视频| 中文字幕av专区| 麻豆av福利av久久av| 色诱亚洲精品久久久久久| 亚洲电影一区二区三区| 日本熟伦人妇xxxx| 肉丝袜脚交视频一区二区| 免费的国产精品| 在线日韩日本国产亚洲| 久久精品国产综合| 欧美亚州一区二区三区| 亚洲欧美一区在线| 久久久噜噜噜久久人人看| 国产偷国产偷亚洲高清人白洁| 欧美疯狂做受xxxx高潮| 亚洲综合激情五月| 蜜桃视频第一区免费观看| 欧美gvvideo网站| 久久av免费| 欧美黄色免费看| 日韩黄色一级片| 国产又粗又黄又猛| 日本成人在线免费观看| 久久男人av资源站| 无码人妻丰满熟妇区毛片| 四虎影视精品成人| 国产蜜臀av在线播放| 九九热线视频只有这里最精品| 一区二区福利| 久久99偷拍| 国产成人自拍网| 日韩精品一区二区三区中文在线| 亚洲一区二区三区精品视频| 国产精品久久久99| 日本不卡1234视频| 国产精成人品2018| 国模精品系列视频| 91老师片黄在线观看| 再深点灬舒服灬太大了少妇| 日本毛片在线免费观看| 免费在线观看污视频| 浮力影院欧美三级日本三级| 亚洲人成自拍网站| 欧美牲交a欧美牲交aⅴ免费真| 亚洲激情专区| 成人在线免费观看av| 欧美中在线观看| 四虎精品免费视频| 国产精品久久天天影视| 亚洲日本成人女熟在线观看| 性欧美xxx极品另类| 成人av资源网站| 四虎国产精品免费久久| 韩国19禁主播vip福利视频| 成人精品一区二区三区电影| 久久免费的精品国产v∧| 午夜免费福利视频在线观看| www.四虎网站| 国产情侣av在线| 国产999久久久| 在线激情网站| 91浏览器在线观看| 亚洲色偷偷综合亚洲av伊人| 天堂v视频永久在线播放| 乱人伦中文字幕在线zone| 国产污视频在线播放| 久久精品一区二区三区四区五区| 男人的天堂日韩| 欧美视频免费看欧美视频| 日韩精品久久久久久久的张开腿让| 久久免费区一区二区三波多野| 日本福利视频在线| 日本黄色大片视频| 肥女人的一级毛片| 国产精品18久久久久久久久久久久| 亚洲成人久久精品| 亚洲美女在线国产| 国产91精品在线| 国产精选一区| 影音欧美亚洲| 精品九九在线| 都市激情亚洲综合| 免费看av软件| 欧美性视频网站| 婷婷六月天丁香| 国产日韩欧美视频| 欧美一区二区视频在线观看2020| 精品高清久久| 四虎永久在线精品| 国产丝袜美腿一区二区三区| 欧美日韩一区久久| 欧美日韩国产精品一区二区亚洲| 成 年 人 黄 色 大 片大 全| 美女脱光内衣内裤视频久久网站| 日韩中文字幕在线看| 先锋资源av在线| 亚洲精华一区二区三区| 99在线精品视频在线观看| 亚洲日本高清| 免费大片在线观看| 日韩中文字幕av| 国产精品一区免费在线观看| 国内精品伊人久久久久av一坑| 国产91对白在线观看九色| 伊人22222| 性无码专区无码| 欧美一区三区四区| 亚洲精品成人自拍| 九色porny在线| 色哟哟免费网站| 久久黄色av网站| 亚洲欧洲视频在线| 中文字幕第8页| 手机在线观看国产精品| 国产精品久久久久久久av| 男人的天堂在线播放| 图片区小说区区亚洲影院| 亚洲日本中文字幕免费在线不卡| 国产成人久久精品77777最新版本| 少妇一级淫片日本| 久久99精品久久久久久青青91| 国产精品人人爽人人爽| 欧美国产精品一区二区| 天天射综合影视| 色综合久久五月天| 免费在线欧美黄色| 日韩中文字幕欧美| 国产成人永久免费视频| 无码人妻丰满熟妇区五十路| 国产精品入口66mio| 国产91av在线| 成人羞羞网站入口免费| 女同性αv亚洲女同志| 国产精品中文有码| 国语对白做受69按摩| а天堂8中文最新版在线官网| 欧美综合视频在线观看| 韩国视频一区| 在线观看av日韩| 精品一区二区电影| av网站在线免费播放| 国产成人午夜精品影院观看视频| 国产美女一区二区三区| www.狠狠lu| 538国产精品一区二区在线| 国语自产在线不卡| 欧美xxxx做受欧美88bbw| 全程偷拍露脸中年夫妇| 色老板亚洲精品一区| 国产乱淫av一区二区三区|