Restreindre l'accès a certains fichiers déposés sur Zamok
Sommaire
Avec un fichier .htaccess
En utilisant un fichier .htaccess, on peut restreindre l'accès à certains dossiers stockés dans www. Pour cela il faut créer deux fichiers:
un fichier nommé .htaccess dans le dossier dont on veut restreindre l'accès;
un fichier nommé .htpasswd dans /home/nom_utilisateur.
Contenu du fichier .htaccess
# .htaccess AuthUserFile /home/nom_utilisateur/.htpasswd AuthName "Acces restreint" AuthType Basic Require valid-user
Qui fait référence au chemin d'accès du fichier .htpasswd
Contenu du fichier .htpasswd
Ce fichier contient une liste des utilisateurs autorisés. La syntaxe de la liste est la suivante:
nom_utilisateur:mot_de_passe_chiffré
Exemple: On autorise deux utilisateurs:
papa qui a pour mot de passe noel;
pere qui a pour mot de passe fouettard.
Qui donne le fichier suivant:
# .htpasswd papa:KZjIAGTjhe4Ys pere:pC2IXXpDUjAl.
Pour chiffrer les mots de passe, il y a plusieurs solutions :
- savoir le faire de tête (mieux vaut être salement nerd pour ça)
savoir se tourner vers des gens qui savent le faire, comme par exemple ce site: http://perso.nerim.net/htpasswd.php
Le plus simple reste l'utilisation de la commande htpasswd.
htpasswd -c /home/nom_utilisateur/.htpasswd toto
demandera le mot de passe de toto et créera le fichier /home/nom_utilisateur/.htpasswd
Puis
htpasswd /home/nom_utilisateur/.htpasswd toto
Pour modifier le mot de passe de "toto" ou rajouter d'autres couples "login/mot de passe" (changer "toto" en conséquence) Plus d'informations sur cette commande en faisant man htpasswd sur zamok
On notera que le fichier .htpasswd sera lisible par tous les utilisateurs du Cr@ns. C'est pas le mieux en termes de sécurité même si les mots de passes qu'il contient sont chiffrés.
Interdire l'accès en ssh aux autres utilisateurs du Cr@ns
Ce n'est qu'une histoire d'autorisation sur le dossier en question :
chmod -R g-rwx,o+r le_dossier chmod o+x le_dossier
Malheureusement cette méthode n’empêche pas les clubs (qui n'appartiennent pas au groupe users mais au groupe clubs) de pouvoir accéder à nos fichiers. Il est donc préférable d'utiliser setfacl :
chmod -R go-rwx le_dossier setfacl -R -m u:www-data:rx le_dossier
(on pourrait veiller à ne mettre le droit d’exécution uniquement sur les dossiers mais bon…)
Le programme setfacl agit localement, il doit être exécuté sur zamok pour être pris en compte par les pages perso.
Préciser aux robots d'indexation quelles pages peuvent être indexées
Pour empêcher les moteurs de recherches comme google d'indexer vos pages, rien de plus simple, il suffit de créer un fichier robots.txt
Ce fichier se place à la racine de vos pages (dans le dossier www/) et peut contenir les commandes suivantes :
- User-Agent: permet de préciser le robot concerné par les directives suivantes. La valeur * signifie "tous les moteurs de recherche".
Disallow: permet d'indiquer les pages à exclure de l'indexation. Chaque page ou chemin à exclure doit être sur une ligne à part et doit commencer par /. La valeur / seule signifie "toutes les pages du site". Le chemin doit être relatif à votre page perso, donc pour interdire toutes les pages de votre page perso, il faut mettre et il ne faut pas mettre /~login_crans/ ou /login_crans/.
Les modifications que vous effectuez dans votre fichier robots.txt apparaîtront sous une heure sur http://perso.crans.org/robots.txt
Le fichier robots.txt ne doit contenir aucune ligne vide !
Voici des exemples de fichier robots.txt :
- Exclusion de toutes les pages :
User-Agent: * Disallow: /
- Exclusion d'une ou plusieurs pages :
User-Agent: * Disallow: /repertoire/chemin/page.html Disallow: /repertoire/chemin/page2.html Disallow: /repertoire/chemin/page3.html
- Exclusion de toutes les pages d'un répertoire et ses sous-dossiers :
User-Agent: * Disallow: /repertoire/