Corregir permisos para / var / www y wordpress

He configurado un servidor LAMP y tengo acceso a través de SSH y a la página “funciona” desde un navegador web desde mi red (a través de una dirección IP) y desde afuera usando dyndns.

Tenemos algunos proyectos de WordPress que se encuentran en subdirectorios en / var / www / wordpress1 / var / www / wordpress2, etc. No puedo acceder a estos subdirectorios desde un navegador para configurar WP – o (supongo) para ver el contenido en un navegador. Recibo un error 403 Prohibido en mi navegador.

Supongo que este es un problema de permisos. ¿Podría decirme la configuración adecuada para los permisos para:

  1. Permitir a los desarrolladores y a mí leer / escribir.
  2. para permitir a WP configurar y hacer su cosa
  3. Permitir que los visitantes accedan al sitio (s) a través de la web.

También debo mencionar que las subcarpetas son en realidad enlaces a carpetas en otro disco duro interno. No creo que esto haga una diferencia, pero pensé que debería revelarlo.

total 12 drwxr-xr-x 2 root root 4096 2012-07-12 10:55 . drwxr-xr-x 13 root root 4096 2012-07-11 20:02 .. lrwxrwxrwx 1 root root 43 2012-07-11 20:45 admin_media -> /root/django_src/django/contrib/admin/media -rw-r--r-- 1 root root 177 2012-07-11 17:50 index.html lrwxrwxrwx 1 root root 14 2012-07-11 20:42 media -> /hdd/web/media lrwxrwxrwx 1 root root 18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress 

Este es el resultado del uso de chown -R www-data:www-data /var/www

 total 12 drwxr-xr-x 2 www-data www-data 4096 2012-07-12 10:55 . drwxr-xr-x 13 root root 4096 2012-07-11 20:02 .. lrwxrwxrwx 1 www-data www-data 43 2012-07-11 20:45 admin_media -> /root/django_src/django/contrib/admin/media -rw-r--r-- 1 www-data www-data 177 2012-07-11 17:50 index.html lrwxrwxrwx 1 www-data www-data 14 2012-07-11 20:42 media -> /hdd/web/media lrwxrwxrwx 1 www-data www-data 18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress 

Todavía no puedo acceder a través del navegador.

Primero, debe asegurarse de que su nombre de usuario esté incluido en el grupo de www-data . Si no, puede agregar su nombre de usuario como grupo de www-data

 sudo adduser $USER www-data 

Después de eso, debes cambiar la propiedad de / var / www a tu nombre de usuario

 sudo chown $USER:www-data -R /var/www 

El siguiente paso, para la práctica general , debe cambiar el permiso a 755 (rwxr-xr-x), no recomendar cambiar el permiso a 777 por razones de seguridad

 sudo chmod u=rwX,g=srX,o=rX -R /var/www 

Relacionado con el permiso específico para wordpress o laravel u otro marco, entonces puede leer la documentación respectivamente.

Espero eso ayude…

Aparentemente, así es como se recomienda en la Guía del servidor de Ubuntu:

Capítulo 11. Servidores Web.

1.4. Compartir permiso de escritura

Para que más de un usuario pueda escribir en el mismo directorio, será necesario otorgar permiso de escritura a un grupo que comparten en común. El siguiente ejemplo otorga permiso de escritura compartido a / var / www / html al grupo “webmasters”

Yo uso los datos de www . Simplemente reemplace “webmasters” con su grupo, asegúrese de agregar el usuario al grupo, por supuesto.

 sudo chgrp -R webmasters /var/www/html sudo find /var/www/html -type d -exec chmod g=rwxs "{}" \; sudo find /var/www/html -type f -exec chmod g=rws "{}" \; 

Acabo de probarlo con Dreamweaver desde mi escritorio de Mac y cargué y reemplacé los archivos agregados, etc, y conserva los permisos correctos con una excepción, el usuario local se convierte en propietario de nuevos archivos junto con www-data, pero cualquier archivo creado por root en El directorio html conserva su propiedad como root pero es editable por un usuario local.

 $ls -l $-rw-rw-r-- 1 localUser www-data 11505 May 28 09:56 index2.html $-rw-rwSr-- 1 root www-data 11535 May 28 09:58 index.html 

Espero que esto aclare las cosas y ayude a los cansados, porque sé que siempre estuve cansado de esta situación, pero ahora está claro para mí.

Ah, y recomiendo encarecidamente el uso de sftp con claves para acceder a su ftp, funciona muy bien para mí y no necesita PureFTP ni ningún otro método inseguro para enviar los archivos al sitio web. Hay unos pocos tutoriales en el sitio de Digital Ocean sobre la seguridad de su servidor con claves ssh:

Cómo configurar la autenticación basada en clave SSH en un servidor Linux

Compruebe que Apache tenga derechos de ejecución para /hdd/web/media y /hdd/web/wordpress .

Correr:

 chmod o+x /root /root/site /root/site/about 

Además, Apache debe configurarse para permitir el acceso al directorio en el sistema de archivos. Esto lo debe hacer un administrador del sistema insertando una directiva en los archivos de configuración de apache (httpd.conf).

Dado que el directorio real está dentro de la raíz web, debe ser accesible, pero es posible que FollowSymLinks no esté habilitado para el directorio, esto también debe agregarse a la directiva.

Ver http://httpd.apache.org/docs/2.0/mod/core.html#directory

Leyendo la guía de instalación para Ubuntu

 chown -R www-data /usr/share/wordpress 

Tal vez podría ser más fácil instalarlo de esta manera en lugar de intentar descomprimir los archivos en /var/www

https://help.ubuntu.com/community/WordPress

De cualquier forma wordpress se ejecuta en apache … ¿verdad? si quieres hacerlo de esa manera … haces como @metamorph y luego das permiso a apache2 httpd.conf esta manera:

  ServerName site ServerName site.domain DocumentRoot /srv/www/wordpress.site DirectoryIndex index.php  

y luego default-server.conf .

  Options None AllowOverride None Order allow,deny Allow from all  

Quizás es mejor hacer el paso a paso https://help.ubuntu.com/community/WordPress