Apache enlazado al directorio de inicio - Errores de permisos

15

Tengo algunos problemas para vincular mi /var/www/a un nuevo Webrootdirectorio dentro de mi carpeta de inicio. Creo que estos se derivan de mi falta de comprensión de los permisos de Linux.

Hasta donde yo sé, los enlaces simbólicos deben tomar la forma del directorio que desea vincular y el directorio al que desea vincular, por lo que en mi caso, ejecuté:

sudo ln -s ~/Webroot/* /var/www/

este tipo de ha funcionado, si me quedo lsen /var/www/lo que puedo ver todos los archivos en mi Webrootdirectorio.

Cada vez que intento ejecutar un archivo que está en mi Webrootcarpeta, obtengo un error de permiso 403, ¿es esto porque los archivos en mi directorio Webroot los creo yo y la instancia de apache se ejecuta como www-data?

Si este es el caso, ¿significaría que necesito cambiar los permisos en cada archivo que creo para ejecutarlo?

Anteriormente ejecuté una instancia local de apache señalando la raíz del directorio de mi vhost predeterminado a la Webrootcarpeta, en esta instancia no tuve que alterar ningún permiso. Cualquier ayuda sería apreciada.

richzilla
fuente
¿ha verificado para asegurarse de que apache no está configurado para no seguir enlaces simbólicos? ... tuve este problema una vez. un hilo relacionado en otro foro podría estar aquí: linuxforums.org/forum/servers/…
RobotHumans

Respuestas:

15

Esta no es una buena práctica, estoy de acuerdo con Weboide. Pero hay una manera simple de lograr este objetivo.

1) habilite el módulo apache userdir.

sudo  a2enmod userdir

Esto habilitará el módulo Apache userdir. Ahora puede poner el contenido del sitio web en ~/Webroot/o dentro de su directorio de inicio.

Nota: la carpeta predeterminada es ~/public_html

2) Haz los cambios necesarios a /etc/apache2/mods-enabled/userdir.conf.

3) Reinicia el apache

sudo /etc/init.d/apache2 restart

Ahora puede acceder al sitio navegando por su navegador para http: // ip-address / ~ username . También puede establecer un host virtual para este sitio.

Si está buscando ejecutar archivos php, necesita hacer un paso más

edite /etc/apache2/mods-enabled/php5.confy comente las siguientes líneas:

 <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Luego reinicie el apache.

Eso es. Estás listo.

Ref: https: //wiki.ubuntu.com/UserDirectoryPHP

Espero que esto ayude. Si tiene dificultades, no dude en publicarlo aquí.

aneeshep
fuente
7

Esta no es una buena práctica para lograr lo que quieres.

Si está utilizando PHP, es posible que desee echar un vistazo a suexec , suphp o php-fpm y fastcgi .


Tiene razón sobre su problema, este es un problema de permiso en el hecho de que sus Webrootarchivos son propiedad de un usuario diferente de www-data.

Aquí hay una solución no tan mala para solucionar su problema. Tenga en cuenta que probablemente necesitará usar sudo o iniciar sesión como root. ¡Asegúrese de comprender completamente todos los comandos que ejecutará!

Cambie su Webrootcarpeta y subcarpetas y archivos para establecer la propiedad del grupo www-datay establecer los permisos adecuados:

# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x

Editar: Tenga en cuenta que seguramente necesitará ejecutar esos comandos nuevamente si agrega archivos / carpetas con su cuenta de usuario habitual.

Weboide
fuente
2

Hice casi lo mismo con Debian Lenny, pero cambié al modo no hax, configuré Apache correctamente. Pero con enlace simbólico:

$ ll /home
drwxr-xr-x  8 root   root   4,0K nov 14 14.59 .
drwxrwxrwx  7 root   root   4,0K nov 14 21.24 www -> /var/www

Creo que debería verificar el permiso de ~ y ~ / Webroot , creo que su directorio (~) está protegido contra lectura, es decir, debe ejecutar esto:

$ ls -la /home

Para establecer los permisos correctos, use:

# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot

Creo que debería ayudar, pero dame más información sobre esto. Te sugiero que salgas del Webroot de tu directorio, ej. a / home como yo , porque puede ser un problema de seguridad.

"#" significa permisos de raíz , ej. escribe sudo antes de los comandos; "$" significa permiso de usuario único

antivirtel
fuente
0

Debe verificar los permisos no solo sobre su destino, sino también sobre sus padres.

zVictor
fuente
¿Por qué? ¿Es esto una limitación de Apache o una limitación del sistema de archivos?
Flimm
Lo siento. No verifiqué la información, solo se basa en una experiencia personal.
zVictor
0

Me enfrenté a este problema. Pero no me gustó la idea de cambiar el grupo de mi directorio de inicio a www-data. Este problema simplemente se puede resolver modificando el archivo de configuración para virtualHost. Simplemente configure la etiqueta del directorio para incluir estos

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

El Require all grantedes una nueva característica, supongo; que tiene un valor predeterminado de denied.

Consulte esta página como referencia: http://httpd.apache.org/docs/current/mod/core.html#directory

Peter
fuente