Linux

以非管理員使用者身份在 Docker 容器中執行 nmap

  • March 11, 2021

我想在 Docker 容器中執行 Nmap 工具,但不使用預設的 root 使用者帳戶。我已經通過 setcap 設置了(希望)正確的功能。不幸的是,當我嘗試執行它時,我只收到“不允許操作”錯誤。

這是我的碼標頭檔:

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'

RUN microdnf install nmap which
RUN setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which nmap)

USER 1001

CMD ["nmap", "--privileged", "-sU", "localhost"]

關於如何解決這個問題的任何想法?

這裡的問題是“cap_net_admin”。

為了在容器內使用/設置此功能,容器必須使用“NET_ADMIN”功能執行。

# docker run --cap-add NET_ADMIN <...>

或者簡單地從您的 setcap 語句中省略“cap_net_admin”應該可以。

但是,要以您想要的方式執行 nmap,您只需要“cap_net_raw”功能。

將您的 dockerfile setcap 命令減少為:

RUN setcap cap_net_raw+eip $(which nmap)

引用自:https://serverfault.com/questions/1056213