Le système de droits et de permissions sous Unix est un des aspects fondamentaux de la gestion de la sécurité du système.
I. Droits et groupes
1) Le monde selon Unix
Unix sépare le monde en trois catégories du point de vue des droits :
- l’utilisateur (user) ;
- le groupe (group) ;
- le reste du monde (others).
2) Exemple de lecture de droits
En utilisant la commande ls -l monfic.sh par exemple, on obtient :
La partie -rwxr--r--, indiquant les droits du fichier, se lit en omettant le tiret du début, puis en décomposant en trois parties :
• rwx (utilisateur) ;
• r-- (groupe) ;
• r-- (autres).
Chaque partie est elle-même composée de trois lettres :
• droit de lecture r ;
• droit d’écriture w ;
• droit d’exécution x : on peut exécuter le fichier en l’invoquant par son nom, dans cet exemple : ./monfic.sh.
On sait donc que monfic.sh est accessible en lecture au groupe Staff et aux autres.
On sait en outre que le fichier appartient à l’utilisateur « roza ».
3) Les droits d’un répertoire
Créons un répertoire www dans notre HOME et lisons les droits correspondants avec la commande ls -l www, on obtient par exemple :
Le d initial signifie qu’il s’agit d’un répertoire.
À noter
Le droit x pour un répertoire est le droit de traverser ce répertoire.
II. Changer des droits
1) La commande chmod
Seul le propriétaire d’un fichier (ou l’utilisateur « root ») peut changer ses permissions d’accès. Il le fait avec la commande chmod dont voici quelques exemples d’utilisation.
Droits |
Syntaxe |
Donner les droits de lecture au groupe g |
chmod g+r monfic.sh |
Donner les droits d’écriture au propriétaire u |
chmod u+w monfic.sh |
Donner les droits d’exécution aux autres (others) o |
chmod o+x monfic.sh |
Donner les droits d’exécution à tous |
chmod ugo+x monfic.sh |
À noter
On peut aussi utiliser la lettre a (all) en raccourci à la place de ugo.
2) Droits symboliques et numériques
Il est également possible d’utiliser un codage octal pour les droits.
L’écriture symbolique : rwx r-x r-x
correspond à l’écriture binaire : 111 101 101 soit 755 en octal.
Par exemple : chmod 755 monfic.sh donne les droits -rwxr-xr-x au fichier monfic.sh.
3) Lancement d’un script et fichiers exécutables
On peut lancer un script en l’invoquant par son nom s’il est exécutable. On précise parfois que le script est dans le répertoire courant en ajoutant ./ devant son nom :
Si le script n’est pas exécutable, on peut toujours le lancer en tapant :
Ces deux méthodes ne sont pas équivalentes : dans le premier cas, un nouveau shell est créé tandis que dans le second, les commandes du script s’exécutent dans le shell courant.
À noter
Tous les fichiers exécutables posent des problèmes potentiels de sécurité, tout fichier exécutable pouvant se transformer en éventuel « cheval de Troie » (logiciel malveillant). Dans un site web par exemple, les fichiers HTML, CSS, images, JavaScript ou PHP n’ont pas à être exécutables, le droit de lecture suffit !