![即使使用 NOPASSWD,Sudo 验证(sudo -v)也会要求输入密码](https://linux22.com/image/1169631/%E5%8D%B3%E4%BD%BF%E4%BD%BF%E7%94%A8%20NOPASSWD%EF%BC%8CSudo%20%E9%AA%8C%E8%AF%81%EF%BC%88sudo%20-v%EF%BC%89%E4%B9%9F%E4%BC%9A%E8%A6%81%E6%B1%82%E8%BE%93%E5%85%A5%E5%AF%86%E7%A0%81.png)
我有一个用于在 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,那么它会询问。