当前位置: 首页 > 知识库问答 >
问题:

通过命令行向用户添加sudo权限(无密码)

万俟经纶
2023-03-14

我正在从ubuntu创建一个docker文件:仿生图像。

我想要一个具有sudo权限的ubuntu用户。

这是我的文件

FROM ubuntu:bionic

ENV DEBIAN_FRONTEND noninteractive

# Get the basic stuff
RUN apt-get update && \
    apt-get -y upgrade && \
    apt-get install -y \
    sudo

# Create ubuntu user with sudo privileges
RUN useradd -ms /bin/bash ubuntu && \
    usermod -aG sudo ubuntu

# Set as default user
USER ubuntu
WORKDIR /home/ubuntu

ENV DEBIAN_FRONTEND teletype

CMD ["/bin/bash"]

但是有了这个密码,我需要写下ubuntu用户的密码。

有一种方法可以通过命令行将NOPASSWD子句添加到sudoers文件中的sudo组?

共有1个答案

邓赤岩
2023-03-14

首先,不建议您在docker中使用sudo。您可以使用USERgosu设计您的行为。

但是,如果您出于某种不受控制的原因坚持,请在设置普通用户后添加下一行:

RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

因此,对于您的场景,可行的方案是:

FROM ubuntu:bionic

ENV DEBIAN_FRONTEND noninteractive

# Get the basic stuff
RUN apt-get update && \
    apt-get -y upgrade && \
    apt-get install -y \
    sudo

# Create ubuntu user with sudo privileges
RUN useradd -ms /bin/bash ubuntu && \
    usermod -aG sudo ubuntu
# New added for disable sudo password
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# Set as default user
USER ubuntu
WORKDIR /home/ubuntu

ENV DEBIAN_FRONTEND teletype

CMD ["/bin/bash"]

测试效果:

$ docker build -t abc:1 .
Sending build context to Docker daemon  2.048kB
Step 1/9 : FROM ubuntu:bionic
......
Successfully built b3aa0793765f
Successfully tagged abc:1

$ docker run --rm abc:1 cat /etc/sudoers
cat: /etc/sudoers: Permission denied

$ docker run --rm abc:1 sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
......
#includedir /etc/sudoers.d
%sudo ALL=(ALL) NOPASSWD:ALL

您可以看到,使用sudo,我们已经可以执行根需要的命令。

 类似资料:
  • 我正在使用ProcessBuilder执行bash命令: 编辑 gksudo带着最后一次更新回到了Ubuntu13.04。

  • 是否可以使用构造格式的URL? 我已尝试使用以下设置值: (此调用的第三方应用程序不支持标头和其他身份验证方法) 我想这是不支持的?

  • 问题内容: 我正在使用ProcessBuilder执行bash命令: 但我想做这样的事情: 如何将超级用户密码传递给bash? 不会解决这个问题,因为它是从Ubuntu 13.04开始删除的,我需要使用默认命令来执行此操作。 编辑 gksudo在最近的更新中回到了Ubuntu 13.04。 问题答案: 我想您可以使用它,但是我有点犹豫要发布它。所以我只想说: 使用此方法后果自负,不建议您使用,请勿

  • 其中/usr/local/bin/kiaragen.jar是要执行的文件。现在,我尝试运行一个依赖于a.class文件的不同版本: 将文件添加到类路径: 提供以下异常: 如何将.class文件添加到类路径?

  • 我从MongoDB开始,我想使用/通过DBS访问。我做的第一件事是创建和管理用户,并使用auth activate启动mongodb,这是我创建的用户: 之后,我尝试使用以下命令创建用户: 但我得到了这个错误: 我在谷歌上搜索过,但只有两个结果,一个是中文的,另一个不相关,所以我有点迷茫。你知道吗?看起来我的管理用户没有权限,我可以使用以下命令访问mongodb: 提前谢了。

  • 本文向大家介绍linux用户和组命令实例分析【切换、添加用户、权限控制等】,包括了linux用户和组命令实例分析【切换、添加用户、权限控制等】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了linux用户和组命令。分享给大家供大家参考,具体如下: 1、用户相关命令   su     切换用户        root -> 普通用户   不需要密码        普通用户之间