以非管理员用户身份在 Docker 容器中运行 nmap

以非管理员用户身份在 Docker 容器中运行 nmap

我想在 Docker 容器中运行 Nmap 工具,但不使用默认的 root 用户帐户。我已经通过 setcap 设置了(希望)正确的功能。不幸的是,当我尝试运行它时,我只收到“操作不允许”错误。

这是我的docker文件:

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"]

有什么办法可以修复这个问题吗?

答案1

这里的问题是“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)

相关内容