Problema
crontab -l comando non riesce con il seguente errore.
# crontab -l You (user) are not allowed to access to (crontab) because of pam configuration.
Di seguito vedrai i log nel file di 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)
Il file di registro /var/log/secure avrebbe sotto gli errori:
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)
Soluzione
Potrebbero esserci 2 ragioni per questo errore:
1. Password scaduta per l'utente
2. l'utente non ha consentito l'accesso a cron in /etc/security/access.conf file.
Verifica la password utente scaduta
1. Prima di tutto, controlla la scadenza della password per l'utente utilizzando 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
Dall'output sopra possiamo dire che la password è scaduta il 2 settembre 2017. Il comando Crontab fallirà se viene eseguito come utente la cui password è scaduta. PAM non consentirà di eseguire cronjob come utente se la password di quell'utente è scaduta.
2. Se la password è scaduta, sarà necessario impostare una nuova password per l'utente per consentire all'utente di eseguire cronjob. Per impostare la password per l'utente, esegui il seguente comando come root:
# passwd user
3. Puoi anche impostare la password in modo che non scada mai per quel particolare utente se consentito nel tuo ambiente.
CentOS / RHEL:come configurare un account utente in modo che non scada maiConsenti all'utente di accedere alla risorsa cron nel file /etc/security/access.conf
1. Un altro problema potrebbe essere che all'utente non è consentito utilizzare le risorse cron in /etc/security/access.conf file. In tal caso è possibile consentire all'utente l'accesso cron aggiungendo la riga sottostante nel file /etc/security/access.conf. Di solito questa riga è sottoposta a hash per impostazione predefinita.
# 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. Verificare anche eventuali voci in cui all'utente è negato l'accesso per utilizzare cron. È necessario rimuovere la voce in tal caso dal file /etc/security/access.conf. Una voce di esempio per negare l'accesso cron all'utente può essere mostrata di seguito:
# 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
Verifica
Se hai applicato una delle soluzioni spiegate sopra, puoi eseguire il comando crontab -l o crontab -e come utente per verificare l'accesso al cron.