AWStats: не може отримати доступ до /var/log/apache2/access.log


14

Я встановив астати на своєму новому сервері 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 на груповий адміністратор (але майте на увазі, що тоді ви ризикуєте дозволити CGI-скрипт отримати доступ до речей адміністратора на машині!).

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


Спробуйте це, не можу пообіцяти, якщо це спрацює: chown www-data:www-data <yourFile>і тоді chmod 655 <yourFile>.
theTuxRacer

1
Добре, щоб зробити астати досить, chmod 755 /var/log/apache2і chmod 644 access.log, але я хотів би "це найкраща угода" -добрий відповідь :) Дякую за призив хоч!
Йоріл

Я думаю, ти маєш рацію перейти з номером №1 (з доступом лише до читання, якщо тільки щось інше не потребує). Це надає доступ до обмеженого облікового запису користувача і не надає новий доступ до нічого, крім цього.
belacqua

Відповіді:


8

Якщо ви перейдете до пункту 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

Тоді всі файли можуть читати всі користувачі, і всі файли, які створюватимуться в майбутньому, матимуть дозволи на виконання


2
І щоб "усі користувачі" могли заглянути "/ var / log / apache2 /", зробіть додатково: chmod a + x / var / log / apache2 /
alfonx

6

У більшості налаштувань:

  • awstats запускається як www-дані вашого апаші користувача ;
  • до файлів журналу apache належать 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) Змініть " create 640 root adm " на " create 644 root 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-даних, ніж мені подобається.

Інші більш безпечні варіанти передбачають створення нового користувача та груп для астатів та створення запуску / виконання запущених програм, як цей новий користувач / група.


Ще одним рішенням буде змінити групу /var/log/apache2та все, що знаходиться під нею, www-dataта зробити файли для читання групою. Це трохи менш дозвільно, ніж зробити їх читатими у всьому світі.
Reinier Post
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.