! bad user (foo) en los cron jobs de Solaris

Suponiendo que tenemos un usuario en Solaris que debería estar ejecutando los cron jobs establecidos en su crontab pero no está siendo así, lo primero que debemos hacer es revisar los logs de cron para encontrar el origen del problema. Podemos consultarlos en /var/cron/log.

Si lo que vemos es entradas similares a la siguiente en el log…

! bad user (foo) Tue Sep 12 15:30:10 2012

… puede significar que el usuario foo no tiene privilegios para la ejecución de crontabs, habiendo sido denegado a través del fichero /etc/cron.deny (ver «Cron linux: autorizar o denegar su uso a usuarios«):

foo:~$ crontab -l foo
You (foo) are not allowed to use this program (crontab)
See crontab(1) for more information

Pero también es muy probable que el usuario se encuentre bloqueado a nivel de sistema operativo, ya sea porque su password ha expirado, bloqueo de cuenta por excesivos logins incorrectos, etc. Puede haber muchas causas. En este caso veremos que la cuenta está marcada como el prefijo \*LK\* en el password (locked) de su entrada en el fichero /etc/shadow:

foo:\*LK\*asd73jasd80kj:::::::

También podríamos averiguarlo sin mirar el fichero shadow, con el comando passwd -s:

# passwd -s foo
foo    LK

Para desbloquearla utilizamos el parámetro -u (unlock) de passwd:

# passwd -u foo
passwd: password information changed for foo
# passwd -s foo
foo       PS

Y ya podemos ejecutar crons. El prefijo LK ha desaparecido del fichero /etc/shadow:

foo:asd73jasd80kj:::::::