Problème
crontab -l la commande échoue avec l'erreur suivante.
# crontab -l You (user) are not allowed to access to (crontab) because of pam configuration.
Vous verriez ci-dessous les journaux dans le fichier journal 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)
Le fichier journal /var/log/secure aurait les erreurs ci-dessous :
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)
Solution
Il peut y avoir 2 raisons à cette erreur :
1. Mot de passe expiré pour l'utilisateur
2. l'utilisateur n'est pas autorisé à accéder à cron dans /etc/security/access.conf fichier.
Vérifier le mot de passe utilisateur expiré
1. Tout d'abord, vérifiez l'expiration du mot de passe de l'utilisateur à l'aide de chage commande.
# 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
D'après la sortie ci-dessus, nous pouvons dire que le mot de passe a expiré le 2 septembre 2017. La commande Crontab échouera si elle est exécutée en tant qu'utilisateur dont le mot de passe est expiré. PAM ne permettra pas d'exécuter cronjob en tant qu'utilisateur si le mot de passe de cet utilisateur a expiré.
2. Si le mot de passe a expiré, un nouveau mot de passe devra être défini pour l'utilisateur afin de lui permettre d'exécuter des tâches cron. Pour définir le mot de passe de l'utilisateur, exécutez la commande suivante en tant que root :
# passwd user
3. Vous pouvez également définir le mot de passe pour qu'il n'expire jamais pour cet utilisateur particulier s'il est autorisé dans votre environnement.
CentOS / RHEL :Comment configurer un compte utilisateur pour qu'il n'expire jamaisAutoriser l'utilisateur à accéder à la ressource cron dans le fichier /etc/security/access.conf
1. Un autre problème pourrait être que l'utilisateur n'est pas autorisé à utiliser les ressources cron dans /etc/security/access.conf dossier. Dans ce cas, vous pouvez autoriser l'accès utilisateur cron en ajoutant la ligne ci-dessous dans le fichier /etc/security/access.conf. Habituellement, cette ligne est hachée par défaut.
# 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. Vérifiez également toute entrée où l'utilisateur se voit refuser l'accès à cron. Dans ce cas, vous devez supprimer l'entrée du fichier /etc/security/access.conf. Un exemple d'entrée pour refuser l'accès cron à l'utilisateur peut être comme indiqué ci-dessous :
# vi /etc/security/access.conf # Deny all other users access by any means. -: ALL : ALL
ou
# vi /etc/security/access.conf # deny user "user" access to cron - : user : cron crond :0
Vérifier
Si vous avez appliqué l'une des solutions expliquées ci-dessus, vous pouvez exécuter la commande crontab -l ou crontab -e en tant qu'utilisateur pour vérifier l'accès cron.