Vous avez préparé un formidable script qui va commander à l’ordinateur de faire juste ce dont vous avez besoin. Mais hélas il ne fonctionne pas et l’ordinateur vous dit que vous n’avez pas les autorisations nécessaires.... Permission denied ! De qui s’agit-il ? Que faire ?
Dans Linux et Unix, tout est fichier. Les répertoires sont des fichiers, les fichiers sont des fichiers et les périphériques sont des fichiers.
Tous les fichiers d’un système ont des permissions qui autorisent ou empêchent les autres utilisateurs de les voir, de les modifier ou de les exécuter. Le super utilisateur "root" a la possibilité, lui, d’accéder à tous les fichiers du système.
Pour modifier ou éditer des fichiers qui appartiennent à root, sudo doit être utilisé - Lorsqu’on écrit sudo, dans un terminal, on indique à l’ordinateur qu’on est super-utilisateur, du moins provisoirement.
Il y a trois types de permissions, désignées par une lettre :
- lire le fichier, read en anglais, donc lettre r
- écrire sur le fichier, writer en anglais, donc lettre w
- exécuter le fichier, donc lettre x
Et il y a trois types d’utilisateurs :
- le propriétaire : owner
- le groupe : group
- les autres : other
Changer de propriétaire
La commande pour le propriétaire est : chown
Exemple, j’ai un super-script.sh qui se trouve dans le dossier /usr/bin. Et moi je suis nicolas, mon dossier personnel s’appelle : nicolas.
Si j’écris : sudo chown nicolas /usr/bin/super-script.sh
je dis à l’ordinateur que nicolas est le propriétaire du super-script.
et si j’écris : sudo chown papou /usr/bin/super-script.sh
je dis à l’ordinateur que papou est le propriétaire du super-script.
Et le propriétaire, qu’a-t-il le droit de faire ?
Permissions
La commande pour les permissions est : chmod
Si on écrit : chmod +x /usr/bin/super-script.sh
on indique à l’ordinateur que tout le monde a les permissions sur le super-script : lire, modifier, exécuter. On peut écrire aussi : chmod 0755 /usr/bin/super-script.sh
si on utilise : chmod 0700 /usr/bin/super-script.sh
alors il n’y a que le propriétaire qui a les permissions.
Récursivité
Si on a un dossier X12 dans /usr/bin et si ce dossier contient de nombreux fichiers, on peut vouloir changer les permissions .
Si on écrit : chmod +x /usr/bin/X12
alors on change seulement les permissions du dossier.
Mais si on écrit : chmod +x -R /usr/bin/X12
alors on change les permissions du dossier et de tous les fichiers qu’il contient.