У нас Apache настроен на запуск от имени пользователя www в коробке RedHat, но его журналы записываются с правами суперпользователя, поскольку сам процесс запускается от имени пользователя root. Кажется, что лучше всего было бы 1) запускать rotatelogs как пользователь без полномочий root и 2) помещать журналы в место, отведенное для пользователя с соответствующими разрешениями.
Это можно сделать? Я не вижу здесь метода:
В отношении владения файлом ничего делать не нужно. Red Hat поставляет свои системы с разумными настройками по умолчанию. Миллионы веб-серверов работают каждый день, и их журналы httpd принадлежат пользователю root. Лучше всего в этом случае оставить колодец в покое.
По умолчанию журналы httpd в системе RH вращаются с помощью logrotate. Он запускается ежедневно от имени пользователя root, поэтому нет проблем с владением. Вы можете настроить способ поворота журналов, отредактировав конфигурацию logrotate (/etc/logrotate.conf, /etc/logrotate.d/httpd).
Если вы используете конвейерные журналы, как предлагает ваша ссылка, вам нужно будет настроить собственное задание cron для запуска от имени пользователя root.
Это все нормально.
Точный способ его вызова будет зависеть от локальной конфигурации (например, apache
по умолчанию отключено в RHEL 6), но вы можете использовать sudo
, runuser
и т. д. вот так:
ErrorLog "|sudo -u apache rotatelogs -f /var/log/httpd/errors.%Y-%m-%d.log 86400"