GNU/Linux >> Linux Esercitazione >  >> Linux

Come aggiungere utenti al contenitore Docker?

Il trucco è usare useradd invece del suo wrapper interattivo adduser .Di solito creo utenti con:

RUN useradd -ms /bin/bash newuser

che crea una home directory per l'utente e assicura che bash sia la shell predefinita.

Puoi quindi aggiungere:

USER newuser
WORKDIR /home/newuser

al tuo dockerfile. Ogni comando successivo così come le sessioni interattive verranno eseguite come utente newuser :

docker run -t -i image
[email protected]:~$

Potrebbe essere necessario fornire newuser i permessi per eseguire i programmi che intendi eseguire prima di invocare il comando utente.

L'utilizzo di utenti senza privilegi all'interno dei contenitori è una buona idea per motivi di sicurezza. Ha anche alcuni inconvenienti. Ancora più importante, le persone che traggono immagini dalla tua immagine dovranno tornare a root prima di poter eseguire comandi con privilegi di superutente.


L'aggiunta di un utente nella finestra mobile e l'esecuzione dell'app con quell'utente è un'ottima pratica dal punto di vista della sicurezza. Per fare ciò, consiglierei i seguenti passaggi:

FROM node:10-alpine

# Copy source to container
RUN mkdir -p /usr/app/src

# Copy source code
COPY src /usr/app/src
COPY package.json /usr/app
COPY package-lock.json /usr/app

WORKDIR /usr/app

# Running npm install for production purpose will not run dev dependencies.
RUN npm install -only=production    

# Create a user group 'xyzgroup'
RUN addgroup -S xyzgroup

# Create a user 'appuser' under 'xyzgroup'
RUN adduser -S -D -h /usr/app/src appuser xyzgroup

# Chown all the files to the app user.
RUN chown -R appuser:xyzgroup /usr/app

# Switch to 'appuser'
USER appuser

# Open the mapped port
EXPOSE 3000

# Start the process
CMD ["npm", "start"]

I passaggi precedenti sono un esempio completo della copia dei file di progetto NodeJS, della creazione di un gruppo di utenti e di un utente, dell'assegnazione delle autorizzazioni all'utente per la cartella del progetto, del passaggio all'utente appena creato e dell'esecuzione dell'app con quell'utente.


Ubuntu

Prova le seguenti righe in Dockerfile :

RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1001 ubuntu
USER ubuntu
WORKDIR /home/ubuntu

useradd opzioni (vedi:man useradd ):

  • -r , --system Crea un account di sistema.
  • -m , --create-home Crea la home directory dell'utente.
  • -d , --home-dir HOME_DIR Home directory del nuovo account.
  • -s , --shell SHELL Shell di login del nuovo account.
  • -g , --gid GROUP Nome o ID del gruppo principale.
  • -G , --groups GROUPS Elenco dei gruppi supplementari.
  • -u , --uid UID Specifica l'ID utente.
  • -p , --password PASSWORD Password crittografata del nuovo account (ad es. ubuntu ).

Impostazione della password utente predefinita

Per impostare la password utente, aggiungi -p "$(openssl passwd -1 ubuntu)" a useradd comando.

In alternativa, aggiungi le seguenti righe al tuo Dockerfile :

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN echo 'ubuntu:ubuntu' | chpasswd

La prima istruzione della shell è assicurarsi che -o pipefail l'opzione è abilitata prima di RUN con dentro una pipa. Leggi di più:Hadolint:Linting del tuo Dockerfile.


Per evitare le domande interattive di adduser, puoi chiamarlo con questi parametri:

RUN adduser --disabled-password --gecos '' newuser

Il --gecos parametro viene utilizzato per impostare le informazioni aggiuntive. In questo caso è solo vuoto.

Sui sistemi con busybox (come Alpine), usa

RUN adduser -D -g '' newuser

Vedi busybox adduser


Linux
  1. Come aggiungere un utente a un gruppo in Linux

  2. Come aggiungere utenti a Ubuntu?

  3. Come uscire da un container Docker

  4. Come inviare un segnale al programma eseguito in un contenitore docker?

  5. Come eseguire un cron job all'interno di un contenitore docker

Come aggiungere e rimuovere utenti in Debian

Come eseguire PHPMyAdmin in un contenitore Docker

Come eseguire Grafana in un contenitore Docker

Come aggiungere un volume a un contenitore Docker esistente

Come eseguire i contenitori Docker

Come creare/aggiungere utenti in Linux