容器學(xué)習(xí)筆記之用戶命名空間

USER namespace有什么能力?

提供用戶隔離能力,隔離用戶的用戶ID與用戶組ID

使用場景

在宿主機(jī)上以一個非root用戶運行創(chuàng)建一個User namespace,然后在User namespace里面卻映射成root用戶

這樣意味著,這個進(jìn)程在User namespace里面有root權(quán)限,但是在User namespace外面卻沒有root的權(quán)限

重映射容器內(nèi)用戶Uid至宿主機(jī)

啟動nginx

docker run -itd --name nginx nginx

獲取nginx容器pid

$ ps -ef|grep nginx
root      46991  46971  0 07:58 pts/0    00:00:00 nginx: master process nginx -g daemon off;
101       47051  46991  0 07:58 pts/0    00:00:00 nginx: worker process
101       47052  46991  0 07:58 pts/0    00:00:00 nginx: worker process
101       47053  46991  0 07:58 pts/0    00:00:00 nginx: worker process
101       47054  46991  0 07:58 pts/0    00:00:00 nginx: worker process
root      48582   4609  0 07:59 pts/0    00:00:00 grep --color=auto nginx

進(jìn)入nginx容器進(jìn)程空間

$ cd /proc/46991

查看uid_map屬性

$ cat uid_map
         0          0 4294967295
  • 第一列字段表示在容器顯示的UIDGID
  • 第二列字段表示容器外映射的真實的UIDGID
  • 第三個字段表示映射的范圍
    • 如果為1,表示一一對應(yīng)(內(nèi)部與外部uid一一對應(yīng))
    • 如果為4294967295,表示把namespace內(nèi)部從0開始的uid映射到外部從0開始的uid
      其最大范圍是無符號32位整形

上述nginx進(jìn)程表示,容器內(nèi)的nginx: master用戶為root權(quán)限,即在容器外部也有root權(quán)限

docker啟用用戶命名空間

由上述步驟我們可知,默認(rèn)docker未啟用用戶命名空間,容器內(nèi)的uid與宿主機(jī)一致

如容器內(nèi)使用root(uid=0)啟動服務(wù),有安全風(fēng)險(宿主機(jī)視角也是root用戶)

修改系統(tǒng)參數(shù)

$ sed -i "/user.max_user_namespaces/d" /etc/sysctl.conf
$ echo "user.max_user_namespaces=15511" >> /etc/sysctl.conf
$ sysctl -p

編輯配置文件

$ vi /etc/docker/daemon.json

添加參數(shù)"userns-remap": "default",

參考配置:

{
  "log-opts": {
    "max-size": "5m",
    "max-file":"3"
  },
  "userns-remap": "default",
  "exec-opts": ["native.cgroupdriver=systemd"]
}

重載服務(wù)

$ systemctl daemon-reload
$ systemctl restart docker

啟動一個容器

$ docker rm -f nginx
$ docker run -itd --name nginx nginx

查看容器內(nèi)進(jìn)程用戶

$ ps -p $(docker inspect --format='{{.State.Pid}}' $(docker ps |grep ccc|awk '{print $1}')) -o pid,user
   PID USER
  2535 100000

參考文獻(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容