點擊右邊

Podman以及用錢來也娛樂城戶名字空間:天作之合

相識若何使用 P麻將onlineodman 在零丁的用戶空間運轉容器。
Podman 是 libpod 庫的一部門,使用戶可以或許治理 pod、容器以及容器鏡像電競運彩玩法。在我的上一篇文章中,我寫過將 Podman 作為一種更寧靜的運轉容器的方式。在這里,我將詮釋若何使用 Podman 在零丁的用戶定名空間中運轉容器。
作為星散容器的一個很棒的功效,我一向在思索用戶定名空間user namespace,它首要是由 Red Hat 的 Eric Biederman 開發的。用戶定名空間許可你指定用于運轉容器的用戶標識符(UID)以及組標識符(GID)映照。這象征著你可以在容器內以 UID 0 運轉,在容器外以 UID 100000 運轉。若是容器過程逃逸出了容器,內核會將它們視為以 UID 100000 運轉。不僅云云,任何未映照到用戶定名空間的 UID 所領有的文件工具都將被視為 nobody 所領有(UID 是 65534, 由 kernel.overflowuid 指定),而且不許可容器過程走訪,除非該工具可由“其余人”走訪(即世界可讀/可寫)。
若是你領有一個權限為 660 的屬主為“真實” root 的文件,而當用戶定名空間中的容器過程測驗考試讀取它時,會制止它們走訪它,而且會將該文件視為 nobody 所領有。

示例

如下是它是若何事情的。起首,我在 root 領有的體系中創立一個文件。

  1. $ sudo bash -c "echo Test > /tmp/test"
  2. $ sudo chmod 600 /tmp/test
  3. $ sudo ls -l /tmp/test
  4. -rw-------. 1 root root 5 Dec 17 16:40 /tmp/test

接上去,我將該文件卷掛載到一個使用用戶定名空間映照 0:100000:5000 運轉的容器中。

  1. $ sudo podman run -ti -v /tmp/test:/tmp/test:Z --uidmap 0:100000:5000 fedora sh
  2. # id
  3. uid=0(root) gid=0(root) groups=0(root)
  4. # ls -l /tmp/test
  5. -rw-rw----. 1 nobody nobody 8 Nov 30 12:40 /tmp/test
  6. # cat /tmp/test
  7. cat: /tmp/test: Permission denied

下面的 --uidmap 配置奉告 Podman 在容器內映照一系列的 5000 個 UID,自在器外的 UID 100000 最先的規模(100000-104999)映照到容器內 UID 0 最先的規模(0-4999)。在容器外部,若是我的過程大樂透中2個號碼多少錢以 UID 1 運轉,則它在主機上為 100001。
因為現實的 UID=0 未映照到容器中,是以 root 領有的任何文件都將被視為 nobody 所領有。縱然容器內的過程具備 CAP_DAC_OVERRIDE 本領,也沒法籠罩此種珍愛。DAC_OVERRIDE 本領使得 root 的過程可以或許讀/寫體系上的任何文件,縱然過程不是 root 用戶領有的,也不是全局可讀或者可寫的。
用戶定名空間的功效與宿主機上的功效不同。它們是定名空間的功效。這象征著我的容器的 root 只在容器內具備功效 —— 現實上只有該規模內的 UID 映照到內用戶定名空間。若是容器過程逃逸出了容器,則它將沒有任何非映照到用戶定名空間的 UID 以外的功效,這包含 UID=0。縱然過程可能以某種方式進入另一個容器,若是容器使用不同規模的 UID,它們也不具有這些功效。
請注重,SELinux 以及其余手藝還限定了容器過程破開容器時會產生的環境。

使用 podman top 來顯示用戶名字空間

咱們在 podman top 中增添了一些功效,許可你反省容器內運轉的過程的用戶名,并標識它們在宿主機上的真實 UID。
讓咱們起首使用咱們的 UID 映照運轉一個 sleep 容器。

  1. $ sudo podman run --uidmap 0:100000:5000 -d fedora sleep 1000

目前運轉 podman top

  1. $ sudo podman top --latest user huser
  2. USER   HUSER
  3. root   100000
  4.  
  5. $ ps -ef | grep sleep
  6. 100000   21821 21809  0 08:04 ?         00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1000

注重 podman top 講演用戶過程在容器內大樂透即時開獎號碼root 身份運轉,但在宿主機(HUSER)上以 UID 100000 運轉。此外,ps 下令確認 sleep 進程以 UID 100000 運轉。
目前讓咱們運轉第二個容器,但此次咱們將選擇一個零丁的 UID 映照,從 200000 最先。

  1. $ sudo podman run --uidmap 0:200000:5000 -d fedora sleep 1000
  2. $ sudo podman top --latest user huser
  3. USER   HUSER
  4. root   200000
  5.  
  6. $ ps -ef | grep sleep
  7. 100000   21821 21809  0 08:04 ? &今彩539中2個號碼多少錢nbsp;       00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1000
  8. 200000   23644 23632  1 08:08 ?         00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1000

請注重,podman top 講演第二個容器在容器內以 root 身份運轉,但在宿主機上是 UID=200000。
另請參閱 ps 下令,它顯示兩個 sleep 過程都在運轉:一個為 100000,另一個為 200000。
這象征著在零丁的用戶定名空間內運轉容器可以在過程之間進行傳統的 UID 星散,而這從一最先便是 Linux/Unix 的規范寧靜對象。

用戶名字空間的成績

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。
改善偏財運