web-dev-qa-db-ja.com

ユーザーxはこのプログラム(crontab)を使用できません

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_に追加すると、両方のコマンドが正常に動作します。

9
Adam Michalik

Crontabのソースを確認したところ、ユーザーが/etc/cron.allowを開けない場合(たとえば、chmod 0 /etc/cron.allowの後)、crontabは、ユーザーがcron.allowが存在しないかのように、それを使用できると考えていることがわかりました。 。

ただし、rootは任意のファイルを読み取ることができるため、crontabチェックコードは期待どおりに機能します。ですから、/etc/cron.allowの最初の権限と、おそらくSELinux/AppArmor監査ログを確認することをお勧めします。

11
Michael Zarubin