Protéger l’accès à certains fichiers spécifiques avec .htaccess
I. Présentation
Les fichiers ".htaccess" sont souvent utilisés dans Apache afin de protéger l'accès à un répertoire spécifique où les fichiers sont positionnés. Il est important de savoir également que l'on peut, avec un fichier ".htaccess", protéger un fichier ou un type de fichier et pas d'autres alors qu'ils sont dans le même répertoire. C'est ce que nous allons voir dans ce tutoriel.
II. Préparation de l'environnement
Nous allons supposer qu'Apache2 est déjà installé et opérationnel sur notre serveur et qu'il est joignable sur le port 80. Pour le test, nous allons supposer que la page "index.html" doit être joignable sans restriction mais pas la page "index2.html" que nous créons maintenant :
cp /var/www/index.html /var/www/index2.html chown www-data /var/www -Rf
Nous faisons un premier test d'accès aux deux pages. Elles sont normalement toutes deux accessibles sans restrictions (sinon vérifiez votre configuration Apache2).
III. Construction du fichier .htaccess
Nous allons maintenant créer le fichier ".htaccess" dans le répertoire "/var/www" afin de restreindre l'accès uniquement au fichier "index2.hml" :
vim /var/www/.htaccess
Nous mettons ce contenu à l'intérieur :
AuthUserFile /var/www/.htpasswd AuthGroupFile /dev/null AuthName "Accès sécurisé administration" AuthType Basic require user neoflow
Ce sont les balises "" qui nous permettent en effet d'indiquer à Apache que nous souhaitons protéger un fichier ou un type de fichier spécifique. Il faut maintenant créer le fichier ".htpasswd" (qui peut d'ailleurs être nommé comme vous le souhaitez) à l'endroit indiqué dans notre fichier ".htaccess" :
htpasswd -c /var/www/.htpasswd neoflow
On indiquera ensuite deux fois notre mot de passe.
Note : Vérifiez que votre configuration Apache2 accepte les fichiers ".htaccess", je vous amène à ce tutoriel si votre fichier ne semble pas être pris en compte : Fichier .htaccess pas pris en compte, que faire ?
Voila nous avons bien protégé notre fichier "index2.html" sans restreindre l'accès à notre fichier "index.html" alors que ceux-ci se situent dans le même répertoire Apache2.