AWStats: невозможно получить доступ к /var/log/apache2/access.log

Я установил awstats на свой новый сервер Ubuntu Lucid, но когда cron пытается запустить его как пользователь www-data, он жалуется, что cannot access /var/log/apache2/access.log: Permission denied.

В /usr/share/doc/awstats/README.Debian есть этот абзац:

По умолчанию Apache сохраняет (начиная с версии 1.3.22-1) файлы журналов с uid = root и gid = adm, поэтому вам нужно либо .. .

1) Измените права файлов журналов в /etc/logrotate.d/apache, чтобы www-данные имели как минимум доступ для чтения.

2) Как 1), но перейдите к конкретному пользователю и используйте функцию suEXEC Apache для запуска под тем же пользователем (и либо измените также право на / var / lib / awstats, либо используйте другой каталог). Это сложнее, но тогда журналы, как правило, недоступны для сервера (что, вероятно, было точкой по умолчанию Apache).

3) Измените awstats.pl на группу adm (но учтите, что вы рискуете разрешить CGI-скрипту доступ к административным ресурсам на машине!).

Я бы пошел с 1, но какие рекомендуемые разрешения для предоставления?

14
задан 14 January 2011 в 11:45

2 ответа

В большинстве установок:

  • awstats работает как Ваши апачские пользовательские www-данные;
  • апачские файлы журнала принадлежат root:adm и имеют-rw-r-----(иначе: chmod 640) полномочия; и
  • владение и настройки полномочий могут быть найдены в файле/etc/logrotate.d/apache2, содержание которого:

    /var/log/apache2/*.log {
        daily
        missingok
        rotate 60
        compress
        delaycompress
        notifempty
        dateext
        create 640 root adm
        sharedscripts
        postrotate
                /etc/init.d/apache2 reload > /dev/null
        endscript }
    

Простое решение к:

1) Изменение "создает 640 корней adm" для "создания 644 корней adm" в/etc/logrotate.d/apache2 использование любимого текстового редактора или, если необходимо написать сценарий всего:

sudo sed -i 's/create 640 root adm/create 644 root adm/g' /etc/logrotate.d/apache2

2) Измените полномочия на /var/log/apache2/access.log и /var/log/apache2/error.log к 644.

sudo chmod 644 /var/log/apache2/access.log /var/log/apache2/error.log

3) Апач перезапуска.

sudo apachectl -k graceful

Я видел, что люди добавляют www-данные к adm группе пользователей как решение. Это - намного больше полномочий для www-данных, чем я доволен.

Другие более безопасные опции включают создание нового пользователя, и группы для awstats и создания awstats выполняют/выполняют как этот новый пользователь/группа.

6
ответ дан 14 January 2011 в 11:45

Если вы перейдете к пункту 1, и в нем говорится, что www-данные должны иметь как минимум разрешение на чтение, тогда рекомендуется использовать только чтение.

Вы можете изменить строку (в файле logrotate):

create 640 root adm

-

create 644 root adm

Чтобы дать всем пользователям (включая www-данные) разрешение на чтение.

Вам необходимо изменить разрешения для существующих файлов в / var / log / apache2 /, чтобы соответствовать этому параметру

chmod a+r /var/log/apache2/* #or whatever your path is

Тогда все файлы могут быть прочитаны всеми пользователями, и все файлы, которые будут созданы logrotate в будущем будет иметь адекватные разрешения

0
ответ дан 14 January 2011 в 11:45

Другие вопросы по тегам:

Похожие вопросы: