【问题标题】:Dockerfile won't run script as user with sudo rightsDockerfile 不会以具有 sudo 权限的用户身份运行脚本
【发布时间】:2015-03-19 03:36:46
【问题描述】:

我有这个 Docker 文件...

FROM ubuntu:14.04 MAINTAINER Sindhu S sindhu@alum.hackerschool.org
# RUN apt-get update && apt-get -y install sudo wget bash git && rm -rf /var/cache/apt-get/archives/*
RUN adduser --disabled-password --gecos "" scrollback  
RUN adduser scrollback sudo  
RUN echo 'scrollback ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers RUN mkdir -p /home/scrollback && chown -R scrollback:scrollback /home/scrollback
WORKDIR /home/scrollback/ 
ADD https://raw.githubusercontent.com/sindhus/scrollback/install-script/tools/install.sh /home/scrollback/install.sh 
RUN chown scrollback:scrollback install.sh
RUN chmod +x install.sh
USER scrollback RUN ["/bin/bash", "-c", "/home/scrollback/install.sh"]

如您所见,它应该以回滚用户身份运行 install.sh(此用户具有 sudo 权限)。基本上脚本不应该以 root 身份运行,而应该以具有 sudo 权限的用户身份运行,因为我们需要修改一些系统文件。

我试过了:

RUN ["/bin/bash", "-c", "sudo touch /etc/apt/sources.list.d/pgdg.list"]

这行得通!

当我有这行时:

RUN ["/bin/bash", "-c", "/home/scrollback/install.sh"]

脚本中有一行:

$(sudo echo $apt_source > /etc/apt/sources.list.d/pgdg.list)

我得到...

Adding Postgres' deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main source to your software sources list (need root user rights).. ./install.sh: line 136: /etc/apt/sources.list.d/pgdg.list: Permission denied

我该如何解决这个问题?

【问题讨论】:

    标签: linux bash shell ubuntu docker


    【解决方案1】:

    在 bash 脚本中使用 sudo 不是一个好习惯。而是直接使用该命令并使用sudo 运行您的脚本。因此,您的脚本(以及在其中启动的程序)将以 root 权限启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2019-05-27
      • 1970-01-01
      相关资源
      最近更新 更多