Cet article présente une série d'exercices pratiques pour maîtriser les commandes essentielles de gestion des fichiers, des utilisateurs, des groupes et des permissions dans un environnement Linux, suivi d'une synthèse des commandes les plus couramment utilisées.
Exercices pratiques
1. Recherche de fichiers avec des motifs spécifiques
Rechercher et lister les fichiers ou répertoires dans /etc dont le nom commence par un caractère non alphabétique, suivi d'une lettre, puis de n'importe quelle séquence de caractères.
ls -d /etc/[!a-zA-Z][a-zA-Z]*
2. Copie sélective de fichiers
Copier tous les fichiers et répertoires situés dans /etc dont le nom commence par la lettre 'p' et ne se termine pas par un chiffre vers un nouveau répertoire.
mkdir /tmp/fichiers_p
cp -r /etc/p*[^0-9] /tmp/fichiers_p
3. Transformation du contenu d'un fichier
Convertir le contenu du fichier /etc/issue en lettres majuscules et enregistrer le résultat dans un nouveau fichier.
dd if=/etc/issue bs=1M | tr '[:lower:]' '[:upper:]' > /tmp/issue_majuscules.out
4. Gestion des utilisateurs et des groupes
Effectuer une série de manipulations courantes sur les utilisateurs et les groupes.
# Créer le groupe 'distribution' avec un GID spécifique
groupadd -g 2020 distribution
# Créer l'utilisateur 'debian' avec un UID, un groupe principal et un répertoire personnel spécifiques
useradd -u 1001 -g distribution -d /home/debian_personnel debian
# Créer l'utilisateur 'ubuntu' avec un UID et un répertoire personnel définis
useradd -u 1101 -d /home/ubuntu_home ubuntu
# Attribuer un mot de passe à 'ubuntu' et le forcer à expirer après un délai
echo "motdepasse" | passwd -x 14 --stdin ubuntu
# Supprimer l'utilisateur 'debian' tout en conservant son répertoire personnel
userdel debian
# Créer l'utilisateur 'archlinux' avec des groupes principal et secondaires
groupadd developpeurs
useradd archlinux -u 2003 -g distribution -G developpeurs
# Modifier le shell par défaut de 'archlinux'
usermod -s /bin/bash archlinux
# Ajouter un groupe secondaire et désactiver la connexion pour 'archlinux'
groupadd administrateurs
usermod -aG administrateurs -s /sbin/nologin archlinux
5. Gestion des permissions et des ACLs
Créer des utilisateurs, configurer des répertoires et appliquer des règles de permissions avancées.
# Créer des utilisateurs et un répertoire de test
useradd testeur1; useradd testeur2; useradd testeur3
mkdir /data/mon_repertoire
# Définir le propriétaire et le groupe du répertoire
chown testeur1:testeur1 /data/mon_repertoire
# Accorder des droits en lecture/écriture à 'testeur2' sur un fichier spécifique via ACL
touch /data/mon_repertoire/donnees
setfacl -m u:testeur2:rw /data/mon_repertoire/donnees
# Créer des fichiers et appliquer des attributs immuables
touch /data/mon_repertoire/fichier_a{1..4}.sh
chattr +i /data/mon_repertoire/fichier_a1.sh /data/mon_repertoire/fichier_a2.sh
# Modifier l'appartenance et révoquer l'accès
usermod -aG testeur1 testeur3
chmod -R 044 /data/mon_repertoire
# Nettoyer les ACL et les attributs
setfacl -Rb /data/mon_repertoire
chattr -i /data/mon_repertoire/fichier_a1.sh /data/mon_repertoire/fichier_a2.sh
Synthèse des commandes de gestion
Commandes de gestion des utilisateurs
useradd : Crée un nouvel utilisateur. Options courantes : -u (UID), -g (groupe principal), -d (répertoire personnel), -s (shell), -G (groupes secondaires), -c (commentaire), -r (utilisateur système).
# Exemple de création d'un utilisateur avec des paramètres détaillés
useradd -u 1500 -g distribution -G developpeurs,administrateurs -s /bin/zsh -c "Utilisateur Fedora" fedora
usermod : Modifie les attributs d'un utilisateur existant. Options notables : -l (nouveau nom), -L (verrouiller), -U (déverrouiller), -aG (ajouter à des groupes secondaires), -e (date d'expiration).
userdel : Supprime un utilisateur. L'option -r supprime également le répertoire personnel.
passwd : Gère les mots de passe des utilisateurs. Peut verrouiller (-l), déverrouiller (-u) un compte ou définir des politiques de vie (-n, -x, -w, -i). L'option --stdin permet de passer le mot de passe via un tuyau (pipe).
chage : Modifie les informations d'expiration du mot de passe et du compte pour un utilisateur.
Commandes de gestion des groupes
groupadd : Crée un nouveau groupe. Options : -g (GID), -r (groupe système).
groupmod : Modifie les propriétés d'un groupe (nom avec -n, GID avec -g).
groupdel : Supprime un groupe.
gpasswd : Administre le fichier /etc/group et le fichier de mots de passe des groupes. Permet d'ajouter (-a) ou de retirer (-d) des utilisateurs, ou de définir des administrateurs du groupe (-A).
id : Affiche les informations d'identification (UID, GID, groupes) pour un utilisateur.
su : Permet de changer d'identité utilisateur. su - effectue une connexion complète (charge l'environnement de l'utilisateur cible).
Commandes de gestion des permissions et de la propriété
chmod : Modifie les permissions d'accès (lecture, écriture, exécution) pour le propriétaire, le groupe et les autres. Utilisable en mode symbolique (u+r, g-w) ou numérique (755).
# Exemples de modification des permissions
chmod u+x,g+w mon_script.sh
chmod 640 configuration.conf
chown : Modifie le propriétaire et/ou le groupe d'un fichier ou répertoire.
# Changer le propriétaire et le groupe
chown utilisateur:groupe fichier.txt
# Changer récursivement le propriétaire
chown -R nouveau_proprietaire /chemin/du/repertoire
chgrp : Modifie uniquement le groupe d'un fichier ou répertoire.
umask : Définit le masque de création de fichier, qui détermine les permissions par défaut retirées lors de la création de nouveaux fichiers ou répertiores. La valeur 022 est courante, donnant des permissions 755 pour les répertoires et 644 pour les fichiers.
setfacl / getfacl : Commandes pour gérer les listes de contrôle d'accès (ACL), permettant de définir des permissions granulaires pour des utilisateurs ou groupes spécifiques sur un fichier.
# Exemple d'utilisation des ACL
setfacl -m u:lecteur_seul:r document.txt
getfacl document.txt