揮発性のメモ2

知識をメモ書きしておく

logrotateできないとき

# logrotate -f /etc/logrotate.conf
error: failed to rename /var/log/hoge/oyadama.log to /var/log/hoge/oyadama.log.1: Permission denied

ログディレクトリにパーミッションが無い

error: error setting owner of /var/log/hoge/oyadama.log to uid 0 and gid 0: Operation not permitted
/var/log/hoge/oyadama.log
{
        daily
        rotate 99
        missingok
        compress
        delaycompress
        create 666
        su www-data www-data
}

ログファイルのユーザが指定のユーザ(この場合www-dataではない)
※この状態だと、ローテートはされるが新しいファイルのパーミッションが 600 になる不具合がある

-rw------- 1 www-data www-data 0 Sep 20 11:13 oyadama.log
-rw-rw-rw- 1 root     root     0 Sep 20 11:12 oyadama.log.1
error: skipping "/var/log/hoge/oyadama.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
/var/log/hoge/oyadama.log
{
        daily
        rotate 99
        missingok
        compress
        delaycompress
        create 666 www-data www-data
}

su の項目が無いとエラーになりローテートされない

ずるい方法

/var/log/hoge/oyadama.log
{
    daily
    rotate 99
    missingok
    compress
    delaycompress

    prerotate
        chmod 666 $1
        chown www-data $1
    endscript
    create 0666 www-data www-data
    su www-data www-data
}