Après deux semaines de stage à l’Accès Code School de Nevers et une première intégration avec HTML et Bootstrap depuis un template PSD, il était temps de mettre notre travail en ligne sur un serveur virtuel (Debian 9).
Sous systèmes Unix, il est important de connaître les droits d’accès aux fichiers afin de protéger le serveur mais aussi de protéger certains répertoires ou fichiers que l’ont souhaite rendre invisible aux visiteurs par exemple…
Les permissions UNIX constituent un système simple de définition des droits d’accès aux ressources, représentées par des fichiers disponibles sur un système informatique. Elles restent le moyen le plus utilisé pour définir les droits des utilisateurs sur les systèmes de type UNIX.
Il est primordial d’accorder les bonnes permissions aux fichiers et dossiers d’un site sur un serveur web. Si ces permissions sont trop permissives, l’administrateur du site s’expose à la compromission du site, voire du serveur.
chmod
(change mode en anglais) est une commande qui sert à changer les permissions de lecture, d’écriture et d’exécution d’un fichier ou d’un dossier, soit en mettant plus de droits sur la cible indiquée, soit en enlevant.
Mais au fait, les « droits d’accès » c’est quoi ?
C’est un modèle qui décrit, pour chaque fichier ou chaque répertoire, qui a le droit de lire, exécuter (ou traverser dans le cas d’un répertoire) ou modifier. Sur votre Mac ou PC Windows personnel, ces considérations ne sont peut-être pas très importantes si vous êtes le seul utilisateur. Mais c’est particulièrement important sous Unix, qui est un système conçu pour être multi-utilisateurs.
Chaque fichier a plusieurs propriétés associées : le propriétaire, le groupe propriétaire, la date de dernière modification, et les droits d’accès. On peut examiner ces propriétés grâce à l’option -l
de ls
. Dans cet exemple, nous voyons les permissions standard d’un répertoire et de deux fichiers :
Permissions
Comme nous le voyons sur l’image ci-dessus, le bloc de permissions se divise en quatre éléments.
Type
Le premier caractère du bloc de permissions indique le type du fichier : -
pour un fichier normal, d
pour un répertoire. On trouve également parfois l
pour les liens symboliques, et d’autres choses plus exotiques.
Droits du propriétaire
• r
ou -
: droit de lire (r
pour read) le fichier (r
pour oui, -
pour non)
• w
ou -
: droit d’écrire (w
pour write) dans le fichier
• x
ou -
: droit d’exécuter (x
pour execute) le fichier.
Pour un répertoire, les choses sont un peu différentes. Le couple rx
donne le droit d’examiner le répertoire et son contenu. Le bit w
donne le droit d’ajouter ou de supprimer des fichiers dans le répertoire.
Il existe d’autres types de droits plus exotiques, comme le bit setuid
(s
) ou encore le « sticky bit
» (t
). Si ça vous intéresse, lisez la page de man
de chmod
.
Modifier les droits d’accès
Comme évoqué plus haut, j’ai essayé de modifier les droits d’accès pour protéger le répertoire img de mon projet.
Pour rappel, il existe 4 commandes liées aux droits d’accès :
• chmod
(change mode), la plus utile, qui modifie les permissions
• chgrp
(change group
) qui modifie le groupe d’un fichier ou répertoire
• chown
(change owner) qui modifie le propriétaire d’un fichier ou répertoire
• umask
, qui définit les protections par défaut
Les commandes chgrp
et chown
servent surtout à l’administrateur du système, donc nous ne les examinerons pas ici (lisez leur page de man
pour en savoir plus). En revanche, chmod
est une commande très pratique dans une utilisation courante et c’est celle que j’ai utilisée.
Notation symbolique
Cette notation un peu « ésotérique » consiste à associer un ou plusieurs degrés de propriété, une action et un ou plusieurs types d’accès. On l’utilise généralement pour ajouter ou retirer des permissions par rapport à la normale (-rw-r--r--
pour un fichier, drwxr-xr-x
pour un répertoire).
Degré de propriété, Action, Type d’accès
u
(utilisateur)
g
(groupe)
o
(autres)
a
(tout le monde)
+
(ajoute le droit)(enlève le droit)
=
(définit le droit)
r
(lecture)
w
(écriture)
x
(exécution)
Par exemple et pour illustrer mes propos, j’ai cherché à protéger ce fameux répertoire img. L’objectif ? Ne pas rendre visible de l’extérieur les images de ce dossier. Après avoir appliqué un chmod
de 744 au dossier img, les images étaient toujours visibles de l’extérieur.
Après quelques recherches et avec l’appui des autres stagiaires du groupe, j’ai finalement appliqué les droits 711 sur le fichier img puis les droits 644 à toutes les images de ce dossier.
Et voila ! Les images apparaissaient bien dans la maquette en ligne mais n’étaient plus visibles depuis le Net dans le dossier img.
Contrat rempli.