AWStats: no se puede acceder a /var/log/apache2/access.log

14

Instalé awstats en mi nuevo servidor Ubuntu Lucid, pero cuando cron intenta ejecutarlo como usuario www-data, se queja de eso cannot access /var/log/apache2/access.log: Permission denied.

En /usr/share/doc/awstats/README.Debianeste párrafo hay:

De forma predeterminada, Apache almacena (desde la versión 1.3.22-1) archivos de registro con uid = root y gid = adm, por lo que debe ...

1) Cambie los derechos de los archivos de registro en /etc/logrotate.d/apache para que www-data tenga al menos acceso de lectura.

2) Como 1), pero cambie a un usuario específico y use la función suEXEC de Apache para ejecutarlo como el mismo usuario (y cambie también el derecho de / var / lib / awstats o use otro directorio). Esto es más complicado, pero los registros generalmente no son accesibles para el servidor (que probablemente era el punto predeterminado de Apache).

3) Cambie awstats.pl a group adm (¡pero tenga en cuenta que entonces corre el riesgo de permitir un acceso de script CGI a cosas de administrador en la máquina!

Yo iría con 1, pero ¿cuáles son los permisos recomendados para otorgar?

Joril
fuente
Pruebe esto, no puedo prometerle si funcionará: chown www-data:www-data <yourFile>y luego chmod 655 <yourFile>.
theTuxRacer
1
Bueno, para hacer que los awstats funcionen es suficiente chmod 755 /var/log/apache2y chmod 644 access.log, pero me gustaría un "esta es la mejor práctica", una especie de respuesta :) ¡Gracias por hablar!
Joril
Creo que tienes razón para ir con el n. ° 1 (solo con acceso de lectura, a menos que haya algo más que necesite). Esto da acceso a una cuenta de usuario limitada y no otorga nuevo acceso a nada más que eso.
belacqua

Respuestas:

8

Si va al punto 1 y dice que www-data debe tener al menos permiso de lectura, entonces lo recomendado es solo lectura.

Puede alterar la línea (en el archivo logrotate):

create 640 root adm

a

create 644 root adm

Para dar a todos los usuarios (datos de www incluidos) permiso de lectura.

Deberá cambiar los archivos existentes de permisos en / var / log / apache2 / para que coincida con esta configuración

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

Entonces todos los archivos pueden ser leídos por todos los usuarios y todos los archivos que logrota crear en el futuro tendrán los permisos adecuados

teísta
fuente
2
Y para que "todos los usuarios" puedan ver "/ var / log / apache2 /" hacer adicionalmente: chmod a + x / var / log / apache2 /
alfonx
6

En la mayoría de las configuraciones:

  • awstats se ejecuta como su usuario de apache www-data ;
  • los archivos de registro de apache son propiedad de root: adm y tienen permisos -rw-r ----- (también conocido como: chmod 640 ); y
  • la configuración de propiedad y permisos se puede encontrar en el archivo /etc/logrotate.d/apache2 , cuyo contenido es:

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

La solución más simple es:

1) Cambie " create 640 root adm " a " create 644 root adm " en /etc/logrotate.d/apache2 usando su editor de texto favorito o, si tiene que escribir todo:

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

2) Cambie los permisos en /var/log/apache2/access.log y /var/log/apache2/error.log a 644 .

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

3) Reiniciar apache.

sudo apachectl -k graceful

He visto a personas agregar los datos de www al grupo de usuarios adm como una solución. Esos son muchos más permisos para www-data de los que me siento cómodo.

Otras opciones más seguras implican crear un nuevo usuario y grupos para awstats y hacer que los awstats se ejecuten / ejecuten como este nuevo usuario / grupo.

roberthernandez
fuente
Otra solución sería cambiar el grupo /var/log/apache2y todo lo que está debajo de él www-datay hacer que los archivos sean legibles en grupo. Esto es un poco menos permisivo que hacerlos legibles en todo el mundo.
Reinier Post