Linux
以非管理員使用者身份在 Docker 容器中執行 nmap
我想在 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)