簡體   English   中英

Dockerfile不會以具有sudo權限的用戶身份運行腳本

[英]Dockerfile won't run script as user with sudo rights

我有這個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"]

如您所見,它應該以滾動用戶(該用戶具有sudo權限)運行install.sh。 基本上,腳本不應以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

我怎樣才能解決這個問題?

在bash腳本中使用sudo並不是一個好習慣。 而是直接使用命令並使用sudo運行腳本。 因此,您的腳本(和內部啟動的程序)將以root特權啟動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM