Gestión de permisos de directorios de Apache


Esta actividad práctica corresponde a este tema.

En esta actividad vamos a exponer una serie de ejemplos para la gestión de permisos de directorios de la web.

Ejemplo 1:

Se creará un grupo "desweb" (desarrolladores web) cuyos usuarios serán los únicos autorizados a manipular (modificar webs, añadir nuevas páginas, etc. (operaciones de escritura) el contenido del directorio /var/www donde están las web. El resto de usuarios podrán leer y ejecutar su contenido (lo cual es lo mínimo necesario para poder navegar por el mismo vía web). Para ello debemos:
  • Crear el grupo “desweb” y meter al usuario root en él. Esto puede hacerse con el comando addgroup (sudo addgroup desweb para crear el grupo y sudo adduser root desweb para añadir a root al mismo).
  • Crear el usuario desweb1, que pertenezca al grupo anterior. Esto puede hacerse con el comando adduser.(sudo adduser desweb1 para crear el usuario y sudo adduser desweb1 desweb para meter al usuario en el grupo anterior).
  • Las dos operaciones anteriores también pueden hacerse de forma gráfica con Inicio – System settings – User management (entrar en "Administrator mode")
  • Cambiamos el propietario del directorio /var/www y sus contenidos para que su propietario sea el desarrollador web principal (el primero que hemos añadido) y su grupo, con el comando: chown -R desweb1:desweb /var/www
  • Hecho esto, podemos modificar los permisos de la forma indicada con chmod -R 2575 /var/www. En función de los permisos asignados por defecto cuando se instala Apache, es posible que esto se pueda conseguir simplemente deshabilitando el permiso de escritura (chmod o-w) para "otros" y dejar el resto por defecto).
En este caso concreto, hemos activado los permisos especiales del directorio (el 2 del principio, setgid, significa que los nuevos ficheros y directorios creados en la estructura heredarán el grupo al que pertenece la estructura en sí, en lugar del que tiene el creador del fichero, para que de esta manera los futuros archivos de la web puedan ser editados por los desarrolladores) y hemos dado permisos suficientes para navegar por los contenidos al resto. Debemos tener en cuenta que cada directorio podría tener una configuración independiente (probablemente no deseemos dejar permisos de lectura, solo de ejecución, a directorios con scripts), por lo que habrá que personalizarlo en función de cada caso. Este ejemplo por otro lado está pensado para que los contenidos se sirvan directamente desde el directorio en el que se editan. Si no fuese así, puede convenir negar todos los permisos a "otros" con chmod -R 2570.

En el ejemplo expuesto finalmente el directorio quedaría de esta manera:

Permisos de var/www


Ejemplo 2:

Este segundo ejemplo hará algo análogo a lo mencionado con los desarrolladores web, pero con un supuesto grupo de "desarrolladores de scripts" (desscript). Supondremos que los scripts se introducirán en el directorio /usr/lib/cgi-bin. Los pasos a dar son similares a los vistos anteriormente, con los mismos comandos indicados:

  • Crear el grupo “desscript” y meter al usuario root en el.
  • Crear el usuario desscript1 e introducirlo en el grupo anterior.
  • Cambiar el propietario del directorio mencionado a chown -R desscript1:desscript /usr/lib/cgi-bin
  • Finalmente, hacer una operación análoga al ejemplo anterior con el comando chmod -R 2575 /usr/lib/cgi-bin

Es muy recomendable comprobar que la web sigue funcionando correctamente (en nuestro caso desde el cliente de pruebas XP) cada vez que se cambie algún permiso, para asegurarnos de que estos cambios no tienen consecuencias imprevistas.

Última modificación: jueves, 19 de agosto de 2010, 16:59