Le fichier des prix d’achat
Une petite boutique garde ses prix d’achat dans un fichier, sur un serveur partagé. Un stagiaire l’ouvre et le modifie par erreur.
Personne n’a piraté quoi que ce soit. Le fichier avait simplement de mauvais droits. Cette leçon apprend à les régler.
À la fin de cette leçon
Remarque
Je peux dire qui a le droit de lire, d’écrire ou de lancer un fichier, et changer ces droits.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Propriétaire | l’unique utilisateur à qui appartient un fichier | |
| Groupe | une liste nommée d’utilisateurs qui partagent des fichiers | |
| Autres | tous ceux qui ne sont ni le propriétaire ni dans le groupe | |
| Root | le compte administrateur, qui peut tout faire | |
| sudo | lance une seule commande en root | sudo whoami |
| Setgid | un réglage de dossier : les nouveaux fichiers prennent son groupe | 2750 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Trois sortes de personnes, trois droits
Chaque fichier a un propriétaire et un groupe. Tous les autres sont les autres.
Pour chacun des trois, le fichier dit qui peut lire (r), écrire (w) et lancer (x).
Sur un dossier, r veut dire lister son contenu. w veut dire ajouter ou retirer des fichiers. x veut dire y entrer.
Qui suis-je ?
idAffiché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 le mode, le propriétaire et le groupe
stat -c "%a %A %U %G" /srv/projectsAffiché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.
Exemple travaillé : lire un mode
| Mode | Le propriétaire peut | Le groupe peut | Les autres peuvent |
|---|---|---|---|
| rwxr-x--- | lire, écrire, lancer | lire, lancer | rien |
| rw-rw-r-- | lire, écrire | lire, écrire | lire |
| rw------- | lire, écrire | rien | rien |
| rwxr-xr-x | lire, écrire, lancer | lire, lancer | lire, lancer |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
chmod change le mode
chmod change le mode. Vous pouvez lui donner trois chiffres, par exemple chmod 640 tarifs.txt.
Vous pouvez aussi dire ce qu’il faut ajouter ou retirer. g+w ajoute l’écriture pour le groupe. o-r retire la lecture aux autres.
Lancez ces commandes dans l’ordre. Chaque ls -l montre le nouveau mode.
Créer un fichier vide
touch tarifs.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.
Propriétaire lit et écrit, groupe lit
chmod 640 tarifs.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.
Regarder le mode
ls -l tarifs.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.
Laisser le groupe écrire aussi
chmod g+w tarifs.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.
Regarder encore
ls -l tarifs.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.
Erreur fréquente
Attention
Beaucoup de gens pensent que chmod 777 règle tout quand ils lisent « permission denied ». Il laisse tous les utilisateurs de la machine modifier le fichier. Cherchez qui a besoin du droit, et donnez-le seulement à ce propriétaire ou à ce groupe.
Utilisateurs, root et sudo
Chaque personne et chaque service a un compte utilisateur. Un utilisateur ordinaire n’ouvre le fichier d’un autre que si son mode le permet, et il ne peut pas modifier les fichiers du système.
Root peut tout faire. Personne ne devrait travailler en root toute la journée. sudo lance une seule commande en root, puis vous redevenez un utilisateur ordinaire.
Un utilisateur ordinaire est refusé
ls /rootAffiché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.
Le même utilisateur, avec sudo
sudo whoamiAffiché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.
Donner le fichier à root
sudo chown root tarifs.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.
Regarder le propriétaire
ls -l tarifs.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.
Le rendre à student
sudo chown student tarifs.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 dossier d’équipe veut un groupe et setgid
Une équipe partage un dossier. Créez un groupe, par exemple ventes, et ajoutez chaque membre avec usermod -aG ventes nom.
Donnez le groupe au dossier avec chgrp, puis choisissez ce que le groupe peut faire.
Ajoutez le droit setgid, le 2 de 2750. Un fichier créé dans le dossier prend alors le groupe du dossier, quel que soit son auteur.
Créer un dossier d’essai
mkdir -p dossier_equipeAffiché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.
Setgid : le groupe entre, pas les autres
chmod 2750 dossier_equipeAffiché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.
Chercher le s
ls -ld dossier_equipeAffiché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.