Le problème
Dans certaines situations, un utilisateur normal dans un conteneur Docker ne peut pas exécuter la commande "su" pour changer d'utilisateur. Lorsque la commande "su" est émise, l'erreur suivante revient.
$ su - Password: [entering correct password] su: Authentication failure
La solution
L'autorisation collante peut être manquante dans /usr/bin/su dans le conteneur. Avec le privilège root, vous pouvez corriger comme suit :
1. Vérifiez d'abord les autorisations actuelles pour le fichier binaire /usr/bin/su.
# ls -l /usr/bin/su -rwxr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
Comme nous pouvons le voir dans la sortie ci-dessus, les autorisations sticky bit sont manquantes.
2. Ajoutez les autorisations sticky bit au fichier /usr/bin/su comme suit :
# chmod u+s /usr/bin/su
3. Vérifiez à nouveau les autorisations et recherchez le drapeau "x" à la fin du champ d'autorisation.
# ls -l /usr/bin/su -rwsr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
4. Essayez à nouveau de faire su dans le conteneur docker.
$ su - postgres Password: Last login: Tue Aug 6 12:13:57 JST 2019 on pts/1 postgres@[hostname] $