Problem
crontab -l Befehl schlägt mit folgendem Fehler fehl.
# crontab -l You (user) are not allowed to access to (crontab) because of pam configuration.
Sie würden die folgenden Protokolle in der Cron-Protokolldatei /var/log/cron sehen :
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)
Die Protokolldatei /var/log/secure hätte folgende Fehler:
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)
Lösung
Dieser Fehler kann 2 Gründe haben:
1. Abgelaufenes Passwort für den Benutzer
2. Benutzer hat keinen Zugriff auf Cron in /etc/security/access.conf Datei.
Nach abgelaufenem Benutzerpasswort suchen
1. Prüfen Sie zunächst mit chage den Passwortablauf des Benutzers Befehl.
# 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
Aus der obigen Ausgabe können wir sagen, dass das Passwort am 2. September 2017 abgelaufen ist. Der Crontab-Befehl schlägt fehl, wenn er als Benutzer ausgeführt wird, dessen Passwort abgelaufen ist. PAM erlaubt es nicht, einen Cronjob als Benutzer auszuführen, wenn das Passwort dieses Benutzers abgelaufen ist.
2. Wenn das Passwort abgelaufen ist, muss ein neues Passwort für den Benutzer festgelegt werden, damit der Benutzer Cronjobs ausführen kann. Um das Passwort für den Benutzer festzulegen, führen Sie den folgenden Befehl als root aus:
# passwd user
3. Sie können das Kennwort für diesen bestimmten Benutzer auch so einstellen, dass es nie abläuft, wenn es in Ihrer Umgebung zulässig ist.
CentOS / RHEL :So konfigurieren Sie ein Benutzerkonto so, dass es nie abläuftErmöglichen Sie dem Benutzer den Zugriff auf die Cron-Ressource in der Datei /etc/security/access.conf
1. Ein weiteres Problem könnte sein, dass der Benutzer die Cron-Ressourcen in /etc/security/access.conf nicht verwenden darf Datei. In diesem Fall können Sie dem Benutzer Cron-Zugriff gewähren, indem Sie die folgende Zeile in die Datei /etc/security/access.conf einfügen. Normalerweise wird diese Zeile standardmäßig gehasht.
# 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. Suchen Sie auch nach Einträgen, bei denen dem Benutzer der Zugriff auf die Verwendung von cron verweigert wird. Sie müssen den Eintrag in diesem Fall aus der Datei /etc/security/access.conf entfernen. Ein Beispieleintrag, um dem Benutzer den Cron-Zugriff zu verweigern, kann wie folgt aussehen:
# vi /etc/security/access.conf # Deny all other users access by any means. -: ALL : ALL
oder
# vi /etc/security/access.conf # deny user "user" access to cron - : user : cron crond :0
Bestätigen
Wenn Sie eine der oben beschriebenen Lösungen angewendet haben, können Sie den Befehl crontab -l ausführen oder crontab -e als Benutzer, um den Cron-Zugriff zu überprüfen.