Placer les propriétés (chmod)
Introduction : linux permet de spécifier les droits qu'ont les utilisateurs sur un fichier. Pour voir ces droits, il suffit d'utiliser la commande ls -l :
[delcros@mistra delcros]$ ls -l perso
-rw-r--r-- 1 delcros delcros 9 Jul 19 12 : 39 perso
c'est la partie qui contient : -rw-r--r-- qui nous intéresse pour l'instant.
Le premier tiret signifie que perso est un fichier tout ce qu'il y a de plus classique. Si à la place du premier tiret on observait un "d" cela signifierait qu'en réalité le fichier est un répertoire. Si à la place du premier tiret on observe un "l", cela signifie que le fichier est un lien.
Ensuite nous devons décomposer en trois parties les 9 dernières caractères :
rw- | r-- | r--
La première partie fixe les droits de propriétés pour le propriétaire du fichier.
La deuxième partie fixe les droits accordés aux utilisateurs faisant partie du groupe auquel appartient le fichier.
La dernière partie fixe les droits des autres utilisateurs.
Dans chaque partie, le premier caractère correspond au droit de lecture ("r"), la deuxième caractère correspond au droit d'écriture ("w"), le troisième caractère correspond au droit d'exécution ("x"). Si à la place d'un des caractères nous ne voyons qu'un tiret "-", c'est que le droit n'est pas autorisé.
On voit ainsi que tous les utilisateurs ont le droit de lire ("r" comme "read") le fichier et que seul son propriétaire a le droit de le modifier ("w" comme "write").
Par contre personne ne peut exécuter ce fichier (normal ce n'est ni un script, ni un binaire). Si par exemple tout le monde pouvait exécuter le fichier on aurait le dernier tiret de chaque partie remplacé par un "x" comme "eXécutable".
rwx | r-x | r-x
Cette spécificité d'UNIX sur la méthode de fixation des permissions sur un fichier assure une très grande sécurité et une très grande souplesse.
Dès maintenant, nous donnerons la lettre "u" pour le propriétaire du fichier, la lettre "g" pour le groupe d'utilisateur qui possède le fichier, la lettre "o" pour les autres utilisateurs. La lettre "a" nous permettra de faire référence à tous les utilisateurs. Cette notation est nécessaire car c'est celle que l'on doit utiliser avec la commande chmod.
C'est donc la commande chmod qui permet de modifier ces permissions qu'ont les utilisateurs sur le fichier. Évidemment, seul le propriétaire du fichier a le pouvoir de modifier ces permissions (à part bien sur le superutilisateur "root" qui peut faire absolulement tout ce que bon lui semble ...
Par exemple, nous décidons que n'importe qui pourra modifier notre fichier linux-test :
[delcros@mistra delcros]$ chmod a+w linux-test
"a" indique que tous les utilisateurs seront touchés par la modification des permissions
"+" signifie que c'est une permission supplémentaire que l'on donne. Pour en supprimer une il suffit de remplacer le signe "+" par "-".
"w" signifie que c'est la permission d'écriture que nous donnons.
Pour vérifier que tout a bien fonctionné, faites un "ls -l linux-test", nous obtenons :
-rw-rw-rw- 1 delcros delcros 9 Jul 19 19 : 03 linux-test
Si maintenant nous voulons supprimer ce droit d'écriture mais aussi le droit de lecture pour le groupe propriétaire et les autres utilisateurs nous utilisons la syntaxe suivante :
[delcros@mistra delcros]$ chmod go-wr linux-test
"go" signifie que la commande affectera le groupe propriétaire et les autres utilisateurs.
"wr" signifie que la modification portera sur les droits d'écriture ou de lecture. (on aurait pu aussi écrire la commande en mettant "rw", l'ordre n'a pas d'importance).
Dernier exemple : je souhaite que le propriétaire du fichier puisse exécuter ce fichier :
[delcros@mistra delcros]$ chmod u+x linux-test
Ainsi le propriétaire du fichier a le droit d'exécuter linux-test (ce qui de toute manière dans ce cas ci ne servira pas à grand chose puisque linux-test n'est ni un binaire ni un script ...)
Si nous souhaitons définir d'un seul mouvement toutes les permissions d'un fichier, on peut utiliser la syntaxe suivante (nous voulons que linux-test soit en lecture, en écriture et en exécution pour le propriétaire, que le groupe n'ait le droit que de le lire et d'écrire et que les autres utilisateurs ne puissent que le lire) :
[delcros@mistra delcros]$ chmod u=rwx,g=rw,o=r linux-test
En une seule ligne grâce au signe "=" nous avons définit l'ensemble des droits. Il existe une autre facon d'indiquer les permissions, nous aurions pu utiliser la syntaxe suivante pour l'exemple précédent :
chmod 764 linux-test
La syntaxe est vraiment très différente ...
En réalité, nous venons d'utiliser la notation binaire pour définir les droits :
Petit rappel :
Binaire ------- Logique ------ Décimal
000 -------- (---) ------- 0
001 -------- (--x) ------- 1
010 -------- (-w-) ------- 2
011 -------- (-wx) ------- 3
100 -------- (r--) ------- 4
101 -------- (r-x) ------- 5
110 -------- (rw-) ------- 6
111 -------- (rwx) ------- 7
Le 0 indique donc un tiret et le 1 indique que la lettre correspondant à la position doit être inscrite. Donc pour notre exemple, rwx (pour le propriétaire) correspond à 7, rw (pour le groupe correspond à 6, et r (pour les autres utilisateurs) correspond à 4. Nous avons bien la séquence 764. les chiffres doivent être dans l'ordre, le premier pour le propriétaire, le deuxième pour le groupe, le troisième pour les autres utilisateurs.