Nous avons vu comment changer les droits sur un fichier avec la commande chmod et les lettres r w et x

r pour read

w pour write

x pour execute

J’avais créé pour les besoins de l’article sur les droits des fichiers un répertoire « monrep » dans lequel se trouvent trois fichiers :

monfichier

sonfichier

tonfichier

Si on tape la commande ls –l, on obtient la liste détaillée des fichiers avec les droits affectés à chacun de ces fichiers.

ls - l terminal

Vous savez comment changer les droits du fichier avec la commande chmod, mais après une lecture sur internet d’un article, vous rencontrez ceci : chmod 777 monfichier!

Stupéfaction. La commande n’est plus chmod u +r ou autre mais maintenant chmod avec des chiffres. De qui se moque-t-on ? Il faudrait savoir.

Les deux méthodes existent et ne me demandez surtout pas laquelle choisir, elles ont toutes les deux leurs adeptes. A vous d’en choisir une selon vos habitudes.

Avant de voir à quoi peuvent bien correspondre ces chiffres, nous allons taper la commande suivante en premier lieu :

stat –c %A monfichier (Attention au A majuscule)

La réponse est –rw-rw-r-- (Les droits du fichier monfichier)

Maintenant on va taper cette commande :

stat –c %a monfichier

On obtient 664 (Toujours les droits sous forme de chiffres pour monfichier)

On constate bien que le fichier « monfichier » affiche des droits soit sous forme de lettres soit sous forme de chiffres. Reste à savoir comment faire la correspondance entre les lettres et les chiffres.

Pour rw-rw-r-- on a 664. Pourquoi ?

Les chiffres sont en octal et voici la correspondance pour chaque lettre :

r ---> 4

w ---> 2

x ---> 1

C’est bien joli tout ça, mais moi j’ai un nombre 664 qui s’affiche. Il est ou le chiffre 6 dans cette histoire ?

Il faut se souvenir que pour affecter des droits à un fichier nous avons trois groupes de lettres.

Un groupe de lettres rwx pour l’utilisateur (user)

Un groupe de lettres rwx pour le groupe (group)

Un groupe de lettres rwx pour les autres (others)

Chaque groupe de lettres va être remplacé par un seul chiffre. Ce chiffre est l’addition des trois chiffres correspondant aux droits en lettre (rwx ou -). C’est clair !

Il vaut mieux un exemple peut-être :

Pour le fichier « monfichier », nous avons comme droits : rw-rw-r--

Si on prend le premier groupe de lettres (rw-), nous avons r (r=4), w (w=2) et – (-=0).

On additionne donc, 4+2+0 et on obtient 6

Prenons maintenant le deuxième groupe de lettres (rw-), nous avons r (r=4), w (w=2) et – (-=0).

On additionne donc, 4+2+0 et on obtient 6

On prend le troisième groupe de lettres (r--), nous avons r (r=4), - (-=0) et encore – (-=0)

On additionne donc 4+0+0 et on obtient 4

Nous avons bien 664 au final pour les droits du fichier « monfichier »

Pour être sûr que nous avons bien compris le système, nous allons changer les droits du fichier « monfichier » avec la première méthode et voir avec la commande stat ce qu’il se passe.

Nous allons enlever les droits d’écriture au groupe.

chmod g-w monfichier

Essayons de voir en chiffre ce que l’on devrait obtenir avec la commande stat –c %a monfichier

Si l'on enlève donc les droits en écriture au groupe (group) cela veut dire que nous devrions voir avec la commande ls –l ceci : rw-r--r--

Faisons maintenant les calculs :

Pour rw- nous avons 4+2+0=6

Pour r-- nous avons 4+0+0=4

Pour r-- nous avons 4+0+0=4

Vérification avec la commande stat –c %a monfichier

644

C’est exact

Repassons maintenant notre groupe en mode écriture avec la méthode par les chiffres.

Rien ne bouge pour l’utilisateur, le groupe doit être modifié en 6 (4+2+0) et pour les autres cela ne bouge pas non plus.

On tape donc la commande : chmod 664 monfichier

Et on obtient :

-rw-rw-r--

C’est exact.

chmod 664