Mengatasi Error Logrotate Zimbra “parent directory has insecure permissions”

Posted by

Di salah satu klien Excellent yang menggunakan Zimbra sebagai sistem email servernya, pernah mengalami kendala dimana konfigurasi logrotate nya tidak berjalan sehingga file zimbra.log dan zimbra-stats.log nya secara terus menerus aktif dan membesar hingga 12 GB karena menyimpan log dari tanggal 29 Oktober 2018 hingga sekarang 14 Februari 2019 dalam satu file tersebut.

root@proxy1:~# ls /var/log/zimbra* -ltrh
-rw-r----- 1 syslog adm    0 Jun 10  2018 /var/log/zimbra.log-2018061007.backup
-rw-r--r-- 1 syslog adm 1.6M Oct 26 07:58 /var/log/zimbra.log.4.gz
-rw-r--r-- 1 syslog adm 1.3M Oct 27 08:03 /var/log/zimbra.log.3.gz
-rw-r--r-- 1 syslog adm 1.6M Oct 28 08:00 /var/log/zimbra.log.2.gz
-rw-r--r-- 1 syslog adm 1.2M Oct 29 07:39 /var/log/zimbra.log.1.gz
-rw-r--r-- 1 syslog adm 1.1G Feb 14 09:48 /var/log/zimbra-stats.log
-rw-r--r-- 1 syslog adm  12G Feb 14 09:48 /var/log/zimbra.log

Ketika dicoba di force untuk rotate menggunakan command logrotate -f /etc/logrotate.d/zimbra, muncul pesan error seperti berikut ini.

error: skipping "/var/log/zimbra.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.
error: skipping "/var/log/zimbra-stats.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.

Untuk pesan error tersebut biasanya karena adanya permission yang tidak aman untuk hak penulisan pada file tersebut, dimana user selain root bisa mengubah file log tersebut.

# Eskalasi

Untuk eskalasinya bisa tambahkan baris su root root untuk memberi tahu logrotate agar menggunakan user/group apa yang digunakan untuk menjalankan rotasi log.

Edit file /etc/logrotate.d/zimbra, kemudian cari section log zimbra.log dan zimbra-stats.log, dan edit menjadi seperti berikut

/var/log/zimbra.log {
    su root root
    daily
    missingok
    notifempty
    create 0644 syslog adm
    postrotate
      /usr/sbin/service rsyslog restart >/dev/null || true
      su - zimbra -c "/opt/zimbra/bin/zmconfigdctl restart" > /dev/null 2>&1 || true
    endscript
    rotate 7
    compress
}

/var/log/zimbra-stats.log {
    su root root
    daily
    missingok
    notifempty
    create 0644 syslog adm
    postrotate
      /usr/sbin/service rsyslog restart >/dev/null || true
      su - zimbra -c "/opt/zimbra/bin/zmconfigdctl restart" > /dev/null 2>&1 || true
    endscript
    rotate 0
}

Simpan file tersebut, lalu jalankan logrotate

/opt/zimbra/libexec/zmsyslogsetup
service rsyslog restart
logrotate -f /etc/logrotate.d/zimbra

Maka secara otomatis file log yang besar tadi akan langsung berotasi dan digantikan oleh file log yang baru, dan setiap malam logrotate juga melakukan rotasi log kembali dengan lancar tanpa ada kendala error yang sebelumnya.

Note : Cara diatas tidak hanya berlaku untuk rotate log Zimbra saja, tapi bisa juga digunakan untuk rotate log lainnya jika mengalami kendala yang sama.

Mungkin cukup sekian, semoga bermanfaat

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.