= Restreindre l'accès a certains fichiers déposés sur Zamok =
<<TableOfContents>>

== 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}}} <<BR>> 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 {{//?action=content|/|width="100%"}} 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/
}}}
----
CatégoriePagePublique