Mapear Url A Ubicaciones De Un Sistema De Ficheros

Ejercicios

Crea un nuevo host virtual que es accedido con el nombre www.mapeo.com, cuyo DocumentRoot sea /srv/mapeo.

Antes de nada voy a decir que en mi caso voy a utilizar Vagrant y como software de virtualización VirtualBox.

En el archivo VagrantFile, debemos realizar una configuración para crear una red privada, mediante la cuál poder visualizar los sitios webs fuera de la máquina virtual. Yo he utilizado esta configuración:

config.vm.network "private_network", ip: "192.168.33.10"

En esta máquina virtual, nos dirigimos al fichero de configuración de apache, /etc/apache2/apache2.conf, y debemos asegurarnos que tenemos descomentadas las siguientes líneas, que por defecto vienen comentadas:

<\Directory /srv/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
<\/Directory>

Esto indica que mostrará todos los ficheros de las páginas alojadas en la ruta /srv/ y sus hijos.

En la ruta /etc/apache2/sites-available/ creamos un fichero de configuración para esta página. Podemos copiar el fichero llamado 000-default.conf para tener la estructura y luego lo modificamos:

cp 000-default.conf mapeo.conf
nano mapeo.conf

Y dentro de este fichero, establecemos la url de la web en el apartado ServerName, e indicamos en la línea DocumentRoot, que se encuentra en /srv/mapeo. Tiene que quedar así:

ServerName www.mapeo.com
DocumentRoot /svr/mapeo

Y creamos el enlace simbólico para activar el sitio web:

a2ensite mapeo.conf

Por último para visualizar este sitio web, en nuestro ordenador principal, deberíamos añadir a nuestro /etc/hosts la siguiente línea:

192.168.33.10   www.mapeo.com

Y ya podríamos ver la página web.

1. Cuando se entre a la dirección www.mapeo.com, se redireccionará automáticamente a www.mapeo.com/principal, donde se mostrará el mensaje de bienvenida.

Para automatizar una redirección, debemos configurarla en el archivo de configuración de la página, en este caso, se encuentra en /etc/apache2/sites-available/mapeo.conf.

Debemos introducir la siguiente línea:

Redirect /index.html /principal

Lo que indicamos con esta opción es que al introducir la ruta /index.html que es la que se introduce por defecto cuando accedemos a www.mapeo.com, nos salte a la ruta /principal, que contendrá otro index.html.

¿Te preguntarás porque he especificado /index.html en vez de / que suele ser lo más habitual, no? Pues bien, si pruebas esta opción introduciendo como url de origen / verás que te redirige a un bucle infinito que tendría como resultado una ruta como esta www.mapeo.com/principalprincipalprincipal ....

Después reiniciamos el servicio:

systemctl restart apache2

Si ahora, accedemos a www.mapeo.com, automáticamente nos redirige y nos muestra la página www.mapeo.com/principal.

2. En el directorio principal no se permite ver la lista de los ficheros, no se permite que se siga los enlaces simbólicos y no se permite negociación de contenido. Muestra al profesor el funcionamiento. ¿Qué configuración tienes que poner?

Para ver la lista de ficheros de una dirección, cuando no se encuentre una archivo index.html, hay que añadir la opción Indexes al fichero de configuración de la página.

Antes vamos a renombrar el index.html para que no lo encuentre y nos muestre esta lista. Además voy a crear unos ficheros para que nos los muestre:

root@buster:/srv/mapeo/principal# mv index.html index.old

root@buster:/srv/mapeo/principal# touch 1 2 3

root@buster:/srv/mapeo/principal# ls
1  2  3  index.old

Ya podemos añadir la opción Indexes a nuestro mapeo.conf. Tenemos que añadir un bloque como el siguiente:

<\Directory /srv/mapeo>
  Options Indexes
  AllowOverride None
  Require all granted
<\/Directory>

Lo que estamos configurando aquí es que el directorio /srv/mapeo y sus hijos, si no encuentran el index.html, muestren la lista de archivos del directorio en el que se encuentre.

Reiniciamos el servicio:

systemctl restart apache2

Si accedemos a www.mapeo.com (que nos redirige a www.mapeo.com/principal), nos muestra esta salida del sitio web.

Podemos acceder e inspeccionar el contenido de los archivos:

3. Si accedes a la página www.mapeo.com/principal/documentos se visualizarán los documentos que hay en /home/usuario/doc. Por lo tanto se permitirá el listado de fichero y el seguimiento de enlaces simbólicos siempre que el propietario del enlace y del fichero al que apunta sean el mismo usuario. Explica bien y pon una prueba de funcionamiento donde se vea bien el seguimiento de los enlaces simbólicos.

Lo primero que debemos hacer es crear un enlace simbólico a la carpeta Documents con el nombre documentos. Para ello:

root@buster:/srv/mapeo/principal# ln -s /home/vagrant/Documents/ documentos

root@buster:/srv/mapeo/principal# ls -l
total 8
-rw-r--r-- 1 root root  19 Oct 21 15:41 1
-rw-r--r-- 1 root root   0 Oct 21 15:15 2
-rw-r--r-- 1 root root   0 Oct 21 15:15 3
lrwxrwxrwx 1 root root  32 Oct 21 16:13 documentos -> /home/vagrant/Documents/
-rw-r--r-- 1 root root 159 Oct 21 14:39 index.old

Vemos como nos ha creado el enlace simbólico, que apunta a la carpeta /home/vagrant/Documents/, cuyo propietario es root, que esto es muy importante, ya que el propietario del enlace simbólico y del archivo/directorio al que haga referencia tienen que ser el mismo.

Ahora creo un par de ficheros y una carpeta dentro de Documents:

root@buster:/home/vagrant/Documents# touch ejemplo1 ejemplo2

root@buster:/home/vagrant/Documents# mkdir ejemplo

root@buster:/home/vagrant/Documents# ls
ejemplo  ejemplo1  ejemplo2

El propietario de la carpeta Documents es vagrant, y como he comentado antes, tiene que ser el mismo propietario que el enlace simbólico, por tanto, voy a cambiar el propietario de este directorio:

vagrant@buster:~$ sudo chown root:root Documents/

vagrant@buster:~$ ls -l
total 32
drwxr-xr-x 2 vagrant vagrant 4096 Oct 13 12:31 Desktop
drwxr-xr-x 3 root    root    4096 Oct 21 16:05 Documents
drwxr-xr-x 2 vagrant vagrant 4096 Oct 13 12:31 Downloads
drwxr-xr-x 2 vagrant vagrant 4096 Oct 13 12:31 Music
drwxr-xr-x 2 vagrant vagrant 4096 Oct 13 12:31 Pictures
drwxr-xr-x 2 vagrant vagrant 4096 Oct 13 12:31 Public
drwxr-xr-x 2 vagrant vagrant 4096 Oct 13 12:31 Templates
drwxr-xr-x 2 vagrant vagrant 4096 Oct 13 12:31 Videos

Vemos como hemos cambiado el propietario de la carpeta, y en este punto solo nos quedaría añadir la opción SymLinksIfOwnerMatch al fichero de configuración de la web:

<\Directory /srv/mapeo>
  Options Indexes SymLinksIfOwnerMatch
  AllowOverride None
  Require all granted
<\/Directory>

Si accedemos a www.mapeo.com (que nos redirige a www.mapeo.com/principal), nos muestra esta salida del sitio web.

Vemos que nos muestra un directorio documentos, y si accedemos a él:

Observamos que tenemos acceso a él y a sus archivos.

4. En todo el host virtual se debe redefinir los mensajes de error de objeto no encontrado y no permitido. Para ello se crearán dos ficheros html dentro del directorio error. Entrega las modificaciones necesarias en la configuración y una comprobación del buen funcionamiento.

Creamos la carpeta error dentro del directorio mapeo, y creamos los archivos html, en este caso 403.html y 404.html.

root@buster:/srv/mapeo# mkdir error

root@buster:/srv/mapeo# cd error/

root@buster:/srv/mapeo/error# nano 403.html

root@buster:/srv/mapeo/error# nano 404.html

root@buster:/srv/mapeo/error# ls
403.html  404.html

Nos movemos al fichero de configuración de la web y añadimos las siguientes líneas:

ErrorDocument 404 /error/404.html
ErrorDocument 403 /error/403.html

Reiniciamos el servicio:

systemctl restart apache2

Si introducimos una ruta que no existe, nos sale este error 404:

Vemos que sale el archivo html que hemos configurado para este error. Para el error 403, es decir, cuando intentamos acceder a una ruta a la que no tenemos permisos suficientes:

Nos muestra este error.