Sirviendo web desde la escuela | ||
---|---|---|
Anterior | Capítulo 8. Rentabilizando la configuración |
Al crear un usuario de un sistema Linux el comando adduser pone a disposición de éste, por defecto, un directorio que normalmente se encuentra en /home/usuario junto con una shell de comandos que le permiten ejecutar aplicaciones en la máquina. Lógicamente, todos los usuarios normales de gato podrían acceder a él y usarlo para alojar sus documentos web.
No parece ser ésta una solución adecuada a nuestra situación. Si creamos una cuenta para cada miembro de la comunidad, éste podría publicar en el servidor, pero también podría hacer muchas más cosas. Algunas no deseadas. Con el agravante de que, con el transcurso del tiempo, nuestro servidor tendría multitud de usuarios dispersos por toda la geografía, española cuando menos, con sus contraseñas fuera de nuestro control y a nadie se le escapa el peligro potencial de esta situación.
Nos planteamos entonces cómo permitir el acceso con posibilidad de alojar documentación e impedir todo lo demás a la gran mayoría de nuestros usuarios. Bien, la solución definitiva la desconocemos, sin embargo hemos usado una estrategia que funciona, aunque sin duda, habrá otras más elegantes y refinadas para conseguir este propósito.
En primer lugar debemos limitar el espacio en disco para los usuarios de nuestro sistema.
Ahora debemos proporcionar a cada usuario un espacio en nuestro disco y la posibilidad de escribir en él para que así pueda publicar sus trabajos en la web.
Creamos un grupo llamado huesped al que pertenecerían todos aquellos que tuviesen alojamiento web.
Los miembros de este grupo no podían tener una shell válida y, además, su espacio en disco debería estar situado bajo el control de Apache, puesto que la única finalidad era el hospedaje de sus documentos html.
La tarea de crear usuarios en estas condiciones decidimos automatizarla creando un simple script llamado adhu que reproducimos a continuación:
# Este script pretende automatizar la entrada # de usuarios que tienen alojamiento web # Se añaden al grupo huesped que tiene que estar creado # tiene que crearse tambien un esqueleto /etc/skel2 # optativamente puede contener dos ficheros .welcome.msg y .quit.msg # pedimos el nombre de usuario: #! /bin/bash echo -n "Intoduzca el nombre de usuario: " read HUESPED #Comprobamos si el usuario existe if grep "^$HUESPED" /etc/passwd >/dev/null 2>&1 then echo "EL USUARIO YA EXISTE" else echo "CREANDO EL USUARIO $HUESPED" #Añadimos el usuario adduser -d /var/www/html/$HUESPED -m -k /etc/skel2 -g huesped $HUESPED echo "Cambiando los permisos del directorio" chmod 755 /var/www/html/$HUESPED passwd $HUESPED echo "USUARIO CREADO" fi |
Este script está suficientemente comentado, sin embargo vamos a insistir en la línea más relevante, tal vez.
adduser -d /var/www/html/$HUESPED -m -k /etc/skel2 -g huesped $HUESPED |
El comando adduser empleado con los modificadores descritos, crea el directorio del usuario bajo /var/www/html[1], asigna automáticamente al usuario como miembro del grupo huesped y, tal vez lo más importante, la expresión -m -k /etc/skel2 hace posible que el usuario no disponga de una shell de comandos, puesto que el esqueleto definido en /etc/skel2 está vacío, bueno, en nuestro caso tiene los mensajes de bienvenida y despedida en sendos archivos ocultos. Este es su contenido:
drwxr-xr-x 2 root root 4096 jun 3 2002 . drwxr-xr-x 55 root root 8192 mar 1 18:26 .. -rw-r--r-- 1 root root 188 jun 3 2002 .quit.msg -rw-r--r-- 1 root root 133 jun 3 2002 .welcome.msg |
De no ser así, por defecto leería el contenido de la plantilla albergada en el esqueleto ubicado en /etc/skel que contiene normalmente lo siguiente:
drwxr-xr-x 3 root root 4096 jun 3 2002 . drwxr-xr-x 55 root root 8192 mar 1 18:26 .. -rw-r--r-- 1 root root 24 jul 9 2001 .bash_logout -rw-r--r-- 1 root root 191 jul 9 2001 .bash_profile -rw-r--r-- 1 root root 124 jul 9 2001 .bashrc -rw-r--r-- 1 root root 118 ago 10 2001 .gtkrc drwxr-xr-x 3 root root 4096 jun 3 2002 .kde -rw-r--r-- 1 root root 3511 ago 3 2001 .screenrc |
[1] | Esto es opcional, ya que también podríamos indicarle al servidor Apache otro directorio raiz para colocar las webs personales. Sin embargo es una buena costumbre respetar los estándares e incluso situar el directorio /var como una partición independiente, lo que facilita las copias de seguridad y reduce el peligro en caso de catástrofe. |