Qui peut toucher à ce fichier ?
Sous Linux, chaque fichier a un propriétaire et des permissions : des droits qui disent qui peut le lire, le modifier ou l'exécuter. Sur un serveur partagé, ce sont elles qui empêchent un collègue de lire tes fichiers ou de casser un programme.
Aujourd'hui, tu lis ces droits, puis tu les changes.
À la fin de cette leçon
Remarque
Je peux choisir qui a le droit de lire, de modifier ou d'exécuter un fichier.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Utilisateur | une personne ou un programme qui a un compte sur la machine | |
| Groupe | un ensemble d'utilisateurs qui partagent des droits | |
| Permission | le droit de lire, d'écrire ou d'exécuter | rw- |
| Propriétaire | l'utilisateur à qui appartient le fichier | |
| Administrateur | le compte qui a tous les droits, appelé root | |
| Mode | les permissions écrites en trois chiffres | 640 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Avant de commencer
Remarque
Appuie sur Start the lab dans la barre en haut et attends que la machine soit prête. Ce lab contient des travaux d'administration que ton enseignant peut te donner. Aujourd'hui, tu ne touches qu'à deux fichiers à toi.
Trois personnes, trois droits
Pour chaque fichier, Linux se demande : qui es-tu ? Il y a trois cas. Le propriétaire possède le fichier. Le groupe est l'équipe liée au fichier. Les autres sont tout le monde.
Chaque cas a trois droits possibles : lire (r), écrire (w) et exécuter (x). Un tiret - veut dire : pas ce droit.
Lire la ligne -rw-r-----
| Morceau | Pour qui | Sens |
|---|---|---|
| - | le type | un fichier (un dossier commence par d) |
| rw- | le propriétaire | lit et écrit |
| r-- | le groupe | lit seulement |
| --- | les autres | aucun droit |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Crée un fichier à toi
echo "plan du projet" > ~/plan-lecon2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Fixe ses droits
chmod 640 ~/plan-lecon2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lis ses droits et son mode
stat -c '%A %a' ~/plan-lecon2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lire vaut 4, écrire 2, exécuter 1
Les droits se calculent. Lire vaut 4, écrire vaut 2 et exécuter vaut 1. On additionne : lire et écrire font 4 + 2 = 6.
Trois chiffres se suivent : propriétaire, groupe, autres. Donc 640 veut dire 6 (rw-), 4 (r--) et 0 (---). On peut aussi écrire des lettres : u est le propriétaire, g le groupe, o les autres.
Deux façons de dire la même chose
| Commande | Droits après | Sens |
|---|---|---|
| chmod 640 f | rw-r----- | le propriétaire lit et écrit, le groupe lit |
| chmod 600 f | rw------- | seul le propriétaire lit et écrit |
| chmod 755 f | rwxr-xr-x | tous lisent et exécutent, le propriétaire écrit |
| chmod g+r f | ajoute r | le groupe gagne la lecture |
| chmod u+x f | ajoute x | le propriétaire gagne l'exécution |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Ferme le fichier à tous
chmod 600 ~/plan-lecon2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Rends-le lisible par le groupe
chmod g+r ~/plan-lecon2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lis le nouveau mode
stat -c '%A %a' ~/plan-lecon2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un script exige le droit x
Un script est un petit programme écrit en texte. Il ne démarre que si le droit x est donné. Sans lui, le système répond « Permission denied » (permission refusée), même si le script est correct.
Un fichier tout juste créé n'a jamais le droit x. Pour un dossier, x veut dire : avoir le droit d'y entrer.
Écris un petit script
printf '#!/bin/sh\necho "bonjour"\n' > ~/salut-lecon2.shAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Donne le droit x au propriétaire
chmod u+x ~/salut-lecon2.shAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lance le script
~/salut-lecon2.shAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lis ton fichier avec le compte nobody
sudo -u nobody cat ~/plan-lecon2.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent que chmod 777 règle tous les problèmes de droits. Il donne à tout le monde le droit de tout faire, y compris de modifier ton fichier. Cherche le droit qui manque et ne donne que celui-là.