Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sudo [Le 27/01/2024, 08:49] 92.184.108.157sudo [Le 11/12/2025, 16:17] (Version actuelle) – remplacement par https://doc.ubuntu-fr.org/utilisateurs/roschan/sudo krodelabestiole
Ligne 1: Ligne 1:
-Lancer un logiciel graphique en super-utilisateur rédigé par des abrutis ayant un allumé comme source+{{tag>administration sécurité droits sudo}} 
 + 
 +====== 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 la page //[[:elevation_privileges|Élévation des privilèges]]//. La plus connue d'entre elle est la [[:commande shell|commande]] ''[[man>sudo]]'', qu'on va détailler ici-même. 
 + 
 +<note warning>La commande ''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.</note> 
 + 
 +===== Principe de fonctionnement ===== 
 + 
 +Pour effectuer des tâches privilégiées à travers l'utilitaire ''[[man>sudo]]'', votre compte d'utilisateur va devoir prendre temporairement le rôle d'administrateur (aussi appelé **//root//** ou parfois **//super-utilisateur//**​). 
 + 
 +Vous disposez d'un compte ayant accès aux privilèges 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 administrateur. 
 + 
 +<note>Si votre compte n'a pas accès aux privilèges requis, la commande ne sera pas exécutée.</note> 
 + 
 +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 commande ''nano'' : <code>sudo nano</code> 
 +  * 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 : 
 +    * Si votre système utilise [[:Wayland]], ça ne fonctionnera pas ; 
 +    * Si votre système utilise [[:Xorg]], ça représente une potentielle faille de sécurité ; 
 +    * Des corruptions des droits de fichiers peuvent entraîner des bugs importants. 
 +  * 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, ... 
 + 
 +<note tip>Si vous voulez lancer un programme graphique avec des privilèges d'administrateur, consultez les alternatives recommandées sur la page //[[:elevation_privileges|Élévation des privilèges]]//. Si vous voulez lancer des applications comme [[:GParted]] ou [[:Synaptic]] sur un système avec [[:Wayland]], reportez-vous [[:wayland#impossible_de_lancer_une_application_comme_admin|à ce paragraphe]] pour contourner le problème.</note> 
 + 
 +===== 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  [[:users-admin#changer_le_type_de_compte_d_utilisateur|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 : <code>sudo adduser <identifiant> sudo</code>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. 
 + 
 +<note help>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 le compte concerné. À l'ouverture de session suivante pour ce compte, les nouveaux privilèges sont pris en compte.</note> 
 + 
 +==== 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 à **[[:sudoers|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 [[:bash|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 ==== 
 + 
 +  * [[:policykit|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 : 
 +    * [[:gnome-packagekit|GNOME Paquets]] 
 +    * [[:gnome-software|GNOME Logiciels]] 
 +    * [[:plasma-discover|Plasma Discover]] 
 +    * [[:Nautilus]] 
 +    * [[:Kate]] 
 +    * 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 ===== 
 + 
 +<note important>Au delà de ce point, les manipulations visent uniquement aux utilisateurs avancés.</note> 
 + 
 +==== 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 : <code bash>utilisateur@ordinateur:~$ sudo echo 2 > /proc/acpi/thermal_zone/ATF0/polling_frequency</code>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 : <code bash>utilisateur@ordinateur:~$ sudo sh -c 'echo 2 > /proc/acpi/thermal_zone/ATF0/polling_frequency'</code>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 [[:bash|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 [[:bash|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 ===== 
 + 
 +  * [[:elevation_privileges]] 
 +  * [[:tutoriel:elevation_privileges_avances]] 
 +  * **(en) [[http://www.sudo.ws|Site officiel du projet "sudo"]]** 
 +  * **(en)** [[http://www.sudo.ws/sudo/sudoers.man.html|Sudoers Manual]] 
 +  * **(en)** [[https://help.ubuntu.com/community/RootSudo|RootSudo dans l'Aide d'Ubuntu]] 
 +  * **(fr)** [[wpfr>Polkit|Polkit (anciennement PolicyKit)]], [[:policykit|polkit]], une méthode de gestion flexible et sécurisée des privilèges utilisateurs. 
 + 
 +----- 
 +//Contributeurs : [[:utilisateurs:AlexandreP]], [[:utilisateurs:Chatalors]], [[:utilisateurs:Damocles]], [[:utilisateurs:Ju]], [[:utilisateurs:eagle08]], [[:utilisateurs:roschan]].//