多くの場合、これは実稼働環境で、root 以外のユーザーが crontab エントリを作成できないようにするための要件です。これを実現するには 3 つの方法があります:
1. システムへの非 root ユーザー ssh を無効にすると、非 root ユーザーはシェルをまったく使用できなくなります。手順については、この投稿を参照してください。
2. ユーザーをファイル /etc/cron.deny に追加します 、各ユーザーを 1 行に (リスト ユーザーのみに影響する典型的な方法):
# cat /etc/cron.deny johny
注: ファイル /etc/cron.allow と /etc/cron.deny の間に競合がないことを確認してください。
crontab エントリを作成して、拒否されたユーザーを確認します:
$ crontab -e You (johny) are not allowed to use this program (crontab) See crontab(1) for more information
3. crontab コマンドの実行権限を非推奨にします (root 以外のすべてのユーザーに影響する積極的なアプローチ):
デフォルトの権限:
# ls -lrt /usr/bin/crontab -rwsr-xr-x 1 root root 57552 Apr 21 2015 /usr/bin/crontab
許可を変更します (setuid ビットを削除します) :
# chmod 700 /usr/bin/crontab # ls -lrt /usr/bin/crontab -rwx------ 1 root root 57552 Apr 21 2015 /usr/bin/crontab
注:ファイルのアクセス許可を変更する前に、バックアップ ファイルがあることを確認してください。
パッケージのアップグレード後、この変更はデフォルトに戻されます。
デフォルトのアクセス許可:
# stat /usr/bin/crontab File: ‘/usr/bin/crontab’ Size: 57552 Blocks: 120 IO Block: 4096 regular file Device: fd00h/64768d Inode: 10751442 Links: 1 Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-12 17:03:10.112443944 +0530 Modify: 2015-04-21 19:38:05.000000000 +0530 Change: 2016-03-14 14:03:30.347276747 +0530 Birth: -
crontab エントリを作成して、拒否されたユーザーを確認します:
$ crontab -e bash: /usr/bin/crontab: Permission denied