定期的に処理を実行するには欠かせないcron。デフォルトだと誰でも実行できるようになっているけれども、要件によっては「このユーザにはcron使わせたくねぇな(;´Д`)」とか「基本的には誰にも使わせたくないんだけど、コイツだけには使わせてやるか(*゜∀゜*)」的なことをやりたい場合がある。
で、それは簡単に実現できるよ……というお話。あ、CentOS 6.x系のお話ね。
ということで、RTFMの格言(?)を思い出しつつ、crontab(1)のman pageを参照してみる。それについて書かれている部分を一部引用したのがコイツ。
allow ファイルが存在する場合、ユーザーがこのコマンドを使用するには、 そのファイル中に(そのユーザーが)リストアップされている必要がある。 allow ファイルは存在せずに deny ファイルが存在する場合、ユーザーがこのコマンドを使用するには、 deny ファイル中にリストアップされて いない 必要がある。 いずれのファイルも存在しない場合、スーパーユーザーのみがこのコマンドを 使えるか、あるいはすべてのユーザーがこのコマンドを使えることになり、 そのいずれであるかはサイトに依存した設定パラメータによって決まる。
ちなみに文中の「allowファイル」というのは「/etc/cron.allow」、「denyファイル」ってのは「/etc/cron.deny」のこと……だと思ってたんだけど、man pageによるとそれぞれ「/var/cron/allow」、「/var/cron/deny」って書いてあるな(゜Д゜;)
RPM(cronie-1.4.4-7.el6.x86_64)の中身を見てみると、下記の通り「/etc/cron.deny」が作られてるから、「/etc/cron.allow」と「/etc/cron.deny」で良いと思われる。たぶん。
# rpm -ql cronie /etc/cron.d /etc/cron.d/0hourly /etc/cron.deny /etc/pam.d/crond /etc/rc.d/init.d/crond /etc/sysconfig/crond /usr/bin/crontab /usr/sbin/crond /usr/share/doc/cronie-1.4.4 /usr/share/doc/cronie-1.4.4/AUTHORS /usr/share/doc/cronie-1.4.4/COPYING /usr/share/doc/cronie-1.4.4/ChangeLog /usr/share/doc/cronie-1.4.4/INSTALL /usr/share/doc/cronie-1.4.4/README /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz /usr/share/man/man8/cron.8.gz /usr/share/man/man8/crond.8.gz /var/spool/cron