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 03/03/2024, 09:13] – [Exécuter une ligne de commande en super utilisateur] bcag2sudo [Le 11/12/2025, 16:17] (Version actuelle) – remplacement par https://doc.ubuntu-fr.org/utilisateurs/roschan/sudo krodelabestiole
Ligne 1: Ligne 1:
 {{tag>administration sécurité droits sudo}} {{tag>administration sécurité droits sudo}}
------- 
  
-====== Droits de super utilisateur ======+====== La commande sudo ======
  
-Les actions que l'on peut être amené à effectuer sur son système relèvent de deux typesl'utilisation courante (lire ses mailsnaviguer sur Internet, etc), et l'administration (installation de logiciels et configuration avancée). L'utilisation courante ne demande pas de privilèges particuliers. \\ Par contre pour les tâches d'administration, qui pourraient endommager le système en cas d'erreur, des droits spécifiques sont requis: les droits de **super utilisateur**.+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'utilisateursparamétrage du matériel, etc.\\ 
 +L'administrateur est une personne ayant un compte d'utilisateur avec des **privilèges** supplémentaires.
  
-<note important>Cette page est volontairement simplifiée à l'extrême afin de la rendre accessible et que les informations essentielles soient faciles à trouver. \\ En conséquenceelle ne couvre pas tous les cas de figure. En cas de doute et pour creuser le sujet, se reporter au tutoriel << [[:tutoriel:effectuer_des_taches_en_super_utilisateur|Effectuer des tâches en super utilisateur]] >>.</note>+Sur Ubuntu, ces privilèges peuvent s'exécuter de différentes manièresré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.
  
-===== Pré-requis: comprendre l'action que vous allez effectuer =====+<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>
  
-Toute tâche d'administration est sensible, et il n'est pas forcément facile de revenir en arrière. Il est vivement conseillé de chercher à comprendre les [[:terminal|lignes de commande]] que vous exécuterez, par exemple en utilisant //[[:man|man]]//, car en cas d'erreur, la réinstallation complète du système est parfois l'unique option. +===== Principe de fonctionnement =====
  
-===== Exécuter une ligne de commande en super utilisateur =====+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//**​).
  
-Dans l'immense majorité des cas où il vous sera demandé d'effectuer une action en ligne de commande avec les droits d'administration, il vous suffit d'ajouter le mot clé ''**sudo**'' au début de votre ligne de commande. +Vous disposez d'un compte ayant accès aux privilèges administrateur si 
-Exemple typique, pour [[tutoriel:comment_modifier_un_fichier|modifier un fichier]] avec //[[:nano|nano]]//+  * 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é ; 
-<code>sudo nano /chemin/vers/mon/fichier</code> +  * un administrateur a promu manuellement votre compte d'utilisateur au rôle administrateur.
-Après la saisie d'une ligne de commande commençant par **''sudo''**, il vous sera demandé de taper votre mot de passe, mais les caractères ne s'afficheront pas à l'écran et il n'y aura pas non plus de petites étoiles ''*'', ce qui est normal. Tapez tout de même votre mot de passe et validez. +
-<note tip>Pour repasser en root une commande que l'on vient de saisir en simple utilisateur, on peut utiliser : <code bash> sudo !!</code></note>+
  
-===== Lancer un logiciel graphique en super-utilisateur ===== +<note>Si votre compte n'a pas accès aux privilèges requis, la commande ne sera pas exécutée.</note>
-<note warning>[[tutoriel:comment_eviter_root_quand_c_est_possible|Éviter de lancer une commande en tant qu'administrateur lorsque c'est possible]].\\ +
-\\ +
-La commande //sudo//\\ +
-⋅ on s'en sert **surtout** pour des actions qui ont lieu **dans** un terminal ou **dans** une console.\\ +
-⋅ **on évite le plus possible de lancer une application graphique** (qui ouvre sa propre fenêtre en dehors du terminal.)\\ +
-Consultez : [[:utilisateurs/aldian/sudo_gedit|Problématiques liées à l'édition des fichiers système via une application graphique]]</note>+
  
-==== Ubuntu 18.04 et les versions suivantes ==== +Reportez-vous à la section [[#Configuration]] pour plus de détails sur l'ajout ou le retrait des privilèges d'administration à un utilisateur.
-L'ancien ''gksudo'' peut être utilement remplacé par [[:policykit#la_commande_pkexec|pkexec]]. +
-  pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nom-du-programme +
-\\  +
-Certains utilitaires graphiques (par ex. [[gedit|gedit]]) proposent un mode administrateur, qui demandera le mot de passe aux moments opportuns (à la lecture d'un fichier, à son enregistrement) en le lançant depuis un terminal via \\ +
-   gedit admin:///chemin/vers/fichier +
-Certaines comme [[gparted|gparted]] intègrent ce mode administrateur dès leur lancement depuis le menu d'applications, ou lanceur.\\ +
-D'autres comme [[bleachbit|bleachbit]] disposent de 2 lanceurs, l'un en mode utilisateur « normal », l'autre en mode « administrateur » qui demandera le mot de passe d'un utilisateur « administrateur ».\\ +
-D'autres logiciels ont potentiellement l'option de passer en mode administrateur via des plugins / extensions (Nautilus, Caja, Nemo…) rarement installés par défaut. Et pour cause : c'est une pratique à réserver à des utilisateurs aguerris, conscients des risques pris à agir en tant que Super-Utilisateur.+
  
-====Avant Ubuntu 18.04==== +===== Utilisation =====
-La plupart des logiciels graphiques qui ont besoin d'être exécutés avec les privilèges du super-utilisateur vous demanderont votre mot de passe lorsqu'il y en aura besoin. Cependant, il peut arriver que vous souhaitiez exécuter en super-utilisateur un logiciel qui peut aussi fonctionner sans.+
  
-Dans le cas général, ce n'est pas une bonne pratique, il est toujours préférable de rechercher comment atteindre le même but via un utilitaire en ligne de commande. Si toutefois vous n'avez pas d'autre alternative, notez que dans ce cas, l'usage du **''sudo''** (présenté dans la partie dédiée aux lignes de commande) n'est pas approprié : il y a un risque d'écrasement de votre configuration courante. Il est donc nettement préférable d'utiliser l'utilitaire approprié à votre système, ces utilitaires ne sont pas présents par défaut, il faut les [[:tutoriel:comment_installer_un_paquet|installer]], par exemple [[apt>gksu]] pour [[:Ubuntu]]/[[:Xubuntu]]/[[:Lubuntu]], ou **[[apt>kdesudo]]** pour [[:Kubuntu]]. +Si votre compte est correctement paramétré :
-Par exemple, pour [[tutoriel:comment_modifier_un_fichier|modifier un fichier]] avec votre éditeur de texte habituel dans Ubuntu/Xubuntu/Lubuntu : +
-<code>gksudo xdg-open mon-fichier</code> +
-et dans Kubuntu : +
-<code>kdesudo xdg-open mon-fichier</code>+
  
-===== Pour approfondir =====+  * 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.
  
-{{topic>:  sudo}} +==== Important nature des programmes lancés ==== 
-[[https://forum.ubuntu-fr.org/viewtopic.php?id=2047773|page sur le sujet dans le forum]]+ 
 +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]].//
  
-//Contributeurs : [[:utilisateurs:aldian]], [[:utilisateurs:bcag2]]//