Skip to content

CentOS7/Ubuntu16 で cron のオーナー/パーミッションを変更した場合の挙動

ユーザ毎の cron ファイルに対して、以下のケースで挙動を見てみました。テストは CentOS7 と Ubuntu16 で実施しました。

  1. オーナーを変更した場合
  2. パーミッションを変更した場合

結果

以下のような結果になりました。CentOS7 の方がオーナーやパーミッションの判定が厳しいようです。

OS ユーザ毎の設定ファイル位置 オーナーを変更した場合の挙動 パーミッションを変更した場合の挙動
CentOS7 /var/spool/cron X(WRONG FILE OWNER エラー) X(BAD FILE MODE エラー)
Ubuntu16 /var/spool/cron/crontabs

デフォルトのオーナー/パーミッション

CentOS7

crontab -u USERNAME でユーザ毎の設定ファイルを作成した場合、/var/spool/cron 配下にファイルが作成されました。各ディレクトリのオーナー/パーミッションは以下のようになっていました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# tree -fpug /var/spool
/var/spool
    ・
    ・
    ・
├── [drwx------ root     root    ]  /var/spool/cron
│   └── [-rw------- root     root    ]  /var/spool/cron/user
    ・
    ・
    ・

Ubuntu 16

crontab -u USERNAME でユーザ毎の設定ファイルを作成した場合、/var/spool/cron/crontabs 配下にファイルが作成されました。各ディレクトリのオーナー/パーミッションは以下のようになっていました。

1
2
3
4
5
6
7
8
# tree -fpug /var/spool/
/var/spool
|-- [drwxr-xr-x root     root    ]  /var/spool/cron
|   `-- [drwx-wx--T root     crontab ]  /var/spool/cron/crontabs
|       `-- [-rw------- user     crontab ]  /var/spool/cron/crontabs/user
    ・
    ・
    ・    

ファイルの所有者を変更した場合

CentOS7

ファイルの所有者を「user」以外に変更してみました。

1
2
# ls -al /var/spool/cron/user
-rw-------  1 user2 user 20 Nov  3 15:17 user

/var/log/cron を確認すると「エラーになり、cron が実行されていない」ことが確認出来ました。

1
Nov  3 15:31:01 centos-02 crond[470]: (user) WRONG FILE OWNER (/var/spool/cron/user)

Ubuntu16

ファイルの所有者を「user」以外に変更してみました。

1
2
# ls -al /var/spool/cron/crontabs/user
-rw------- 1 user2 user 1109 Nov  3 15:21 /var/spool/cron/crontabs/user

/var/log/syslog を確認すると「cron が実行されていること」が確認出来ました。

1
Nov  3 15:40:01 Ubuntu-02 CRON[11707]: (user) CMD (/bin/date)

ファイルのパーミッションを変更した場合

ファイルのパーミッションを変更し、グループにも Read/Write 権限を付与してみました。

1
2
# ls -al /var/spool/cron/user
-rw-rw---- 1 root root 20 Nov  3 15:17 /var/spool/cron/user

/var/log/cron を確認すると「エラーになり、cron が実行されていない」ことが確認出来ました。

1
Nov  3 15:33:01 centos-02 crond[470]: (user) BAD FILE MODE (/var/spool/cron/user)

Ubuntu16

ファイルのパーミッションを変更し、グループにも Read/Write 権限を付与してみました。

1
2
# ls -al /var/spool/cron/crontabs/user
-rw-rw---- 1 user crontab 1109 Nov  3 15:21 /var/spool/cron/crontabs/user

/var/log/syslog を確認すると「cron が実行されていること」が確認出来ました。

1
Nov  3 15:44:01 Ubuntu-02 CRON[11725]: (user) CMD (/bin/date)