Heim >Betrieb und Instandhaltung >Docker >Lösung für den Fehler beim Benutzerwechsel im Docker-Container
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.
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.
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.
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!