Làm thế nào để ngăn chặn logrotate thay đổi chủ sở hữu nhật ký xoay


9

Tôi có một chủ sở hữu logfile bởi người dùng 'apache' mà tôi muốn xoay bằng logrotate.

Tôi muốn làm điều đó bằng cách chạy logrotate như một người dùng khác, giả sử 'web' bằng cách sử dụng chiến lược copytruncate.

Điều đó không thành công với lỗi này:

error: error setting owner of ./logfile.log.1: Operation not permitted

Nhưng chỉ vì logrotate cố gắng thay đổi chủ sở hữu của tệp mới thành chủ sở hữu của tệp được xoay, tức là apache. Nhưng tôi không quan tâm đến các tệp mới có cùng chủ sở hữu, nếu logrotate sẽ tạo các bản sao với 'web' là chủ sở hữu sẽ ổn và sau đó nó có thể hoạt động tốt.

Vậy có cách nào để ngăn logrotate thay đổi chủ sở hữu của tệp đã sao chép không?


1
Để lại điều này cho hậu thế: sử dụng postscriptchown "$1"có lẽ không phù hợp ở đây vì nó sẽ không ngăn được logrotate không đặt chủ sở hữu.
David Lord

Câu trả lời:


7

Tôi sử dụng createchỉ thị trong /etc/logrotate.d/các tập tin của tôi . Thí dụ:

create 0664 www-data www-data

1

createcó thể sẽ làm những gì bạn mô tả trong câu cuối cùng của câu hỏi của bạn, nhưng tùy chọn này không tương thích với copytruncate, mà bạn cũng nói rằng bạn muốn sử dụng.


0

Tôi đã giải quyết vấn đề tương tự với các tùy chọn postrotate và prerotate:

/opt/bars/web_edu/var/log/nginx*.log {
        su web_edu web_edu
        daily
    compress
        missingok
        rotate 30
        dateext
        notifempty
        create 0644 web_edu web_edu
        sharedscripts
        prerotate
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.log
        endscript
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` || true
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.gz
                chown web_edu:web_edu /opt/bars/web_edu/var/log/nginx*.log
        endscript
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.