Problema
crontab -l el comando falla con el siguiente error.
# crontab -l You (user) are not allowed to access to (crontab) because of pam configuration.
Vería los registros a continuación en el archivo de registro cron /var/log/cron :
Sep 19 11:01:01 geeklab crond[125479]: (user) PAM ERROR (Permission denied) Sep 19 11:01:01 geeklab crond[125479]: (user) FAILED to authorize user with PAM (Permission denied) Sep 19 11:01:26 geeklab crontab[125631]: (user) PAM ERROR (Permission denied)
El archivo de registro /var/log/secure tendría los siguientes errores:
Sep 19 11:01:26 geeklab crontab: pam_access(crond:account): access denied for user `root' from `cron' Sep 19 11:01:26 geeklab crontab: pam_unix(crond:account): expired password for user root (password aged)
Solución
Puede haber 2 razones para este error:
1. Contraseña caducada para el usuario
2. el usuario no tiene permitido el acceso a cron en /etc/security/access.conf archivo.
Comprobar contraseña de usuario caducada
1. En primer lugar, verifique la caducidad de la contraseña del usuario usando chage comando.
# chage -l user Last password change : Jul 19, 2017 Password expires : Sep 02, 2017 ### password has expired Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 45 Number of days of warning before password expires : 7
Del resultado anterior podemos decir que la contraseña expiró el 2 de septiembre de 2017. El comando crontab fallará si se ejecuta como un usuario cuya contraseña venció. PAM no permitirá ejecutar cronjob como usuario si la contraseña de ese usuario ha caducado.
2. Si la contraseña ha caducado, será necesario establecer una nueva contraseña para el usuario a fin de permitirle ejecutar cronjobs. Para establecer la contraseña del usuario, ejecute el siguiente comando como root:
# passwd user
3. También puede configurar la contraseña para que nunca caduque para ese usuario en particular si está permitido en su entorno.
CentOS/RHEL:Cómo configurar una cuenta de usuario para que nunca caduquePermitir al usuario acceder al recurso cron en el archivo /etc/security/access.conf
1. Otro problema podría ser que el usuario no tenga permiso para usar los recursos cron en /etc/security/access.conf expediente. En ese caso, puede permitir el acceso cron del usuario agregando la siguiente línea en el archivo /etc/security/access.conf. Por lo general, esta línea tiene un hash de forma predeterminada.
# vi /etc/security/access.conf # User "root" should be allowed to get access via cron .. tty5 tty6. + : user : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
2. También verifique si hay alguna entrada en la que al usuario se le niegue el acceso para usar cron. Debe eliminar la entrada en ese caso del archivo /etc/security/access.conf. Una entrada de ejemplo para denegar el acceso cron al usuario puede ser como se muestra a continuación:
# vi /etc/security/access.conf # Deny all other users access by any means. -: ALL : ALL
o
# vi /etc/security/access.conf # deny user "user" access to cron - : user : cron crond :0
Verificar
Si ha aplicado alguna de las soluciones explicadas anteriormente, puede ejecutar el comando crontab -l o crontab -e como usuario para verificar el acceso cron.