Comment changer d’utilisateur sous Linux : Le guide complet
Linux est un système d’exploitation multi-utilisateurs par conception, et la gestion des identités utilisateur est l’une des compétences les plus fondamentales que tout administrateur système doit maîtriser. Que vous gériez un environnement VPS Hosting, que vous configuriez un serveur web ou que vous dépanniez des problèmes de permissions de fichiers après un déploiement, comprendre comment changer d’utilisateur sous Linux est essentiel.
L’expression « changer d’utilisateur » sous Linux couvre en réalité plusieurs opérations distinctes, chacune avec ses propres outils, risques et bonnes pratiques :
- Basculer vers un autre compte dans le shell (par exemple, de
johnàroot) pour une session interactive - Exécuter une seule commande en tant qu’utilisateur différent sans basculer complètement de session
- Changer l’utilisateur sous lequel s’exécute un service ou un processus — critique pour le renforcement de la sécurité
- Changer la propriété des fichiers et répertoires — essentiel après les migrations, restaurations ou déploiements
- Modifier les attributs du compte utilisateur — renommer des utilisateurs, modifier les UID ou ajuster les appartenances aux groupes
Ce guide couvre tous ces scénarios en détail, expliquant quand utiliser chaque approche, comment le faire en toute sécurité et quelles erreurs éviter — afin que vous puissiez gérer les utilisateurs Linux en toute confiance sans casser les permissions, les services ou l’accès.
Basculer vers un autre utilisateur (Shell interactif)
Lorsque vous avez besoin d’une session de terminal interactive complète en tant qu’un autre utilisateur — pour l’administration système, tester le comportement d’une application sous un compte différent, ou accéder à un compte de service — Linux fournit deux outils principaux : su et sudo.
Utiliser su (Basculer d’utilisateur)
La commande su remplace votre identité d’utilisateur actuelle par une autre :
su - usernameLe drapeau - (également écrit -l ou --login) est important : il charge l’environnement de connexion complet de l’utilisateur cible, y compris son répertoire personnel, PATH, le profil shell et les variables d’environnement. Sans le drapeau -, vous héritez d’une grande partie de votre environnement actuel, ce qui peut causer un comportement subtil et confus — en particulier lors de l’exécution de scripts ou de services.
Pour basculer directement vers root :
su -> Note de sécurité : Sur de nombreuses distributions Linux modernes, le mot de passe du compte root est désactivé par défaut (particulièrement sur les systèmes basés sur Ubuntu). Dans ces cas, su vers root échouera, et sudo est l’approche correcte.
Utiliser sudo -i (Préféré pour les shells Root/Admin)
sudo -iCela vous donne un shell de connexion root équivalent à su -, mais s’authentifie en utilisant vos propres privilèges sudo plutôt que de nécessiter le mot de passe root. C’est l’approche recommandée sur la plupart des distributions modernes car :
- Cela évite le besoin de partager ou de connaître le mot de passe root
- Toutes les actions sont enregistrées via la piste d’audit sudo
- Cela respecte votre configuration sudoers et vos restrictions
Basculer vers un autre utilisateur avec un shell de connexion via sudo
sudo -iu usernameCela combine -i (shell de connexion) et -u (utilisateur cible), vous donnant un environnement de connexion propre en tant qu’utilisateur spécifié — sans avoir besoin du mot de passe de cet utilisateur.
Exécuter une seule commande en tant qu’un autre utilisateur
Souvent, vous n’avez pas besoin d’une session interactive complète — vous avez juste besoin d’exécuter une commande avec une identité différente. C’est le modèle le plus courant et le plus sûr pour l’escalade de privilèges.
Utilisation de sudo -u
sudo -u username whoamisudo -u postgres psqlLe deuxième exemple est extrêmement courant en administration de bases de données — basculer vers l’utilisateur système postgres pour accéder à PostgreSQL sans authentification par mot de passe.
Exécuter une commande avec un environnement de connexion propre
sudo -iu username command_hereCela garantit que la commande s’exécute avec l’environnement complet de l’utilisateur cible, et non avec les variables de votre session actuelle.
Exécuter une commande en tant que root
sudo systemctl restart nginxC’est le modèle standard pour les tâches administratives : exécuter une seule commande privilégiée sans ouvrir un shell root.
Modifier l’utilisateur sous lequel s’exécute un service (systemd)
Sur pratiquement toutes les distributions Linux modernes, systemd gère les services. Pour des raisons de sécurité, chaque service doit s’exécuter sous un compte utilisateur dédié et sans privilèges plutôt que root. Exécuter les services en tant que root est un risque de sécurité important — si le service est compromis, l’attaquant obtient un accès root à l’ensemble du système.
C’est particulièrement important sur les Serveurs Dédiés et les environnements VPS de production où plusieurs services peuvent s’exécuter simultanément.
Vérifier la configuration actuelle du service
systemctl cat myservice.serviceRecherchez les directives User= et Group= dans la section [Service] :
[Service]
User=www-data
Group=www-dataRemplacer l’utilisateur du service (méthode sûre)
Plutôt que de modifier le fichier d’unité original (qui peut être écrasé lors des mises à jour de paquets), utilisez systemctl edit pour créer un remplacement drop-in :
sudo systemctl edit myservice.serviceCela ouvre un éditeur où vous ajoutez :
[Service]
User=myuser
Group=mygroupEnregistrez le fichier, puis appliquez les modifications :
sudo systemctl daemon-reload
sudo systemctl restart myservice.serviceVérifier que le service s’exécute sous le bon utilisateur
systemctl status myservice.serviceps -eo user,pid,cmd | grep myserviceInspecter l’utilisateur de tout processus en cours d’exécution
ps -eo user,pid,cmd | grep nginxps -p <PID> -o user,group,cmd> Important : Linux ne vous permet pas de modifier l’utilisateur d’un processus déjà en cours d’exécution sur place. Vous devez redémarrer le processus (ou configurer le gestionnaire de services pour le lancer sous le bon utilisateur) pour que la modification prenne effet.
Modifier la propriété des fichiers avec chown
La propriété des fichiers est une partie essentielle du modèle de permissions de Linux. Après des migrations, des déploiements, des sauvegardes ou des restaurations, la propriété peut être assignée au mauvais utilisateur — causant des erreurs de permission refusée, des applications web cassées, ou des données inaccessibles. La commande chown est votre outil principal pour corriger cela.
C’est une tâche courante lors de la configuration d’environnements d’hébergement web partagé ou du déploiement d’applications web sur un VPS.
Modifier le propriétaire d’un fichier
sudo chown username file.txtModifier le propriétaire et le groupe
sudo chown username:groupname file.txtModification récursive de la propriété (À utiliser avec prudence)
sudo chown -R username:groupname /var/www/siteLe drapeau -R applique la modification de manière récursive à tous les fichiers et sous-répertoires. Utilisez ceci avec prudence — l’appliquer au mauvais chemin (par exemple, / ou /etc) peut casser votre système entier.
Préserver les liens symboliques
sudo chown -h username:groupname symlinkSans -h, chown suit les liens symboliques et modifie la propriété du fichier cible, pas du lien symbolique lui-même. Utilisez -h quand vous voulez spécifiquement modifier la propriété du lien symbolique.
Prévisualiser la propriété avant d’apporter des modifications
Pour les grands arbres de répertoires, prévisualisez toujours avant d’appliquer une chown récursive :
find /path -maxdepth 2 -printf '%u:%g %pn' | headCela affiche le propriétaire et le groupe actuels pour les deux premiers niveaux de l’arborescence du répertoire, vous permettant de confirmer l’étendue de la modification avant de la valider.
Confirmez votre identité actuelle
Avant d’apporter des modifications, vérifiez toujours qui vous êtes et quel contexte vous utilisez. Cela prévient les modifications accidentelles effectuées sous le mauvais compte.
Vérifiez votre utilisateur actuel
whoamiObtenez les informations d’identité complètes (utilisateur, groupes, UIDs)
idExemple de sortie :
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)Voir qui est connecté au système
whowVérifiez l’utilisateur d’origine lors de l’utilisation de sudo
Lorsque vous escaladez avec sudo, deux variables d’environnement sont pertinentes :
echo $USER # The current effective user (root)
echo $SUDO_USER # The original user who invoked sudo (e.g., alice)Cette distinction est importante dans les scripts — $SUDO_USER vous indique qui a réellement exécuté la commande.
Modifier les attributs du compte utilisateur
Parfois, « changer d’utilisateur » signifie modifier le compte lui-même : le renommer, modifier son UID ou ajuster les appartenances aux groupes. Ce sont des modifications permanentes à l’échelle du système qui peuvent affecter les connexions, les permissions de fichiers et l’accès aux services.
> Bonne pratique : Avant de modifier un compte, assurez-vous que l’utilisateur est déconnecté et qu’aucun processus n’est en cours d’exécution sous ce compte.
Renommer un utilisateur (Changer le nom d’utilisateur)
sudo usermod -l newname oldnameCela change le nom de connexion mais ne renomme pas automatiquement le répertoire personnel. Pour également déplacer et renommer le répertoire personnel :
sudo usermod -d /home/newname -m newnameSi l’utilisateur a un groupe principal portant le même nom que son ancien nom d’utilisateur (ce qui est la valeur par défaut sur la plupart des distributions), mettez à jour le nom du groupe également :
sudo groupmod -n newname oldnameModifier l’UID d’un utilisateur
sudo usermod -u 2001 username> Critique : Après avoir modifié un UID, tous les fichiers précédemment possédés par l’ancien UID apparaîtront comme possédés par un ID numérique inconnu. Vous devez corriger cela immédiatement :
sudo find / -user oldUID -exec chown -h username {} ;Remplacez oldUID par l’UID numérique précédent. Cette commande recherche sur l’ensemble du système de fichiers les fichiers avec l’ancien UID et les réaffecte au nouveau nom d’utilisateur.
Ajouter un utilisateur à un groupe
Le cas d’utilisation le plus courant est d’accorder l’accès sudo à un utilisateur :
Debian/Ubuntu :
sudo usermod -aG sudo usernameRHEL / AlmaLinux / Rocky Linux :
sudo usermod -aG wheel usernameLe drapeau -a est critique — il ajoute l’utilisateur au groupe sans le supprimer des groupes existants. Omettre -a remplacera toutes les appartenances aux groupes par seulement le groupe spécifié.
Vérifier l’appartenance au groupe
id usernameFiche de référence rapide
Voici une référence consolidée pour toutes les opérations de commutation et de gestion des utilisateurs couvertes dans ce guide :
| Tâche | Commande | |
|---|---|---|
| Basculer vers un autre utilisateur (shell de connexion) | su - username | |
| Basculer vers un autre utilisateur via sudo | sudo -iu username | |
| Ouvrir un shell root | sudo -i | |
| Exécuter une commande en tant qu’un autre utilisateur | sudo -u username command | |
| Exécuter une commande en tant que postgres | sudo -u postgres psql | |
| Vérifier l’utilisateur actuel | whoami | |
| Vérifier l’identité complète et les groupes | id | |
| Vérifier l’appelant sudo original | echo $SUDO_USER | |
| Modifier le propriétaire du fichier | sudo chown username file | |
| Modifier le propriétaire et le groupe du fichier | sudo chown username:group file | |
| Modification récursive de la propriété | sudo chown -R username:group /path | |
| Aperçu de la propriété du répertoire | find /path -maxdepth 2 -printf '%u:%g %pn' | |
| Modifier l’utilisateur du service (systemd) | sudo systemctl edit myservice.service | |
| Recharger systemd après les modifications | sudo systemctl daemon-reload | |
| Vérifier l’utilisateur du processus | `ps -eo user,pid,cmd | grep service` |
| Renommer un utilisateur | sudo usermod -l newname oldname | |
| Déplacer le répertoire personnel | sudo usermod -d /home/newname -m newname | |
| Modifier l’UID | sudo usermod -u 2001 username | |
| Corriger la propriété après modification de l’UID | sudo find / -user oldUID -exec chown -h username {} ; | |
| Ajouter un utilisateur au groupe sudo | sudo usermod -aG sudo username | |
| Vérifier l’appartenance au groupe | id username |
Résumé
La gestion des utilisateurs dans Linux n’est pas une seule opération — c’est une famille de tâches connexes, chacune avec ses propres outils et implications :
- Utilisez
sudo -iu usernamepour les sessions interactives en tant qu’un autre utilisateur (préféré àsusur les systèmes modernes) - Utilisez
sudo -u username commandpour exécuter des commandes individuelles avec une identité différente - Utilisez
systemctl editpour modifier en toute sécurité l’utilisateur sous lequel un service systemd s’exécute - Utilisez
chownpour corriger la propriété des fichiers après les déploiements, les migrations ou les problèmes de permissions - Utilisez
usermodpour les modifications permanentes de compte — renommage, modifications d’UID et gestion des groupes
Comprendre ces distinctions vous aide à éviter les erreurs courantes comme casser les permissions des services, vous verrouiller hors des fichiers ou accorder accidentellement des privilèges excessifs.
Si vous exécutez une infrastructure basée sur Linux — qu’il s’agisse d’un serveur web, d’une base de données ou d’une pile d’applications personnalisée — disposer d’un environnement d’hébergement correctement configuré rend la gestion des utilisateurs considérablement plus facile. AlexHost propose des Panneaux de Contrôle VPS flexibles et des options VPS avec cPanel qui vous donnent un accès root complet aux côtés d’interfaces de gestion intuitives, afin que vous puissiez appliquer tout ce guide en toute confiance.
sur tous les services d'hébergement