最近、ユーザーのcrontabから実行するように構成されたジョブが実行を停止しました。ユーザーのcrontabをリストまたは編集しようとすると、結果は次のようになります。
user@Host:~$ crontab -l
crontabs/user/: fopen: Permission denied
user@Host:~$ crontab -e
crontabs/user/: fdopen: Permission denied
明らかにそれはアクセス許可に関連していますが、アクセス許可がどのように変更されたかはわかりません。
/ usr/bin/crontabの権限:
$ ll /usr/bin/crontab
-rwxr-sr-x 1 root libuuid 35896 Aug 24 2010 /usr/bin/crontab*
/ var/spool/cron/crontabディレクトリの権限:
# ll /var/spool/cron/
total 12
drwxr-xr-x 3 root root 4096 Oct 12 2010 ./
drwxr-xr-x 7 root root 4096 Jun 5 20:51 ../
drwx-wx--T 2 root libuuid 4096 Jan 10 2014 crontabs/
Crontabディレクトリ内の権限:
# ll /var/spool/cron/crontabs/
total 16
drwx-wx--T 2 root libuuid 4096 Jan 10 2014 ./
drwxr-xr-x 3 root root 4096 Oct 12 2010 ../
-rw------- 1 1017 libuuid 1120 Dec 3 2013
-rw------- 1 root libuuid 1342 Jan 10 2014 root
ディストリビューション情報:
# cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"
/ usr/bin/crontabの権限は次のようになります。
owner=root
group=root
perms= 4755 (rws rx rx)
/ usr/bin/crontabに間違ったグループ所有者がいます。さらに、sgidがあり、sidが必要です。
スーパーユーザーアクセス権がある場合は、権限を変更せずにユーザーのcrontabを編集できます。
$ Sudo crontab -u username -e
Sudoがなくてもユーザーのcrontabを編集できると思いましたが、crontab
グループに自分を追加した後でも、同じ権限の問題が発生します。ユーザーのcrontab(/var/spool/cron/crontabs
)は-rw-------
、グループはcrontab
です。