A veces es necesario que el acceso a un determinado directorio web Apache sea mediante usuario/contraseña. Para ello, tenemos que hacer lo siguiente.
El directorio web que queremos proteger deberá estar publicado, con lo que estará declarado, dentro de la ruta de apache /etc/apache2, o:
- En el fichero apache2.conf
- En el directorio conf.d/
- En el directorio sites-enabled/
- En el directorio sites-available/
En nuestro caso, queremos proteger el directorio donde tenemos publicado el wiki, que es la carpeta /var/lib/mediawiki, publicada en /etc/apache2/conf.d/mediawiki.conf que tiene el siguiente código:
...
<Directory /var/lib/mediawiki/>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>
...
Dentro de este directorio, le decimos que queremos autenticación y que el listado de directorios está en el fichero /var/lib/mediawiki/.htpasswd, con lo que el código anterior quedaría así:
...
<Directory /var/lib/mediawiki/>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
AuthUserFile /var/lib/mediawiki/.htpasswd
AuthType Basic
AuthName "Acceso a wiki"
<LIMIT GET POST>
require valid-user
</LIMIT>
</Directory>
...
Ahora, lo único que quedaría sería crear el fichero /var/lib/mediawiki/.htpasswd con el formato nombreusuario:contraseña.
Importante: La contraseña debe estar encriptada, o no funcionará. Para ello, podemos o bien irnos aquí:
o hacerlo manualmente si tenemos un apache ya instalado. En este segundo caso, podemos sacar el par usuario/contraseña por consola:
$ htpasswd -nb usuario contraseña
y copiarlo y pegarlo en el fichero .htpasswd en la ruta indicada, o bien,crear directamente el fichero y el usuario/contraseña (opción -c):
$ htpasswd -cb /var/lib/mediawiki/.htpasswd usuario contraseña
O, si ya tenemos el fichero creado y queremos añadir un nuevo usuario, simplemente:
$ htpasswd -b /var/lib/mediawiki/.htpasswd usuario contraseña