問題
crontab -l コマンドは次のエラーで失敗します。
# crontab -l You (user) are not allowed to access to (crontab) because of pam configuration.
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)
ログ ファイル /var/log/secure 以下のエラーが発生します:
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)
解決策
このエラーには 2 つの理由が考えられます:
1.ユーザーの有効期限が切れたパスワード
2.ユーザーは /etc/security/access.conf で cron へのアクセスを許可されていません ファイル。
期限切れのユーザー パスワードを確認する
1. まず、chage を使用してユーザーのパスワードの有効期限を確認します コマンド。
# 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
上記の出力から、パスワードが 2017 年 9 月 2 日に期限切れになったと言えます。Crontab コマンドは、パスワードの期限が切れているユーザーとして実行すると失敗します。ユーザーのパスワードの有効期限が切れている場合、PAM はユーザーとして cronjob を実行することを許可しません。
2. パスワードの有効期限が切れている場合、ユーザーが cron ジョブを実行できるようにするには、ユーザーに新しいパスワードを設定する必要があります。ユーザーのパスワードを設定するには、root として次のコマンドを実行します:
# passwd user
3. 環境で許可されている場合、その特定のユーザーのパスワードが無期限になるように設定することもできます。
CentOS / RHEL :ユーザー アカウントを無期限に設定する方法/etc/security/access.conf ファイル内の cron リソースへのアクセスをユーザーに許可する
1. 別の問題として、ユーザーが /etc/security/access.conf で cron リソースの使用を許可されていない可能性があります ファイル。その場合、ファイル /etc/security/access.conf に以下の行を追加することで、ユーザーの cron アクセスを許可できます。通常、この行はデフォルトでハッシュされます。
# 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. ユーザーが cron を使用するためのアクセスを拒否されているエントリも確認します。その場合、ファイル /etc/security/access.conf からエントリを削除する必要があります。ユーザーへの cron アクセスを拒否するエントリの例を以下に示します:
# vi /etc/security/access.conf # Deny all other users access by any means. -: ALL : ALL
または
# vi /etc/security/access.conf # deny user "user" access to cron - : user : cron crond :0
確認
上記の解決策のいずれかを適用した場合は、コマンド crontab -l を実行できます。 または crontab -e cron アクセスを確認するユーザーとして。