El problema
En algunas situaciones, un usuario normal dentro de un contenedor Docker no puede ejecutar el comando 'su' para cambiar de usuario. Cuando se emite el comando 'su', regresa el siguiente error.
$ su - Password: [entering correct password] su: Authentication failure
La solución
Es posible que falte el permiso adhesivo en /usr/bin/su dentro del contenedor. Con privilegios de root, puede arreglar lo siguiente:
1. Primero verifique los permisos actuales para el archivo binario /usr/bin/su.
# ls -l /usr/bin/su -rwxr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
Como podemos ver en el resultado de arriba, faltan los permisos de sticky bit.
2. Agregue los permisos de sticky bit al archivo /usr/bin/su de la siguiente manera:
# chmod u+s /usr/bin/su
3. Verifique los permisos nuevamente y verifique el indicador "x" al final del campo de permiso.
# ls -l /usr/bin/su -rwsr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
4. Intente hacer su de nuevo dentro del contenedor docker.
$ su - postgres Password: Last login: Tue Aug 6 12:13:57 JST 2019 on pts/1 postgres@[hostname] $