Por alguna razón, en una máquina me era imposible utilizar el comando su para moverme de un usuario sin privilegios al usuario root.
Googleando un poco, otros usuarios sugerían acciones como las siguientes:
- Revisar que efectívamente el password era correcto: sí, era un password correcto.
- Revisar que la entrada para root en /etc/passwd y /etc/shadow no tuviera algún error: se veía todo normal.
- Verificar que los archivos en /etc/pam.d/ (particularmente /etc/pam.d/su, así como los archivos common-auth, common-password, etc.) no tuvieran alguna linea de configuración que nos impidiera utilizar el comando correctamente: para esto comparé los archivos contra los de otro sistema funcionando bien, y todo era idéntico.
Pues bien, tras estar seguro de que no era ningún problema de los anteriores, revisando el archivo auth.log (En Debian está en /var/log), noté los siguientes errores:
Mar 20 04:53:42 ih unix_chkpwd[23238]: check pass; user unknown Mar 20 04:53:42 ih unix_chkpwd[23238]: password check failed for user (root)
Así que, tras buscar un poco más, mi problema era de permisos en el comando su.
Por algún motivo, en mi servidor este archivo tenía permisos incorrectos 755, cuando debe tener permisos 4755 (setuid).
Así que lo solucionamos con un chmod
chmod 4755 /bin/su
Y ahora podemos utilizar normalmente el comando.
Nota: Este problema me ha pasado anteriormente en otros servidores virtuales, y mi teoría es que está relacionado con un template de OpenVZ con los permisos mal configurados en este archivo.