Sudo : effectuez des tâches administratives
Tout ordinateur a besoin d'un administrateur système. Cette personne est en charge de la configuration initiale et de la maintenance de votre matériel et de votre système d'exploitation Ubuntu : création de comptes d'utilisateurs, installation de programmes, paramétrage du matériel, etc. L'administrateur est une personne ayant un compte d'utilisateur avec des privilèges supplémentaires.
Dans Ubuntu, l'accomplissement de tâches privilégiées (ou tâches d'administration) s'effectue à travers un « filtre » puissant appelé sudo. Son principe est le suivant:
- Toutes les tâches administratives ne peuvent être exécutées qu'à travers l'utilitaire d'administration
sudo
. Exécutée hors-sudo
, la tâche est bloquée ; - Lorsqu'un utilisateur tente d'exécuter une tâche administrative à travers le filtre
sudo
, cet utilitaire vérifie que cet utilisateur a le droit d'effectuer cette tâche. Dans le cas contraire, il bloque la tâche.
Préalables
Pour effectuer des tâches administratives à travers l'utilitaire sudo
, votre compte d'utilisateur doit être promu au rôle d'administrateur (aussi appelé «super-utilisateur»).
Vous disposez d'un compte d'administrateur lorsque :
- votre compte d'utilisateur est celui qui a été créé au moment de l'installation d'Ubuntu. Par défaut, ce compte est un compte privilégié, et c'est le seul compte privilégié ;
- ou lorsqu'un administrateur a promu manuellement votre compte d'utilisateur au rôle d'administrateur.
Rapportez-vous à la section "Comment assigner le rôle d'administrateur à un compte d'utilisateur ?" pour apprendre comment promouvoir un compte d'utilisateur existant au rôle d'administrateur, ou à la section "Ajout ou retrait de privilèges à un compte d'utilisateur ou un groupe d'utilisateurs" pour configurer plus finement les privilèges accordés par l'utilitaire sudo
.
Utilisation
Exécuter une application graphique (Ubuntu, Xubuntu)
- L'utilitaire gksudo (ou gksu) n'est pas installé par défaut dans les versions d'Ubuntu Trusty 14.04 et au-delà. Installez le paquet gksu
- Appuyez sur les touches [ALT]+[F2] de votre clavier pour ouvrir une invite d'exécution de programme;
- Cliquez sur le résultat;
Si vous n'avez pas entré un mot de passe erroné, votre programme se charge en mode privilégié. En cas d'erreur dans votre mot de passe, recommencez les opérations ci-dessus.
Lors du succès de l'authentification, les tâches administratives sont débloquées pour une durée de 15 minutes :
votre mot de passe ne vous sera pas demandé dans les 15 minutes suivantes pour effectuer d'autres tâches administratives.
Exécuter une application graphique (Kubuntu)
- Appuyez sur les touches [ALT]+[F2] de votre clavier pour ouvrir une invite d'exécution de programme ;
Si vous n'avez pas entré un mot de passe erroné, votre programme se charge en mode privilégié. En cas d'erreur dans votre mot de passe, recommencez les opérations ci-dessus. Lors du succès de l'authentification, les tâches administratives sont débloquées pour une durée de 15 minutes : votre mot de passe ne vous sera pas demandé dans les 15 minutes suivantes pour effectuer d'autres tâches administratives.
Exécuter une application graphique sous 14.04 et versions ultérieures
Dans un terminal, saisissez la commande suivante :
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "nom du programme"
Exécuter une application ou une commande en console (toutes variantes)
- Un dialogue de saisie de mot de passe s'affiche. Saisissez le mot de passe de votre compte d'utilisateur actuel. Aucun caractère n'apparaît lorsque vous saisissez des caractères sur votre clavier ; ceci est normal. Même si rien n'apparaît à l'écran, votre mot de passe est pris en compte.
Si vous n'avez pas entré un mot de passe erroné, votre commande s'exécute immédiatement en mode privilégié. En cas d'erreur dans votre mot de passe, recommencez les opérations ci-dessus. Lors du succès de l'authentification, les tâches administratives sont débloquées pour une durée de 15 minutes : votre mot de passe ne vous sera pas demandé dans les 15 minutes suivantes pour effectuer d'autres tâches administratives.
Quand doit-on utiliser sudo/gksudo/kdesudo ?
La règle est simple :
- Pour exécuter un programme en mode graphique, utilisez gksudo (Ubuntu et Xubuntu) ou kdesudo (Kubuntu) ;
- Pour exécuter une commande en mode console, utilisez sudo.
À l'heure actuelle, on trouve plusieurs fois dans cette documentation, dans le forum et dans le planet l'instruction
sudo <commande>
pour exécuter de nombreux programmes en mode graphique avec des privilèges d'administration. Bien que ceci fonctionne quand même pour de nombreux programmes, vous devriez prendre l'habitude de lui préférer
gksudo
ou kdesudo
. Utiliser
sudo
pour exécuter des applications en mode graphique peut causer des problèmes dans votre session utilisateur courante, vous empêchant de poursuivre votre travail.1)
Comment assigner le rôle d'administrateur à un compte d'utilisateur ?
Seuls les administrateurs sont habilités à effectuer des tâches administratives à travers l'utilitaire sudo
. Pour augmenter les privilèges d'un compte d'utilisateur, vous devez vous-même être d'abord un administrateur.
Pour assigner le rôle d'administrateur à un autre compte d'utilisateur:
- Dans Ubuntu et Xubuntu : utilisez le module de gestion des utilisateurs du panneau de configuration système pour modifier ses privilèges ;
- Dans Kubuntu : utilisez le module de gestion des comptes d'utilisateurs du panneau d'administration de KDE pour modifier ses privilèges ;
- En mode console : Ouvrez un terminal et exécutez la commande suivante :
sudo adduser <identifiant> sudo
où
<identifiant>
doit être remplacé par l'identifiant du compte d'utilisateur (sans les <chevrons>) auquel des privilèges supplémentaires doivent être accordés.
Notez que les changements de privilèges ne sont pas appliqués dès leur enregistrement. Ils ne sont appliqués que lorsque toutes les sessions en cours sont closes pour ce compte-là. À l'ouverture de session suivante pour ce compte, les nouveaux privilèges sont pris en compte.
Rapportez-vous à la section "Ajout ou retrait de privilèges à un compte d'utilisateur ou un groupe d'utilisateurs" pour configurer plus finement les privilèges accordés par l'utilitaire sudo
.
Aller plus loin
Configuration avancée de l'utilitaire sudo
sudo
peut être paramétré finement pour autoriser ou refuser l'exécution de tâches privilégiées. Plus que simplement autoriser l'exécution de toutes les tâches administratives à un groupe d'utilisateurs par l'authentification par mot de passe, sudo
peut être paramétré pour permettre à un utilisateur particulier ou un groupe d'utilisateurs particulier d'exécuter une ou des tâches bien précises, avec ou sans saisie du mot de passe. D'autres paramètres, tels le délai d'attente avant qu'une ré-authentification soit nécessaire, l'endroit où est enregistré le journal d’événements et le niveau de courtoisie de sudo
, sont aussi paramétrables.
Les avantages de sudo
Les avantages de l'emploi de sudo
, par opposition à l'emploi direct d'un unique compte super-utilisateur (root
), sont nombreux pour une utilisation dans un environnement domestique ou de PME/PMI :
- L'installateur d'Ubuntu doit poser moins de questions. Ceci est particulièrement important pour le nouvel arrivant, qui peut ne pas être au courant de l'utilité du compte super-utilisateur et de son potentiel dangereux ;
- Les administrateurs n'ont pas à se souvenir d'un mot de passe supplémentaire, qu'ils peuvent facilement oublier, ou compromettre la sécurité du compte
root
par des mauvaises habitudes ; - Cela évite le comportement du « Je peux tout faire sur ma machine » :
avant d'effectuer une action d'administration, Ubuntu vous demande votre mot de passe, ce qui devrait faire réfléchir les administrateurs aux conséquences de leur action ; sudo
conserve une trace de toutes les commandes exécutées. Si un problème apparaît, vous pourrez toujours consulter ce journal afin de retrouver la commande ayant causé le problème ;- Tous les pirates tentant de pénétrer par la force brute votre système savent qu'il existe un compte appelé
root
et essaieront de pirater celui-ci d'abord. Ils ne connaissent pas les identifiants des autres utilisateurs de votre ordinateur ; - Ceci permet un transfert rapide des droits d'administration, autant pour du long que pour du court terme, par le simple ajout ou retrait d'un utilisateur dans le groupe d'administration. Le tout, sans compromettre la sécurité de votre environnement informatique par le partage d'un mot de passe unique pour le compte
root
; sudo
peut être configuré avec une politique bien plus affinée.
« sudo » n'est-il pas moins sécurisé que « su root » ?
Le modèle de sécurité à la base est le même, et les deux modèles partagent une même faiblesse. Tout utilisateur utilisant su root
ou sudo
pour effectuer des tâches administratives doit être considéré comme un utilisateur privilégié.
Si le compte de l'utilisateur est compromis par un attaquant, celui-ci peut aussi obtenir une élévation de privilèges et compromettre le système d'exploitation.
Les utilisateurs ayant les droits d'administration doivent être protégés avec les mêmes soins que le compte super-utilisateur.
Sur une note plus ésotérique, on remarque que sudo
encourage la modification des habitudes de travail, qui peuvent provoquer un impact positif sur la sécurité du système d'exploitation.
sudo
est habituellement utilisé pour exécuter une commande unique, alors que su root
est souvent utilisé pour exécuter un terminal root
et exécuter des multiples commandes.
L'approche de sudo
réduit la possibilité qu'un terminal root
soit laissé ouvert indéfiniment sur le poste de travail et encourage l'utilisateur à minimiser son utilisation des privilèges d'administration.
Observer le journal des tâches exécutées précédemment par « sudo »
L'ensemble des actions exécutées à travers l'utilitaire sudo
– qu'elles s'accomplissent avec succès ou échec – sont journalisées. Elles sont inscrites dans le fichier de journal /var/log/auth.log.
Ouvrir un terminal en mode root
Utiliser sudo
pour exécuter une seule commande ne cause pas un réel désagrément, mais il peut être désagréable de l'utiliser pour exécuter une longue procédure nécessitant plusieurs interventions en mode super-utilisateur (root
).
L'ouverture d'un terminal en mode root
permet d'éviter d'avoir à appeler sudo
à chacune des étapes de cette procédure, sans avoir à activer l'accès au compte d'utilisateur root
.
L'inconvénient de cette méthode est qu'aucune trace des actions posées n'est inscrite dans le journal de sudo
(sinon l'ouverture du terminal root
lui-même). Il est déconseillé d'ouvrir un terminal root
.
Pour vous servir d'un terminal root
:
- Ouvrez une fenêtre de terminal ;
- Saisissez la commande suivante :
utilisateur@ordinateur:~$ sudo -i
- Saisissez votre mot de passe à l'invite de saisie de mot de passe ;
- Exécutez votre série de commandes d'administration ;
- Fermez la session
root
:root@ordinateur:~# exit
ou
Ctrl+D
Rediriger un flux avec « sudo »
sudo
pose a priori des problèmes pour la redirection de flux dans une console. Par exemple, la redirection suivante ne fonctionnera pas :
utilisateur@ordinateur:~$ sudo echo 2 > /proc/acpi/thermal_zone/ATF0/polling_frequency
La raison de cet échec est que sudo
n'exécute que la première tâche (echo 2
) avec l'identité empruntée ; la redirection, elle, est effectuée en mode utilisateur uniquement.
La solution, pour contourner cette limitation, est d'appeler un nouvel interpréteur de commandes et de lui faire exécuter votre redirection de flux. Par exemple :
utilisateur@ordinateur:~$ sudo sh -c 'echo 2 > /proc/acpi/thermal_zone/ATF0/polling_frequency'
De cette manière, c'est tout l'interpréteur sh
et la commande passée en argument qui est exécutée avec l'identité empruntée.
Les comptes super-utilisateurs d'applications particulières
Certains programmes ou services nécessitent des comptes super-utilisateurs. C'est généralement le cas avec des systèmes de bases de données (comme MySQL). Prenez note que ce compte super-utilisateur est indépendant de celui du système d'exploitation : il est unique au programme ou service en particulier. Si un tel programme ou service nécessite un compte super-utilisateur, vous devez paramétrer ce compte avec les outils qu'il fournit. À ce sujet, rapportez-vous aux documents d'aide relatifs à chacune de vos applications concernées.
À lire aussi
- (en) Sudoers Manual
- (fr) Polkit (anciennement PolicyKit), une autre méthode de gestion flexible des privilèges utilisateurs.
Contributeurs : AlexandreP, Chatalors, Damocles, Ju,
Autres contributeurs : eagle08 : formatage du texte pour améliorer la lisibilité à l'écran.
gksudo
paramètre le dossier personnel (la variable d'environnement $HOME
) pour l'application exécutée en mode privilégiée à /root plutôt qu'à /home/<identifiant> et copie le fichier .Xauthority
dans un dossier temporaire. Ceci empêche que des fichiers du dossier personnel de l'utilisateur changent de propriétaire (et donc corrompent la session graphique en cours).