Das Problem
In einigen Situationen kann ein normaler Benutzer in einem Docker-Container den Befehl „su“ nicht ausführen, um den Benutzer zu wechseln. Wenn der Befehl „su“ ausgegeben wird, wird der folgende Fehler zurückgegeben.
$ su - Password: [entering correct password] su: Authentication failure
Die Lösung
Die Sticky-Berechtigung kann in /usr/bin/su im Container fehlen. Mit Root-Rechten können Sie Folgendes beheben:
1. Überprüfen Sie zuerst die aktuellen Berechtigungen für die Binärdatei /usr/bin/su.
# ls -l /usr/bin/su -rwxr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
Wie wir in der obigen Ausgabe sehen können, fehlen die Sticky-Bit-Berechtigungen.
2. Fügen Sie die Sticky-Bit-Berechtigungen wie folgt zur Datei /usr/bin/su hinzu:
# chmod u+s /usr/bin/su
3. Überprüfen Sie die Berechtigungen erneut und suchen Sie nach dem „x“-Flag am Ende des Berechtigungsfelds.
# ls -l /usr/bin/su -rwsr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
4. Versuchen Sie erneut, su im Docker-Container auszuführen.
$ su - postgres Password: Last login: Tue Aug 6 12:13:57 JST 2019 on pts/1 postgres@[hostname] $