Establecer usuario/contraseña para acceso a directorio web en Apache

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
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License