- Cette page doit fusionner elle-même avec sudo-annexe → fait
- Le but étant de faire une page "conforme au template" pour sudo → fait
- Page utilisateur roschan - elevation_privileges : faire un tuto propre user-friendly →fait
- il faudra y échanger les backlinks → pas fait
- Page utilisateur roschan - elevation_privileges_avances : un tuto avancé sans la partie obsolète sur gksudo → en cours
La commande sudo
Tout ordinateur a besoin d'un administrateur système. C'est la personne en charge de la configuration initiale et de la maintenance du matériel et du système d'exploitation Ubuntu : installation ou désinstallation de programmes, création de comptes d'utilisateurs, paramétrage du matériel, etc.
L'administrateur est une personne ayant un compte d'utilisateur avec des privilèges supplémentaires.
Sur Ubuntu, ces privilèges peuvent s'exécuter de différentes manières, répertoriées et détaillées sur cette page (). La plus connue d'entre elle est la commande sudo, qu'on va détailler ici-même.
sudo
ne doit pas être utilisée à la légère : elle présente un risque non négligeable pour votre système. Lisez attentivement les remarques sur la sécurité ci-dessous.
Principe de fonctionnement
Pour effectuer des tâches privilégiées à travers l'utilitaire sudo
, votre compte d'utilisateur va devoir prendre temporairement le rôle d'administrateur (aussi appelé « root » ou encore « super-utilisateur »).
Vous disposez d'un compte ayant accès aux privilèges d'administrateur si :
- votre compte d'utilisateur est celui qui a été créé au moment de l'installation d'Ubuntu. Par défaut, ce compte est le seul compte privilégié ;
- un administrateur a promu manuellement votre compte d'utilisateur au rôle d'administrateur.
Reportez-vous à la section Configuration pour plus de détails sur l'ajout ou le retrait des privilèges d'administration à un utilisateur.
Utilisation
Si votre compte est correctement paramétré :
- Vous allez donc taper une commande dans un terminal, et la faisant précéder de
sudo
. Exemple avec la commandenano
:sudo nano
- Votre mot de passe vous sera alors demandé : tapez-le "à l'aveugle" (aucun caractère ne s'affiche, c'est normal), et validez avec la touche "Entrée".
- Alors, la commande sera exécutée, non pas en votre nom, mais au nom d'une entité abstraite : le compte "root", qui a tous les droits sur le système.
Important : nature des programmes lancés
Les programmes lancés par les commandes précédées de sudo
ne doivent pas être n'importe lesquels.
- Ne lancez pas de programme graphique (c'est-à-dire qui ouvre une fenêtre), sinon :
- Na lancez pas avec
sudo
de programmes d'origine douteuse. - Ne lancez pas avec
sudo
de programmes qui vous demandent déjà tous seuls les droits adéquats : la plupart des programmes exigeant des droits spécifiques les demanderont eux-mêmes, c'est notamment le cas des programmes graphiques d'installation de paquets, des éditeurs de partitions, …
Configuration
Ajouter les privilèges à des utilisateurs
Seuls les administrateurs sont habilités à effectuer des tâches administratives à travers l'utilitaire sudo
. Pour augmenter les privilèges accessibles à un utilisateur, vous devez vous-même avoir d'abord accès à un compte administrateur.
Pour assigner le rôle d'administrateur à un autre compte d'utilisateur :
- Via les paramètres du système : la procédure peut légèrement varier en fonction des environnements, mais il s'agit toujours d'ouvrir les paramètres du système, puis de cliquer sur "Utilisateurs" (ou "Utilisateurs et groupes"), sélectionner un utilisateur, et modifier son niveau de privilèges.
- Via l'utilitaire "Utilisateurs et groupes" si celui-ci est présent sur votre système ;
- Via un terminal : 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.
Configuration avancée
On peut configurer plus finement les privilèges accordés par l'utilitaire sudo
afin d'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.
Reportez-vous à cette page pour découvrir la configuration avancée avec /etc/sudoers/
Remarques sur la sécurité
Le « super-utilisateur » ayant TOUS les droits sur le système, son utilisation peut être TRÈS dangereuse, pour plusieurs raisons :
- Une manipulation dangereuse de votre part. Il est possible que vos manipulations ça aboutisse au dérèglement d'une partie du système. Soyez toujours certain du résultat attendu de vos commandes avant de les lancer.
- Une erreur de votre part. Même pour une manipulation supposée sans risque, la moindre faute de frappe dans les commandes peut aboutir à de graves problèmes.
- Du code malveillant. Si vous exécutez un programme ou un script malveillant avec les droits de super-utilisateur, celui-ci n'aura aucun mal à prendre le contrôle du système en totalité et à s'implanter en profondeur dans le système.
- Sur les systèmes utilisant Xorg, faire cohabiter les fenêtres de l'utilisateur avec ceux du super-utilisateur au sein de la même session représente une faille de sécurité potentielle, qui a en partie motivée la création de Wayland. C'est entre autres pourquoi il est déconseillé de lancer des programmes graphiques avec
sudo
.
Alternatives à sudo
- polkit fonctionne selon un principe différent : un programme ("démon") s'exécute en arrière-plan (sans fenêtre), et dispose des droits root. Les applications sont invitées à lui demander les droits nécessaires pour effectuer des opérations spécifiques. Cela évite de lancer des programmes graphiques en tant que super-utilisateur, ça évite également d'utiliser
sudo
pour des commandes n'en ayant pas besoin, la sécurité est donc accrue, et moins d'actions sont requises de la part de l'utilisateur (ce sont les applications qui demandent les droits, pas l'utilisateur). Parmi les programmes capables d'utiliser PolKit, on peut citer :- Les paramètres système (concernant l'ajout d'utilisateur par exemple)
- etc.
su
permet de se connecter en tant que super-utilisateur de manière durable. C'est extrêmement dangereux, ne faites pas ça à la légère.
Avantages de sudo
Le fonctionnement de sudo
peut sembler complexe en comparaison à l'utilisation directe d'un compte root
, qu'Ubuntu a choisi de ne pas activer par défaut.
Les avantages de l'emploi de sudo
, par opposition à l'emploi direct d'un unique compte super-utilisateur (root
) via la commande su
, sont nombreux pour une utilisation dans un environnement domestique ou de PME/PMI :
- L'installateur d'Ubuntu est ainsi plus concis.
- Les administrateurs n'ont pas à se souvenir d'un mot de passe supplémentaire.
- Cela évite le comportement du « Je peux faire n'importe quoi sur ma machine » :
avant d'effectuer une action d'administration, Ubuntu vous demande votre mot de passe, ce qui devrait faire vous réfléchir sur les conséquences de vos actions ; 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, 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 de manière affinée.
Utilisation avancée
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
.
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.
Options utiles
- sudo -k termine une session sudo éventuellement ouverte, cela assure que la prochaine instruction sudo demandera bien un mot de passe.
- sudo -s ouvre le shell spécifié dans
/etc/passwd
pour l'utilisateur cible (root par défaut). - sudo -i simule un login initial et ouvre le shell spécifié dans
/etc/passwd
pour l'utilisateur cible (root par défaut). Cela signifie que des fichiers spécifiques tels que .login ou .profile seront lus par le shell ainsi lancé. - sudo -E préserve l'environnement du shell depuis lequel la commande est lancée
- sudo -u foo lance la commande en tant que l'utilisateur foo
- sudo -g bar lance la commande avec le groupe bar spécifié (le groupe spécifié est le groupe primaire de l'utilisateur cible indiqué dans /etc/passwd)
- sudo -i -u toto permet de se connecter en tant que l'utilisateur toto (ne pas utiliser ces options pour root)
À lire aussi
- (en) Sudoers Manual
- (fr) Polkit (anciennement PolicyKit), polkit, une méthode de gestion flexible et sécurisée des privilèges utilisateurs.
Contributeurs : AlexandreP, Chatalors, Damocles, Ju, eagle08, roschan , …