精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

理解 Docker 容器中 UID 和 GID 的工作原理

云計算 云原生
如果容器內部的進程正在執行的已知 uid,那么簡單地限制對主機系統的訪問,使容器中的 uid 僅具有有限訪問權限就可以了。

理解用戶名、組名、用戶ID(UID)和組ID(GID)在容器內運行的進程與主機系統之間的映射是構建安全系統的重要一環。如果沒有提供其他選項,容器中的進程將以root用戶身份執行(除非在Dockerfile中提供了不同的UID)。本文將解釋這一工作原理,如何正確授予權限,并提供示例加以說明。

逐步分析uid/gid安全性

首先,讓我們回顧一下uid和gid是如何實現的。Linux內核負責管理uid和gid空間,使用內核級系統調用來確定是否應該授予請求的特權。例如,當一個進程嘗試寫入文件時,內核會檢查創建該進程的uid和gid,以確定它是否具有足夠的特權來修改文件。這里不使用用戶名,而是使用uid。

在服務器上運行 Docker 容器時,仍然只有一個內核。容器化帶來的巨大價值之一是所有這些獨立的進程可以繼續共享一個內核。這意味著即使在運行 Docker 容器的服務器上,整個 uid 和 gid 的世界仍由一個單一內核控制。

因此,在不同的容器中不能使用相同的 uid 分配給不同的用戶。這是因為在常見的 Linux 工具中顯示的用戶名(和組名)并不是內核的一部分,而是由外部工具(如 /etc/passwd、LDAP、Kerberos 等)管理。因此,你可能會看到不同的用戶名,但是即使在不同的容器中,對于相同的 uid/gid,你也不能擁有不同的權限。這一點一開始可能會讓人感到相當困惑,所以讓我們通過幾個例子來說明一下:

簡單的Docker運行

我將首先以普通用戶(marc)的身份登錄到一個屬于docker組的服務器上。這樣我就可以在不使用sudo命令的情況下啟動docker容器。然后,從容器外部,讓我們來看看這個過程是如何呈現的。

marc@server:~$ docker run -d ubuntu:latest sleep infinity
92c57a8a4eda60678f049b906f99053cbe3bf68a7261f118e411dee173484d10
marc@server:~$ ps aux | grep sleep
root 15638 0.1 0.0 4380 808 ? Ss 19:49 0:00 sleep infinity

盡管我從未輸入過sudo,也不是root用戶,但我執行的sleep命令以root用戶身份啟動并具有root權限。我如何知道它具有root權限?容器內的root是否等同于容器外的root?是的,因為正如我提到的,有一個單一的內核和一個共享的uid和gid池。由于容器外顯示的用戶名是“root”,我可以確定容器內的進程是以具有uid = 0的用戶啟動的。

帶有定義用戶的Dockerfile

當我在 Dockerfile 中創建一個不同的用戶并以該用戶身份啟動命令時會發生什么?為了簡化這個例子,我這里沒有指定 gid,但相同的概念也適用于組 id。

首先,我正在以用戶名為“marc”的用戶身份運行這些命令,該用戶的用戶ID為1001。

marc@server:~$ echo $UID
1001

Dockerfile文件:

FROM ubuntu:latest
RUN useradd -r -u 1001 -g appuser appuser
USER appuser
ENTRYPOINT [“sleep”, “infinity”]

構建:

marc@server:~$ docker build -t test .
Sending build context to Docker daemon 14.34 kB
Step 1/4 : FROM ubuntu:latest
 — -> f49eec89601e
Step 2/4 : RUN useradd -r -u 1001 appuser
 — -> Running in 8c4c0a442ace
 — -> 6a81547f335e
Removing intermediate container 8c4c0a442ace
Step 3/4 : USER appuser
 — -> Running in acd9e30b4aba
 — -> fc1b765e227f
Removing intermediate container acd9e30b4aba
Step 4/4 : ENTRYPOINT sleep infinity
 — -> Running in a5710a32a8ed
 — -> fd1e2ab0fb75
Removing intermediate container a5710a32a8ed
Successfully built fd1e2ab0fb75
marc@server:~$ docker run -d test
8ad0cd43592e6c4314775392fb3149015adc25deb22e5e5ea07203ff53038073
marc@server:~$ ps aux | grep sleep
marc 16507 0.3 0.0 4380 668 ? Ss 20:02 0:00 sleep infinity
marc@server:~$ docker exec -it 8ad0 /bin/bash
appuser@8ad0cd43592e:/$ ps aux | grep sleep
appuser 1 0.0 0.0 4380 668 ? Ss 20:02 0:00 sleep infinity

這里到底發生了什么,這意味著什么?我構建了一個 Docker 鏡像,其中有一個名為“appuser”的用戶,該用戶的 uid 為 1001。在我的測試服務器上,我使用的帳戶名為“marc”,uid 也是 1001。當我啟動容器時,sleep 命令以 appuser 的身份執行,因為 Dockerfile 包含了“USER appuser”這一行。但實際上這并不是以 appuser 的身份運行,而是以 Docker 鏡像中被識別為 appuser 的用戶的 uid 運行。

當我檢查容器外運行的進程時,我發現它映射到用戶“marc”,但在容器內部,它映射到用戶“appuser”。這兩個用戶名只是顯示它們的執行上下文所知道的映射到1001的用戶名。

這并不是非常重要。但重要的是要知道,在容器內部,用戶“appuser”獲得了來自容器外部用戶“marc”的權限和特權。在Linux主機上授予用戶marc或uid 1001的權限也將授予容器內的appuser這些權限。

如何控制容器的訪問權限

另一種選擇是在運行 Docker 容器時指定用戶名或用戶ID,以及組名或組ID。

再次使用上面的初始示例。

marc@server:~$ docker run -d --user 1001 ubuntu:latest sleep infinity
84f436065c90ac5f59a2256e8a27237cf8d7849d18e39e5370c36f9554254e2b
marc@server$ ps aux | grep sleep
marc     17058 0.1 0.0 4380 664 ? Ss 21:23 0:00 sleep infinity

我在這里做了什么?我創建了容器以1001用戶身份啟動。因此,當我執行諸如ps或top(或大多數監控工具)之類的命令時,進程映射到“marc”用戶。

有趣的是,當我進入該容器時,你會發現1001用戶在/etc/passwd文件中沒有條目,并在容器的bash提示符中顯示為“I have no name!”。

marc@server:~$ docker exec -it 84f43 /bin/bash
I have no name!@84f436065c90:/$

重要的是要注意,在創建容器時指定用戶標志也會覆蓋 Dockerfile 中的值。還記得第二個例子嗎?那時我使用了一個 Dockerfile,其中的 uid 映射到本地主機上的不同用戶名。當我們在命令行上使用用戶標志來啟動一個執行“sleep infinity”進程的容器時,會發生什么呢?

marc@server:$ docker run -d test
489a236261a0620e287e434ed1b15503c844648544694e538264e69d534d0d65
marc@server:~$ ps aux | grep sleep
marc     17689 0.2 0.0 4380 680 ? Ss 21:28 0:00 sleep infinity
marc@server:~$ docker run --user 0 -d test
ac27849fcbce066bad37190b5bf6a46cf526f56d889af61e7a02c3726438fa7a
marc@server:~$ ps aux | grep sleep
marc     17689 0.0 0.0 4380 680 ? Ss 21:28 0:00 sleep infinity
root     17783 0.3 0.0 4380 668 ? Ss 21:28 0:00 sleep infinity

在上面的最后一個示例中,您可以看到我最終得到了兩個運行睡眠進程的容器,一個是“marc”,另一個是“root”。這是因為第二個命令通過在命令行上傳遞--user標志來更改了用戶ID。

總結

現在我們已經探討了這一點,可以理解以有限權限運行容器的方式都利用了主機的用戶系統:

  • 如果容器內部的進程正在執行的已知 uid,那么簡單地限制對主機系統的訪問,使容器中的 uid 僅具有有限訪問權限就可以了。
  • 更好的解決方案是使用--user以已知 uid 啟動容器(也可以使用用戶名,但請記住這只是提供主機用戶名系統中的 uid 的一種更友好的方式),然后限制主機上您決定容器將以其運行的 uid 的訪問權限。
  • 由于容器到主機的 uid 和用戶名(以及 gid 和組名)的映射,指定容器化進程運行的用戶可以使該進程在容器內部和外部看起來像是由不同的用戶擁有。
責任編輯:武曉燕 來源: 云原生運維圈
相關推薦

2019-08-20 14:01:22

HTTPSSSL協議

2022-09-06 11:13:16

接口PipelineHandler

2024-06-27 08:26:10

LooperAndroid內存

2024-11-01 08:57:07

2022-07-29 10:01:50

Docker退出碼

2015-01-06 15:25:12

DockerDocker Volu數據容器

2009-07-06 16:16:33

Servlet容器工作

2023-09-19 22:47:39

Java內存

2021-07-16 07:57:34

ReduxDOM組件

2025-04-01 08:50:48

2019-07-16 14:44:52

DockerMySQL操作系統

2009-11-30 17:30:47

PHP ereg_re

2019-07-24 08:49:36

Docker容器鏡像

2011-07-01 11:16:14

Struts

2025-08-04 02:55:00

AIAgent架構

2015-08-26 15:11:41

Docker容器備份Docker容器遷移

2018-07-24 08:56:45

容器存儲閃存

2022-01-05 14:30:44

容器Linux網絡

2022-05-11 07:38:45

SpringWebFlux

2024-08-14 18:18:47

點贊
收藏

51CTO技術棧公眾號

免费在线黄色片| jizzzz日本| 色天堂在线视频| 久久精品五月| 久久视频在线看| 午夜av免费看| 日日夜夜亚洲精品| 偷窥国产亚洲免费视频| 日韩中文一区| 人妻无码中文字幕免费视频蜜桃| 丝袜亚洲另类欧美| 欧美成人午夜激情视频| 国产精品扒开腿做爽爽| 欧美a级大片在线| 91久久国产最好的精华液| 日韩不卡视频一区二区| 男人的天堂在线| 国产一区二区成人久久免费影院| 国产成人精品av在线| 久久99久久98精品免观看软件| 香蕉人人精品| 日韩欧美国产一区二区三区 | 欧美日韩色一区| 欧美在线一区视频| 免费黄色网页在线观看| 久久在线观看免费| 国产精品v欧美精品∨日韩| 瑟瑟视频在线免费观看| 性色一区二区三区| 欧美激情精品久久久久久变态| 五月天精品视频| 精品日产乱码久久久久久仙踪林| 69久久夜色精品国产69蝌蚪网| 中国丰满人妻videoshd | 2018日韩中文字幕| 久久国产精品波多野结衣| 91一区在线| 亚洲天堂免费视频| www.自拍偷拍| 欧美大片网址| 精品福利一二区| 亚洲精品无码久久久久久久| 久久人体av| 欧美色网一区二区| av视屏在线播放| 欧美xxx性| 一本色道a无线码一区v| 欧美日韩亚洲一| 日本午夜大片a在线观看| 亚洲成人免费观看| 亚洲精品久久久久久久蜜桃臀| 国产在线激情| 中文字幕一区二区三区色视频| 少妇精品久久久久久久久久| 国产一级二级三级在线观看| 久久久久久黄色| 日本高清不卡三区| 成人性生交大片免费看午夜| 国产亚洲精品bt天堂精选| 日韩av在线一区二区三区| 国产一二三在线观看| 国产欧美日韩视频在线观看| 性欧美大战久久久久久久免费观看 | gogo高清在线播放免费| 亚洲1区2区3区视频| 春日野结衣av| 日韩av免费| 欧美日韩aaa| 国产xxxxhd| 综合激情网...| 亚洲精品电影久久久| 无码人妻精品一区二区三区温州 | 国产精品中文字幕日韩精品| 97在线资源站| 色婷婷av一区二区三| 久久综合精品国产一区二区三区| 欧美日本韩国国产| 调教视频免费在线观看| 一区二区三区四区在线免费观看 | av有声小说一区二区三区| 欧美四级电影网| 在线观看网站黄| 欧美三级午夜理伦三级小说| 在线播放日韩专区| 久久中文免费视频| 国产视频久久| 国产剧情久久久久久| av中文字幕观看| 久久一区二区视频| 在线观看成人免费| 中文在线免费二区三区| 欧美精品亚洲二区| 在线xxxxx| 成人影院在线| 欧美激情中文网| 中文字幕精品无| 国产一区二区三区精品欧美日韩一区二区三区| 国产69精品久久久久9999apgf | 国产欧美精品一区aⅴ影院| 亚洲免费视频播放| 澳门成人av网| 欧美一区二区三区成人| 久久精品国产亚洲av麻豆| 久久一区二区三区视频| 亚洲另类视频| 91系列在线观看| 日韩a在线观看| 亚洲美女少妇撒尿| 国产天堂在线播放| 欧美电影完整版在线观看| 久久精品国产视频| 亚洲GV成人无码久久精品| 国产精品一级黄| 亚洲午夜精品福利| 僵尸再翻生在线观看| 日韩一区二区免费在线观看| a资源在线观看| 中文高清一区| 91在线短视频| 蜜桃视频网站在线观看| 一本大道久久a久久精二百 | av手机免费看| 久久93精品国产91久久综合| 欧美成人午夜激情在线| 中文资源在线播放| 91丨porny丨首页| 欧美中文字幕在线观看视频| 996久久国产精品线观看| 亚洲午夜国产成人av电影男同| 日韩手机在线观看| 成人一级片在线观看| 一区二区三区日韩视频| 国产精品一区二区免费福利视频| 亚洲欧美国产一本综合首页| 成年免费在线观看| 福利一区二区在线| 女人床在线观看| 精品一区91| 欧美成人亚洲成人日韩成人| av免费观看网址| 亚洲欧美日韩久久| 日韩成人av免费| 国产精品成人av| 国产日韩视频在线观看| jizz在线观看中文| 欧美在线免费视屏| 欧美激情 一区| 日韩成人伦理电影在线观看| 日本在线免费观看一区| 日韩成人亚洲| 色哟哟入口国产精品| 亚洲影视一区二区| 国产精品另类一区| 色婷婷一区二区三区av免费看| 日韩精品不卡一区二区| 成人黄色av播放免费| 巨大荫蒂视频欧美另类大| 欧美精品免费视频| 国产中文字幕在线免费观看| 欧美成人精品欧美一级乱黄| 欧美日本三级| 久久天堂电影网| 精品国产av 无码一区二区三区| 精品一区二区三区的国产在线播放 | 欧美老女人性开放| 色乱码一区二区三区88| 少妇愉情理伦三级| 黑人巨大精品欧美一区| 国产成人中文字幕| 少妇一区二区三区四区| 日韩欧亚中文在线| a天堂资源在线观看| 欧美xxxx视频| 日韩精品中文字幕有码专区| 尤物视频免费观看| 国内不卡的二区三区中文字幕| 国产精品视频区1| 农村少妇久久久久久久| 欧美色另类天堂2015| 永久免费毛片在线观看| 美女视频免费一区| 成人一级生活片| 国产真实有声精品录音| 国产精品久久久一区| 超碰porn在线| 亚洲美女自拍视频| 国产又黄又粗又猛又爽| 亚洲mv在线观看| 丁香激情五月少妇| 成人av在线资源网| 9久久婷婷国产综合精品性色| 欧美国产激情| 日本一区视频在线观看| 白嫩白嫩国产精品| 国产精品a久久久久久| 成人福利片网站| 亚洲欧美国产va在线影院| 国产精品久久久久久久免费| 欧美日韩中文字幕| 国产一二三区精品| 国产视频视频一区| 国内精品免费视频| 蜜桃久久精品一区二区| 日本a在线免费观看| 久久视频在线| 蜜桃免费一区二区三区| 国产专区精品| 国产精品美女999| 激情视频网站在线播放色| 欧美xxxx18国产| 国产三级电影在线观看| 亚洲精品黄网在线观看| 国产99视频在线| 91国偷自产一区二区开放时间| 久久午夜无码鲁丝片午夜精品| 国产精品丝袜一区| 熟女俱乐部一区二区视频在线| 国产91精品露脸国语对白| 久久国产精品国产精品| 亚洲欧美bt| 久久艹国产精品| 久久久久午夜电影| 视频一区视频二区视频三区视频四区国产 | 亚洲成人黄色av| 91色九色蝌蚪| 亚洲成av人片在线观看无| 国产米奇在线777精品观看| 91看片在线免费观看| 西西人体一区二区| 欧美亚洲国产成人| 亚洲美洲欧洲综合国产一区| 日韩精品在线中文字幕| 欧美日韩蜜桃| www.99riav| 欧美人成在线| 日韩精品福利片午夜免费观看| 婷婷激情综合| 午夜啪啪免费视频| 97精品中文字幕| 亚洲一区二区三区四区中文| 日韩精品不卡一区二区| 亚洲欧洲久久| 欧美激情理论| 日本福利视频导航| 久久精品免费一区二区三区| 国产麻豆电影在线观看| 五月开心六月丁香综合色啪| 天天综合中文字幕| 一区二区三区中文| 波多野结衣 作品| 欧美激情一级片一区二区| 久久香蕉视频网站| 在线成人h网| www.浪潮av.com| 巨乳诱惑日韩免费av| 污污视频网站免费观看| 天堂蜜桃91精品| 91插插插插插插插插| 激情文学综合丁香| 成年人看片网站| 成人精品视频一区二区三区尤物| 91九色蝌蚪porny| 久久久噜噜噜久噜久久综合| 日本免费www| 亚洲免费观看高清在线观看| 久久久.www| 欧美日韩国产色视频| 超碰在线观看91| 欧美日韩国产美| 欧美一区二区黄片| 亚洲乱亚洲乱妇无码| avav免费在线观看| 欧美另类老女人| xx欧美xxx| 91精品视频在线播放| 成人精品毛片| 五月婷婷一区| 欧美天天视频| 国产三级三级三级看三级| 精品在线一区二区| 插我舔内射18免费视频| 欧美韩国日本不卡| 久久国产精品波多野结衣av| 日本乱人伦aⅴ精品| 国产激情无套内精对白视频| 日韩国产精品一区| 免费黄色网址在线观看| 7m精品福利视频导航| 色婷婷成人网| 久久精品国产精品青草色艺| 99久久.com| 波多野结衣家庭教师在线| 精品综合免费视频观看| 中出视频在线观看| 亚洲色图在线播放| 久久久久久91亚洲精品中文字幕| 91精品国产黑色紧身裤美女| 欧美色图另类| 久久人人爽人人爽人人片av高请| 91在线亚洲| 精品久久久久久亚洲| 久久久久av| 999香蕉视频| 成+人+亚洲+综合天堂| 青花影视在线观看免费高清| 日韩欧美在线视频观看| 亚洲国产精品国自产拍久久| 中文字幕精品国产| 成年美女黄网站色大片不卡| http;//www.99re视频| 成人在线电影在线观看视频| www.中文字幕在线| 国产xxx精品视频大全| 色噜噜噜噜噜噜| 色拍拍在线精品视频8848| 免费看日韩av| 久久av在线播放| 日韩综合久久| 伊人av成人| 美女视频网站黄色亚洲| 欧美大波大乳巨大乳| 粉嫩av一区二区三区免费野| 免费观看黄一级视频| 欧美尺度大的性做爰视频| 91麻豆精品一二三区在线| 色之综合天天综合色天天棕色| 亚洲影视综合| 亚洲国产综合视频| 舔着乳尖日韩一区| 日韩一级免费毛片| 欧美激情日韩图片| 91成人精品在线| 中文字幕日韩精品无码内射| 国产一区二区三区免费播放| 91视频青青草| 欧美一区二区三区四区高清| www在线免费观看视频| 91精品免费视频| 亚洲国产老妈| www.色.com| 亚洲综合999| 性一交一乱一精一晶| 欧美俄罗斯性视频| 亚洲综合网站| 国产精品无码av在线播放| 成人黄色一级视频| 九九热在线视频播放| 国产丝袜高跟一区| 一区二区视频免费完整版观看| 视频一区三区| 国内外成人在线视频| 欧美xxxx黑人xyx性爽| 欧美电影免费提供在线观看| 国产网红在线观看| 久久精精品视频| 日韩经典一区二区| 人妻无码一区二区三区免费| 在线91免费看| 日韩经典av| 久久精品人人做人人爽电影| 久久一日本道色综合久久| 天天干天天舔天天操| 欧美美女bb生活片| 三级福利片在线观看| 国产日韩欧美一区二区三区四区| 亚洲精品极品| 免费黄色片网站| 777亚洲妇女| 黑人精品视频| 欧美一区二区三区四区夜夜大片| 美国av一区二区| 久久久久无码国产精品 | 欧美高清视频| 高清免费日韩| 日韩国产欧美三级| 乱h高h女3p含苞待放| 亚洲国产成人精品久久| 日本精品另类| 欧美黄色免费网址| 久久久精品国产免大香伊| 91精品国自产| 韩国v欧美v日本v亚洲| 欧美艳星介绍134位艳星| 亚洲精品久久久久久| 狠狠爱在线视频一区| 久久综合之合合综合久久| 国产精品乱码一区二区三区| 日韩va欧美va亚洲va久久| 欧美日韩激情在线观看| 亚洲片av在线| 亚洲国产中文在线二区三区免| 久久精品免费一区二区| 亚洲欧美电影一区二区| 美国成人毛片| 肥熟一91porny丨九色丨| 日韩黄色免费网站| 五月天婷婷网站| 菠萝蜜影院一区二区免费| 一呦二呦三呦国产精品| 亚洲精品久久久久久|