我有一个用于在 CI 设置中测试安装脚本的 docker 映像。安装脚本旨在由非 root 用户运行,因此脚本中的命令使用sudo
频率很高。
我添加了以下内容,这样我就可以在运行 sudo 命令时避免密码提示。
RUN adduser --disabled-password --gecos '' user
RUN adduser user sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER user
但是,这不适用于 sudo verify ( sudo -v
)。无论我怎么尝试,sudo -v
它总是会要求输入密码。我不想sudo -v
从安装脚本中删除。
有人知道这是为什么吗?我在ubuntu:16.04
和ubuntu:18.04
docker 镜像上都试过了。
答案1
如果你有较新版本的 sudo,你可能还需要配置verifypw
Defaults verifypw = any
你可以阅读文档,但基本上这意味着如果您匹配任何 NOPASSWD 行,它就不会要求输入密码。默认为,all
这意味着您必须将所有组和用户与 NOPASSWD 匹配才能跳过密码。
因此,如果您的用户也属于 root 或 wheel 或 sudo 组,并且他们没有说 NOPASSWD,那么它会询问。