Cómo configurar los permisos para un sitio web de desarrollo

Mi entorno de desarrollo es el siguiente, pero debería funcionar parecido para cualquiera que use Linux con apache:

Servidor: Ubuntu Server en una máquina virtual en VirtualBox
Desarrollo localmente con Eclipse + Aptana y subo mis cambios vía ftp a mi servidor de pruebas
Usuario ftp: webftp
Usuario y grupo de apache: www-data

Para configurar los permisos de un nuevo sitio web de manera que el usuario de apache tenga permisos de escritura en todas partes, y cuando crees un nuevo directorio no tengas que entrar a mano a darle los permisos adecuados, haz lo siguiente:

Crea un nuevo directorio para tu proyecto en la raíz de apache (o donde te apetezca si vas a crear un sitio virtual)

maria@webserver:~$ sudo mkdir /var/www/html/testsite
maria@webserver:~$ sudo chown www-data /var/www/html/testsite/
maria@webserver:~$ sudo chgrp www-data /var/www/html/testsite/

Asigna los permisos adecuados (lectura, escritura y ejecución para usuario y grupo y sólo lectura y ejecución para el resto)

maria@webserver:~$ sudo chmod ug+w /var/www/html/testsite/

Asigna el “sticky bit” para el grupo (para que los archivos y directorios que se creen arrastren la propiedad del grupo www-data)

maria@webserver:~$ sudo chmod g+s /var/www/html/testsite/

Asigna los permisos por defecto (para que los directorios que se creen arrastren los mismos permisos)

maria@webserver:~$ sudo setfacl -d -m g::rwx /var/www/html/testsite/

(si setfacl no está disponible, debes instalar y activar las acls, mira este enlace para instrucciones
https://help.ubuntu.com/community/FilePermissionsACLs#Enabling_ACLs_in_the_Filesystem)

Así queda este directorio:

maria@webserver:~$ getfacl /var/www/html/testsite/
getfacl: Removing leading '/' from absolute path names
# file: var/www/html/testsite/
# owner: www-data
# group: www-data
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

maria@webserver:~$ ls -ld /var/www/html/testsite/
drwxrwsr-x+ 3 www-data www-data 4096 abr 27 23:47 /var/www/html/testsite/

Finalmente, añade al usuario webftp al grupo www-data para que tenga permisos para acceder a estos directorios:

maria@webserver:~$ sudo usermod -a -G www-data webftp

Y ya que estoy me añado a mi también para poder hacer una pruebita desde aquí mismo:

maria@webserver:~$ sudo usermod -a -G www-data maria

Pruebita:

maria@webserver:~$ echo hola mundo > /var/www/html/testsite/index.html

Si en tu navegador escribes http://ip-de-tu-servidor/testsite/index.html debería saludarte amablemente
Seguidamente sube tu sitio por ftp y comprueba que todo funciona correctamente.

ATENCIÓN-WARNING-PELIGRO: esto no es lo más adecuado en entorno de producción. El usuario web sólo debería tener permisos para escribir en aquellos sitios que lo requieran (carpeta de logs, uploads, etc).

Publicado en: Blog

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>