Cours

Linux Leçon 4

Les droits

Lire les permissions d'un fichier, les modifier avec chmod et changer le propriétaire avec chown.

25 min

À la fin de cette leçon, tu sauras

  • Lire les droits rwx affichés par ls -l
  • Modifier les droits avec chmod, en lettres et en chiffres
  • Changer le propriétaire avec chown et utiliser sudo

Lire les droits

$ ls -l
-rw-r--r-- 1 lea www-data  2048 oct. 17 index.php
drwxr-x--- 2 lea www-data  4096 oct. 17 config

Le premier caractère indique le type (- fichier, d dossier). Viennent ensuite trois groupes de trois lettres :

  1. les droits du propriétaire (ici lea) ;
  2. les droits du groupe (ici www-data) ;
  3. les droits de tous les autres.

Dans chaque groupe : r lire (read), w écrire (write), x exécuter, ou entrer dans un dossier. Un tiret veut dire « non ». Pour index.php : Léa peut lire et écrire, le groupe et les autres peuvent seulement lire.

chmod en chiffres

Chaque droit a une valeur : r = 4, w = 2, x = 1. On les additionne pour chaque groupe.

chmod 644 index.php     # rw- r-- r--  : le cas classique d'un fichier
chmod 755 script.sh     # rwx r-x r-x  : un script exécutable, ou un dossier
chmod 600 secret.env    # rw- --- ---  : lisible par le propriétaire seulement
chmod +x script.sh      # en lettres : ajoute le droit d'exécution

Attention : chmod 777 donne tous les droits à tout le monde. C'est la fausse solution classique quand « ça ne marche pas » : elle ouvre une faille. Cherche plutôt qui a besoin de quel droit.

Propriétaire et administrateur

sudo chown lea:www-data index.php     # propriétaire lea, groupe www-data
sudo chown -R lea:lea site/           # tout un dossier

sudo exécute une commande avec les droits d'administrateur (root), après avoir demandé ton mot de passe. Utilise-le seulement quand c'est nécessaire : une erreur avec sudo peut abîmer tout le système.

À toi de jouer

Dans le terminal (ton serveur) :

  1. donne au fichier config.env, qui contient des mots de passe, des droits de lecture et d'écriture pour son propriétaire seulement (en chiffres) ;
  2. rends le script deploy.sh exécutable par tout le monde, mais modifiable seulement par son propriétaire (en chiffres) ;
  3. avec les droits administrateur, donne le dossier site et tout son contenu à l'utilisateur lea et au groupe www-data.
eleve@cours: ~
  • config.env en 600
  • deploy.sh en 755
  • chown -R donne site à lea:www-data
  • chown est lancé avec sudo
  • Pas de chmod 777
Bloqué ? Voir une solution
chmod 600 config.env
chmod 755 deploy.sh
sudo chown -R lea:www-data site

Quiz

1Que signifie -rw-r----- ?
2Combien vaut rwx en chiffre ?
3Pourquoi éviter chmod 777 ?