Gérer les utilisateurs, les droits et les partages sur Linux¶
1. Objectif du cours¶
Acquérir les notions et commandes essentielles pour créer et administrer des comptes utilisateurs, définir et modifier permissions et bits spéciaux, et mettre en place des partages NFS/SMB de manière sécurisée pour un environnement professionnel.
2. Notions et définitions essentielles¶
- Utilisateur : entité identifiée par un UID avec des droits et un répertoire personnel.
- Groupe : ensemble d'utilisateurs identifié par un GID, utilisé pour gérer collectivement les permissions.
- Permissions de base : r (lecture), w (écriture), x (exécution) appliquées au propriétaire / groupe / autres.
- Notation numérique : somme des valeurs r=4, w=2, x=1 (ex. 640, 755).
- Bits spéciaux : setuid (exécute avec droits du propriétaire), setgid (héritage de groupe pour nouveaux fichiers), sticky bit (empêche suppression par d'autres utilisateurs).
- ACL : listes de contrôle d'accès pour des droits fins par utilisateur/groupe.
- Partages : NFS (Unix/Linux) et SMB/Samba (interopérabilité Windows).
3. Fonctionnement et principes¶
- Gestion utilisateurs : création d’un compte crée UID et un répertoire personnel ; groupes simplifient l’octroi de droits collectifs.
- Permissions : déterminent qui peut lire, modifier ou exécuter ; représentées symboliquement (rwx) ou numériquement (0–7 par catégorie).
- Bits spéciaux : modifient le comportement standard (ex. setuid pour permettre à un binaire d’agir avec les privilèges du propriétaire).
- ACL : complètent le modèle propriétaire/groupe/autres pour définir des règles précises (droits par utilisateur ou groupe).
- Partages : NFS expose des dossiers via /etc/exports pour clients Unix; Samba via /etc/samba/smb.conf pour environnements hétérogènes. La journalisation et la bonne configuration des permissions locales sont essentielles pour la sécurité.
4. Commandes et manipulations¶
Groupées par procédure (extraits et rôle) — uniquement celles présentes dans le document : - Création et gestion d’utilisateurs/groupes : - sudo useradd -m nom_utilisateur : créer un compte avec répertoire personnel. - sudo passwd nom_utilisateur / passwd : définir/changer mot de passe. - su nom_utilisateur / exit : changer d’utilisateur dans une session. - sudo groupadd [nom_du_groupe] : créer un groupe. - sudo usermod -a -G [nom_du_groupe] [nom_utilisateur] : ajouter un utilisateur à un groupe sans supprimer ses autres appartenances. - getent group [nom_du_groupe] : lister les membres d’un groupe. - Authentification par clés SSH : - ssh-keygen : générer paire de clés publique/privée. - ssh-copy-id utilisateur@serveur : déployer la clé publique sur le serveur. - vérifier configuration serveur via sshd_config (fichier). - Permissions et propriétés : - chmod (ex. chmod 755/750/644/777 mentionnés) : modifier permissions. - chown utilisateur:fichier et chgrp groupe fichier : changer propriétaire et groupe. - Bits spéciaux et ACL : - setfacl -m u:utilisateur:perms /chemin et setfacl -m g:groupe:perms /chemin : définir ACL. - getfacl /chemin : afficher ACL. - Mise en place NFS et Samba : - sudo apt install nfs-kernel-server : installer serveur NFS. - éditer /etc/exports (ex. via sudo nano) et appliquer exportfs -a / exportfs -v. - sudo systemctl restart nfs-kernel-server et sudo systemctl restart smbd : redémarrer services. - sudo mount -t nfs server_ip:/chemin /point_de_montage : monter un partage NFS côté client. - Pour Samba : modifier /etc/samba/smb.conf (option valid users), puis redémarrer smbd. - Outils Samba et logs : - sudo pdbedit -L, sudo smbpasswd user / sudo smbpasswd -x user, sudo smbstatus, sudo journalctl -u smbd --since "1 hour ago".
5. Sécurité et bonnes pratiques¶
- N’ajoutez des utilisateurs à des groupes que si nécessaire ; effectuez des revues régulières des appartenances.
- Préférez l’authentification par clés SSH plutôt que mots de passe pour diminuer le risque d’interception.
- Évitez chmod 777 : donne tous les droits à tous, source de failles.
- Ne donnez pas de permission d’exécution à des fichiers non-exécutables.
- Utilisez setuid/setgid avec prudence (risque de failles si mal appliqués) ; appliquer le sticky bit sur répertoires partagés (/tmp, /shared/docs) pour empêcher suppressions non souhaitées.
- Activez et surveillez la journalisation des accès aux partages (NFS/Samba) pour détecter activités suspectes.
6. Points essentiels à retenir pour le TSSR¶
- Un utilisateur = UID unique ; un groupe = GID pour gérer collectivement les permissions.
- useradd -m + passwd ; usermod -a -G pour gérer comptes et appartenance aux groupes.
- Permissions r/w/x exprimées symboliquement et numériquement (r=4,w=2,x=1) ; exemple fréquent : 644 et 750.
- Ne pas utiliser chmod 777 ; éviter d’ajouter des exécutions inutiles.
- Bits spéciaux : setuid pour exécuter avec droits du propriétaire, setgid pour héritage de groupe, sticky pour protéger fichiers dans répertoires partagés.
- ACL (setfacl/getfacl) permettent des droits plus granulaires que le modèle standard.
- NFS pour environnements Unix ; SMB/Samba pour interopérabilité Windows — sécuriser via valid users et permissions système.
- Toujours redémarrer le service après modification de configs (NFS/Samba) et exporter les changements pour NFS.
- Journaliser et vérifier les logs Samba/NFS régulièrement.
- Forcer expiration de mots de passe via la directive PASS_MAX_DAYS dans /etc/login.defs.
7. Tableau récapitulatif¶
| Objet | Usage principal | Avantage | À surveiller |
|---|---|---|---|
| NFS | Partage entre systèmes Unix/Linux | Performance, intégration | /etc/exports & exportfs, droits POSIX |
| SMB / Samba | Partage avec Windows | Interopérabilité | smb.conf (valid users), logs smbd |
| Permissions classiques | rwx propriétaire/groupe/autres | Simplicité | Limité pour règles fines |
| ACL | Droits par utilisateur/groupe | Granularité | Complexité de gestion |
| Bits spéciaux (setuid/setgid/sticky) | Comportement avancé | Fonctionnalités utiles | Risques de sécurité si mal configurés |
8. Vérifications pratiques¶
- Contrôler l’appartenance à un groupe pour vérifier ajout/révocation.
- Vérifier les exports NFS pour confirmer les partages actifs.
- Monter un partage depuis un client et tester lecture/écriture/exécution selon les droits souhaités.
- Afficher les ACL d’un fichier/répertoire pour confirmer règles fines.
- Consulter les logs Samba/NFS et l’état des services (smbstatus / journalctl) pour détecter erreurs ou accès non autorisés.
- Tester la configuration en se connectant avec les différents utilisateurs et en tentant les opérations attendues (lecture, écriture, exécution).
9. Flashcards Anki¶
Quel fichier édite-t-on pour définir les dossiers exportés par NFS ? :: /etc/exports Quelle commande installe le serveur NFS sur une distribution Debian/Ubuntu ? :: sudo apt install nfs-kernel-server Quelle directive dans /etc/login.defs permet de forcer l’expiration des mots de passe ? :: PASS_MAX_DAYS Quelle commande ajoute un utilisateur à un groupe sans supprimer ses groupes existants ? :: usermod -a -G groupe utilisateur Que signifie la permission numérique 644 pour un fichier ? :: propriétaire 6 (rw), groupe 4 (r), autres 4 (r) Quel est l’avantage principal des clés SSH par rapport aux mots de passe ? :: authentification sans transmission du mot de passe réel sur le réseau Quel est l’effet du sticky bit sur un répertoire partagé ? :: empêche un utilisateur de supprimer/modifier les fichiers d’autres utilisateurs Quelle option Samba restreint l’accès d’un partage à des utilisateurs précis ? :: valid users Quelle commande permet d’appliquer ou d’afficher des ACL sur un fichier ou répertoire ? :: setfacl (appliquer) / getfacl (afficher) Que fait le bit setuid appliqué à un exécutable ? :: exécute le programme avec les droits du propriétaire du fichier