CodeGym /Cours /Docker SELF /Principes de base des droits d'accès : chmod, chown, umas...

Principes de base des droits d'accès : chmod, chown, umask

Docker SELF
Niveau 2 , Leçon 0
Disponible

Principes de base des droits d'accès : chmod, chown, umask

1. Notion de droits d'accès

Quand tu bosses avec des fichiers ou des répertoires sous Linux, parfois tu dois gérer qui peut y accéder. Imagine que t'as laissé tes chaussettes traîner et maintenant tout le monde à la maison peut les utiliser ! Les droits d'accès sous Linux permettent d'éviter ce genre d'utilisation "non autorisée des chaussettes" (ou autre chose plus important, comme tes scripts). Allez, on s'y met.

Chaque fichier (et répertoire) sous Linux a trois ensembles de droits d'accès qui déterminent qui peut les lire, écrire ou exécuter :

  1. Lecture (r): Permet de voir le contenu d'un fichier ou la liste des fichiers dans un répertoire.
  2. Écriture (w): Autorise à modifier le contenu du fichier ou à ajouter/supprimer des fichiers dans un répertoire.
  3. Exécution (x): Donne la possibilité d'exécuter le fichier comme un programme (ou d'entrer dans un répertoire).

Le modèle à trois niveaux

Chaque droit s'applique à trois groupes d'utilisateurs :

  • Propriétaire (owner): Celui qui a créé le fichier.
  • Groupe (group): Les utilisateurs regroupés dans un groupe auquel le fichier est attribué.
  • Autres (others): Tous les autres utilisateurs du système.

Exemple de droits d'accès pour un fichier :

-rwxr-xr--

Décryptons :

  • Le premier caractère - indique que c'est un fichier (pour un répertoire ce sera d).
  • Les trois premiers caractères rwx — droits pour le propriétaire (lecture, écriture, exécution).
  • Les trois caractères suivants r-x — droits pour le groupe (lecture, exécution).
  • Les trois derniers caractères r-- — droits pour les autres (lecture seulement).

2. La commande chmod : gérer les permissions

Format symbolique

La commande chmod modifie les permissions des fichiers et répertoires. Le format symbolique s'écrit ainsi :

chmod [qui][action][droits] nom_fichier
  • Qui : u (propriétaire), g (groupe), o (autres), a (tous).
  • Action : + (ajouter un droit), - (retirer un droit), = (définir exactement les droits).
  • Droits : r (lecture), w (écriture), x (exécution).

Exemples :


# Donnons les droits d'exécution à tous
chmod a+x script.sh

# Ajoutons les droits d'écriture uniquement pour le groupe
chmod g+w file.txt

# Retirons le droit de lecture pour les autres
chmod o-r document.txt

Format octal

Le format octal (ou numérique) est plus compact mais demande une compréhension de la "magie des chiffres". Dans ce format, chaque combinaison de droits est représentée par un chiffre :

  • r = 4
  • w = 2
  • x = 1

Les droits s'additionnent :

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

Format d'écriture :

chmod [chiffre][chiffre][chiffre] nom_fichier

Exemple :


# Donnons les droits rwx au propriétaire, r-x au groupe, r-- aux autres
chmod 754 file.sh

3. Changer le propriétaire d’un fichier : commande chown

Si tu as besoin de transférer un fichier à un autre utilisateur (ou groupe), la commande chown vient à ta rescousse.

Format :

chown [utilisateur]:[groupe] nom_fichier

Exemples :


# Transférer la propriété à l'utilisateur user1
chown user1 myfile.txt

# Transférer la propriété et le groupe
chown user1:group1 myfile.txt

# Changer uniquement le groupe
chown :group2 myfile.txt

4. Masque par défaut : umask

Quand tu crées un fichier, ses permissions sont définies par le système. Par exemple, les permissions peuvent être rw-r--r--. Mais d'où viennent-elles ? Réponse : de la commande umask.

C'est quoi umask ?

umask détermine quelles permissions ne seront pas définies pour les nouveaux fichiers.

Par exemple :

  • Ensemble des permissions de base pour un fichier : 666 (pas d'exécution).
  • Masque : 022.
  • Permissions finales : 644 (666 - 022).

Commandes :

  • Voir le masque actuel : umask
  • Définir un nouveau masque : umask 0022

Exemple :


# Configuration du masque pour que les nouveaux fichiers aient rw-rw-r--
umask 0002

5. Droits d'administrateur et sudo

Qu'est-ce que sudo ?

sudo (abréviation de "superuser do") — est une commande dans Linux et les systèmes de type Unix qui permet à un utilisateur d'exécuter des commandes au nom d’un superutilisateur (root) ou d’un autre utilisateur avec des privilèges élevés.

Le système sudo fournit un accès temporaire aux capacités administratives sans avoir besoin de travailler constamment sous le compte root, ce qui réduit les risques de modifications accidentelles ou malveillantes du système.

Important !

Pour simplifier, sudo est écrit avant la commande qui doit être exécutée avec les droits d'administrateur.

Comment fonctionne sudo ?

Lancement de la commande :

Lorsque tu saisis une commande avec sudo, le système vérifie si ton utilisateur a le droit d'exécuter des commandes avec des privilèges élevés.

Par exemple :

sudo apt update

Authentification :

Lors de la première utilisation de sudo dans la session actuelle, le système demandera d’entrer le mot de passe de l’utilisateur courant (pas root).

Après une saisie réussie du mot de passe, le système conserve l’authentification pour une courte durée (généralement 5-15 minutes), afin de ne pas demander le mot de passe pour chaque commande.

Exécution de la commande :

Si l'utilisateur dispose des droits spécifiés dans la configuration de sudo, la commande sera exécutée avec les droits du superutilisateur.

Principales fonctions et commandes de sudo

Lancer une commande avec des privilèges :

sudo <commande>

Par exemple :

sudo apt install nginx

Exécuter une commande au nom d'un autre utilisateur : Utilise l'option -u :

sudo -u <nom_utilisateur> <commande>

Par exemple :

sudo -u user1 ls /home/user1

Obtenir un terminal administratif : Lance une session shell avec les droits root :

sudo -i

ou :

sudo su

Voir la configuration de sudo :

sudo -l

Affiche les commandes que l'utilisateur actuel a le droit d'exécuter.

Modifier la configuration de sudo :

sudo visudo

Cette commande ouvre le fichier de configuration /etc/sudoers pour une modification sécurisée.

6. Exemples

Essayons d'appliquer nos connaissances en pratique.

Exercice 1 : Gestion des droits avec chmod

  1. Créez un fichier :

    touch myfile.txt
    
  2. Attribuez au propriétaire les droits de lecture, écriture et exécution :

    chmod u+rwx myfile.txt
    
  3. Ajoutez uniquement les droits de lecture pour les autres :

    chmod o+r myfile.txt
    
  4. Vérifiez les droits :

    ls -l myfile.txt
    

Exercice 2 : Changement de propriétaire avec chown

  1. Créez un fichier :

    touch ownedfile.txt
    
  2. Changez le propriétaire en user1 (nécessite des droits administrateur) :

    sudo chown user1 ownedfile.txt
    
  3. Vérifiez les changements :

    ls -l ownedfile.txt
    

Exercice 3 : Expérimenter avec umask

  1. Vérifiez le masque actuel :

    umask
    
  2. Définissez le masque à 027 :

    umask 027
    
  3. Créez un nouveau fichier :

    touch newfile.txt
    
  4. Vérifiez les droits du fichier créé :

    ls -l newfile.txt
    

7. Erreurs courantes et nuances

  1. Vous avez oublié sudo lors du changement de propriétaire : Seul l'administrateur peut changer le propriétaire d'un fichier. Si vous obtenez l'erreur "Operation not permitted", essayez d'ajouter sudo.
  2. Ordre incorrect dans la commande chmod : Vous avez changé les droits du mauvais objet. Assurez-vous d'avoir sélectionné le fichier ou le répertoire correct.
  3. umask n'affecte que les nouveaux fichiers : Si vous essayez de modifier les droits des fichiers existants avec umask, cela ne fonctionnera pas. Utilisez chmod.

Le saviez-vous ? Les droits d'accès dans Linux sont tellement flexibles que vous pouvez créer un fichier que seule une personne dans tout l'univers peut "voir" ! Comme on dit, avec de grands droits viennent de grandes responsabilités ! Maintenant, armé de chmod, chown et umask, vous êtes prêt à rendre vos systèmes Linux non seulement pratiques, mais aussi sécurisés.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION