Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
utilisateurs:roschan:sudo [Le 08/10/2017, 16:18] – Roschan | utilisateurs:roschan:sudo [Le 08/06/2018, 19:21] (Version actuelle) – mise en forme note d'intro fabux |
---|
| {{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]] |
| , ...// |
| |