Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
utilisateurs:roschan:sudo [Le 08/10/2017, 00:06] – créée Roschanutilisateurs:roschan:sudo [Le 08/06/2018, 19:21] (Version actuelle) – mise en forme note d'intro fabux
Ligne 1: Ligne 1:
 +{{tag>administration sécurité droits sudo}}
 +------
 +
 +<note help>Cette page est actuellement en cours de remodelage et de fusion avec d'autres pages. Merci de prévenir la liste si vous souhaiter la modifier.
 +
 +  * Cette page doit fusionner elle-même avec [[:sudo-annexe]] -> **fait**
 +  * Le but étant de faire une page "conforme au template" pour sudo -> **fait**
 +  * [[:utilisateurs:roschan:elevation_privileges|Page utilisateur roschan - elevation_privileges]] : faire un tuto propre user-friendly ->**fait**
 +    * :!: il faudra y échanger les backlinks -> **pas fait** :!:
 +  * [[:utilisateurs:roschan:elevation_privileges_avances|Page utilisateur roschan - elevation_privileges_avances]] : un tuto avancé sans la partie obsolète sur gksudo -> **en cours**
 +</note>
 +
 +====== 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]] (FIXME). La plus connue d'entre elle est la commande **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 ''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.
 +
 +<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 [[cette page]] (FIXME). 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 ====
 +
 +  * [[: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]]
 +  * [[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)]], [[: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]]
 +, ...//