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.Debian
este 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?
fuente
chown www-data:www-data <yourFile>
y luegochmod 655 <yourFile>
.chmod 755 /var/log/apache2
ychmod 644 access.log
, pero me gustaría un "esta es la mejor práctica", una especie de respuesta :) ¡Gracias por hablar!Respuestas:
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):
a
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
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
fuente
En la mayoría de las configuraciones:
la configuración de propiedad y permisos se puede encontrar en el archivo /etc/logrotate.d/apache2 , cuyo contenido es:
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:
2) Cambie los permisos en /var/log/apache2/access.log y /var/log/apache2/error.log a 644 .
3) Reiniciar apache.
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.
fuente
/var/log/apache2
y todo lo que está debajo de élwww-data
y hacer que los archivos sean legibles en grupo. Esto es un poco menos permisivo que hacerlos legibles en todo el mundo.