Ubuntu 14.04
サービス(ログインなし)アカウント(名前はcurator
)のcrontabの設定で見られる動作を理解できません。
Rootとしてログインすると、次のようになります。
_# crontab -u curator -l
The user curator cannot use this program (crontab)
_
しかし、ユーザーのアカウントに切り替えると、正常に機能します。
_# su -s /bin/bash curator
curator@Host$ crontab -l
no crontab for curator
_
空の_/etc/cron.allow
_ファイルがあり、システムに_/etc/cron.deny
_ファイルがありません。 _man crontab
_によると:
/etc/cron.allowファイルが存在する場合、このコマンドを使用できるようにするには、そこにリストされている必要があります(1行に1ユーザー)。 /etc/cron.allowファイルは存在しないが、/ etc/cron.denyファイルは存在する場合、このコマンドを使用するには、/ etc/cron.denyファイルにリストされていてはなりません。
最初のコマンドを実行しているときのエラーを理解しましたが、ユーザーのアカウントに明示的に切り替えたときにcrontab
を実行できるのはなぜですか?
ユーザーを_/etc/cron.allow
_に追加すると、両方のコマンドが正常に動作します。
Crontabのソースを確認したところ、ユーザーが/etc/cron.allow
を開けない場合(たとえば、chmod 0 /etc/cron.allow
の後)、crontabは、ユーザーがcron.allow
が存在しないかのように、それを使用できると考えていることがわかりました。 。
ただし、rootは任意のファイルを読み取ることができるため、crontabチェックコードは期待どおりに機能します。ですから、/etc/cron.allow
の最初の権限と、おそらくSELinux/AppArmor監査ログを確認することをお勧めします。