Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Lösung für den Fehler beim Benutzerwechsel im Docker-Container

Lösung für den Fehler beim Benutzerwechsel im Docker-Container

PHPz
PHPzOriginal
2023-03-31 17:47:13923Durchsuche

Docker ist eine häufig verwendete Virtualisierungstechnologie, die uns hilft, Anwendungen schnell zu erstellen und bereitzustellen. Es zeichnet sich dadurch aus, dass es schnell, leicht und sicher ist. Eines der wichtigen Sicherheitsmerkmale besteht darin, dass die Anwendung beim Ausführen in einem Container in einer eingeschränkten Umgebung ausgeführt werden kann. Darüber hinaus unterstützen Docker-Container auch die Verwaltung von Benutzerberechtigungen, was die Anwendungssicherheit verbessern kann, indem ein neuer Benutzer hinzugefügt und zu diesem Benutzer gewechselt wird. Beim Wechseln von Benutzern können jedoch einige Probleme auftreten. Beispielsweise können Benutzer im Container nicht den Befehl su verwenden, um zu anderen Benutzern zu wechseln. Im Folgenden erläutern wir die Hauptgründe und Lösungen für das Scheitern des Benutzerwechsels in Docker-Containern.

  1. Der Befehl sudo ist nicht im Docker-Container installiert.

Wenn Sie den Befehl su verwenden, um Benutzer im Docker-Container zu wechseln, müssen Sie den Befehl sudo verwenden, um die Berechtigungen vorübergehend zu erhöhen, und das Root-Benutzerkennwort eingeben, um su auszuführen Befehl. Wenn der Befehl sudo nicht im Docker-Container installiert ist, wird der Benutzerwechselvorgang nicht reibungslos durchgeführt. Daher müssen Sie den Befehl sudo im Container installieren, um dieses Problem zu lösen:

apt-get update && apt-get install -y sudo

Nach der Installation können Sie versuchen, den Befehl su username zum Wechseln des Benutzers zu verwenden.

  1. Die Benutzer im Docker-Container entsprechen nicht der UID und GID des Benutzers des Host-Computers.

Die UID und GID des Benutzers im Docker-Container können sich von der UID und GID des Host-Computers unterscheiden kann dazu führen, dass beim Wechseln der Benutzerfrage Berechtigungen angezeigt werden. Wenn Sie beispielsweise einen Apache-Server in einem Docker-Container ausführen und mit dem Befehl su www-data zum Benutzer www-data wechseln, stimmen die UID und GID des Benutzers www-data nicht mit der UID und GID des Benutzers überein Dementsprechend kann der www-data-Benutzer auf bestimmte Verzeichnisse und Dateien auf dem Host-Computer nicht zugreifen. Um dieses Problem zu lösen, müssen Sie der Docker-Datei eine USER-Direktive hinzufügen, um die UID und GID des Benutzers im Container anzugeben, zum Beispiel:

FROM ubuntu:latest

RUN useradd -ms /bin/bash youruser
USER youruser

Hier erstellen wir einen Benutzer mit dem Namen youruser und geben dessen UID und GID an als Standardwert. Wenn Sie andere Benutzernamen und UIDs im Container verwenden müssen, können Sie diese entsprechend der tatsächlichen Situation ändern.

  1. SELinux und AppArmor sind in Docker-Containern nicht richtig konfiguriert

In einigen Linux-Betriebssystemen wie Red Hat Enterprise Linux (RHEL) oder Ubuntu können SELinux oder AppArmor die Zugriffsrechte von Benutzern im Container einschränken. Wenn Sie den Befehl su nicht zum Wechseln von Benutzern in einem Docker-Container verwenden, sollten Sie erwägen, SELinux oder AppArmor zu deaktivieren oder es so zu konfigurieren, dass Benutzer im Container auf bestimmte Verzeichnisse und Dateien zugreifen können. Hier stellen wir kurz vor, wie man AppArmor in Ubuntu konfiguriert, um Benutzern im Container den Zugriff auf bestimmte Verzeichnisse und Dateien auf dem Host-Computer zu ermöglichen.

Zuerst müssen Sie der Docker-Datei die folgende Anweisung hinzufügen:

RUN apt-get update && apt-get install -y apparmor-utils

Dann erstellen Sie eine Datei mit dem Namen your-container im Verzeichnis /etc/apparmor.d/docker/ und fügen den folgenden Inhalt hinzu:

/path/to/your/dir rw,

The / Der obige Pfad/zu/Ihrem/Verzeichnis stellt ein Verzeichnis auf dem Host-Computer dar, das Sie nach Bedarf ändern können. Laden Sie nach dem Hinzufügen die AppArmor-Konfiguration neu:

/etc/init.d/apparmor reload

Die oben genannten sind einige mögliche Gründe und Lösungen für Fehler beim Benutzerwechsel in Docker-Containern. Wenn Sie diese Probleme und Lösungen verstehen, können Sie die Benutzerrechteverwaltung und Sicherheit für Docker-Container besser verstehen.

Das obige ist der detaillierte Inhalt vonLösung für den Fehler beim Benutzerwechsel im Docker-Container. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn