2015-01-30 4 views
4

я пишу свою собственную конфигурацию LogRotate для некоторых веб-приложения:Проблемы с разрешениями на LogRotate

/home/me/public_html/logs/*.log { 
    daily 
    missingok 
    rotate 15 
    compress 
    delaycompress 
    notifempty 
    create 0660 me www-data 
    nosharedscripts 
} 

Но работает Logrotate для этих файлов результатов:

$ sudo logrotate -d -v *.log 
Ignoring logfile1.log because of bad file mode. 
Ignoring logfile2.log because of bad file mode. 
Ignoring otherlogfile.log because of bad file mode. 

Handling 0 logs 
$ ls -l 
-rw-rw---- 1 me www-data 893584 Jan 27 16:01 logfile1.log 
-rw-rw---- 1 me www-data 395011 Jan 27 16:01 logfile2.log 
-rw-rw---- 1 me www-data 4949115 Jan 27 16:01 otherlogfile.log 

Является ли это связано с файлом разрешений фактических файлов журналов в каталоге разрешений, указанных в create 0660 me www-data?

Если я изменяю filepermissions в -rw-r----- и create линию

create 0640 me www-data 

я

$ sudo logrotate -d -v *.log 
Ignoring logfile1.log because the file owner is wrong (should be root). 
Ignoring logfile2.log because the file owner is wrong (should be root). 
Ignoring otherlogfile.log because the file owner is wrong (should be root). 

Handling 0 logs 

Моя система является Debian Testing/Jessie.

ответ

10

Хорошо, глупо ситуация. Команда logrotate должна быть выполнена в файле конфигурации вместо файла журнала.

$ sudo logrotate -d -v /etc/logrotate.d/my-app 

Это представляется важным, что родительский каталог логфайл не мир записываемый (------rw-) и не доступен для записи любого не root группы (---rw----). В противном случае вы увидите:

error: skipping "/home/me/public_html/logs/logfile1.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.