Commande chmod
Un article de ChtilandWiki.
[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--
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 :
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
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 :
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
|
|






