AWStats: nie można uzyskać dostępu do /var/log/apache2/access.log

14

Zainstalowałem awstats na nowym serwerze Ubuntu Lucid, ale kiedy cron próbuje uruchomić go jako użytkownik www-data, narzeka cannot access /var/log/apache2/access.log: Permission denied.

W /usr/share/doc/awstats/README.Debiantam ten ustęp:

Domyślnie Apache przechowuje (od wersji 1.3.22-1) logi z uid = root i gid = adm, więc musisz albo ...

1) Zmień prawa do plików dziennika w /etc/logrotate.d/apache, aby dane www miały przynajmniej dostęp do odczytu.

2) Jak 1), ale zmień na konkretnego użytkownika i użyj funkcji suEXEC Apache, aby uruchomić go jako ten sam użytkownik (albo zmień prawo / var / lib / awstats, albo użyj innego katalogu). Jest to bardziej skomplikowane, ale wtedy dzienniki nie są ogólnie dostępne dla serwera (co prawdopodobnie było punktem domyślnym Apache).

3) Zmień awstats.pl na admina grupowego (ale uważaj, że ryzykujesz wtedy dostępem skryptu CGI do administrowania na komputerze!).

Wybrałbym 1, ale jakie są zalecane uprawnienia do udzielenia?

Joril
źródło
Spróbuj tego, nie mogę obiecać, że to zadziała: chown www-data:www-data <yourFile>i wtedy chmod 655 <yourFile>.
theTuxRacer
1
Cóż, aby awstaty działały, wystarczy chmod 755 /var/log/apache2i chmod 644 access.log, ale chciałbym, żeby to była „najlepsza praktyka” - rodzaj odpowiedzi :) Dziękuję za to, że wpadliście!
Joril
Myślę, że masz rację, wybierając numer 1 (tylko z dostępem do odczytu, chyba że jest coś innego, czego potrzebuje awstats). Daje to dostęp do ograniczonego konta użytkownika i nie przyznaje nowego dostępu do niczego poza tym.
belacqua

Odpowiedzi:

8

Jeśli przejdziesz do punktu 1, który mówi, że www-data powinien mieć co najmniej pozwolenie na odczyt, wówczas zalecane jest udzielenie tylko odczytu.

Możesz zmienić linię (w pliku logrotate):

create 640 root adm

do

create 644 root adm

Aby dać wszystkim użytkownikom (w tym dane www) uprawnienia do odczytu.

Będziesz musiał zmienić uprawnienia istniejących plików w / var / log / apache2 /, aby dopasować to ustawienie

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

Następnie wszystkie pliki mogą być odczytywane przez wszystkich użytkowników, a wszystkie pliki, które Logrotate utworzą w przyszłości, będą miały uprawnienia adecuate

teista
źródło
2
Aby „wszyscy użytkownicy” mogli zajrzeć do „/ var / log / apache2 /”, wykonaj dodatkowo: chmod a + x / var / log / apache2 /
alfonx
6

W większości konfiguracji:

  • awstats działa jako dane www użytkownika apache ;
  • pliki dziennika apache są własnością root: adm i mają uprawnienia -rw-r ----- (alias: chmod 640 ); i
  • ustawienia własności i uprawnień można znaleźć w pliku /etc/logrotate.d/apache2 , którego zawartość to:

    /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 }
    

Najprostszym rozwiązaniem jest:

1) Zmień „ create 640 root adm ” na „ create 644 root adm ” w /etc/logrotate.d/apache2 za pomocą swojego ulubionego edytora tekstu lub, jeśli musisz wszystko napisać:

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

2) Zmień uprawnienia na /var/log/apache2/access.log i /var/log/apache2/error.log na 644 .

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

3) Uruchom ponownie apache.

sudo apachectl -k graceful

Widziałem ludzi dodających dane www do grupy użytkowników adm jako rozwiązanie. To o wiele więcej uprawnień do danych www niż czuję się swobodnie.

Inne bezpieczniejsze opcje obejmują tworzenie nowego użytkownika i grup dla awstats oraz uruchamianie / wykonywanie awstats jako nowego użytkownika / grupy.

roberthernandez
źródło
Jeszcze innym rozwiązaniem byłoby zmienić grupę /var/log/apache2i wszystko pod nią www-dataoraz sprawić, by pliki były czytelne dla grupy. Jest to nieco mniej liberalne niż uczynienie ich czytelnymi na całym świecie.
Reinier Post