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édentes Révision précédente
Prochaine révision
Révision précédente
applications:sudo [Le 15/01/2007, 09:51]
Ju. fix lien
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​root administration}} 
------- 
-====== ​ Sudo : effectuez des tâches administratives ====== 
  
-> Cette documentation est accessible sous les deux formes suivantes. Les rédacteurs n'​étant pas d'​accord sur le choix de l'une des deux, vous pouvez choisir à votre convenance. 
- 
-  - la page complète sur laquelle vous êtes actuellement. 
-  - un ensemble de [[applications:​sudo:​generalites|plusieurs pages]] traitant chacune d'un problème différent. 
- 
-===== Introduction ===== 
- 
-Sudo est l'​outil permettant à un utilisateur (par défaut, le premier utilisateur,​ celui qui a été créé ​ lors de l'​installation du système) d'​exécuter des tâches d'​administration : 
- 
-__Oui__ c'est le mot de passe de **cet utilisateur** qu'il faut saisir. Et c'est à dessein... 
- 
-Devant le nombre impressionnant((ne serait-ce que deux personnes, deux est déjà un nombre impressionnant dans ce cas)) de personnes affectant un mot de passe au compte //​root//​((et certaines personnes //​conseillent//​ d'​affecter un mot de passe au compte //root//, ce qui ne suit pas du tout la logique de Ubuntu)) sous Ubuntu, essayons d'​expliquer comment le système gère les droits d'​administration et expliquons le fonctionnement de ''​sudo''​ et ''​gksudo''/''​kdesu''​. 
- 
-Ce document s'​adresse à vous si vous vous êtes déjà exclamé: 
-  * "​Comment effectuer des tâches administratives sous Ubuntu?"​ 
-  * "À l'​installation,​ on ne m'a pas demandé le mot de passe root" 
-  * "''​su''​ ne fonctionne pas, Ubuntu c'est compliqué"​ 
-  * "​Ubuntu c'est nul, je ne peux pas faire facilement mes tâches d'​administration comme sous d'​autres distributions."​ 
- 
-Vous devriez comprendre le pourquoi du comment... 
- 
-===== À propos du superutilisateur... ===== 
- 
-  * Le système d'​exploitation a besoin d'un compte privilégié afin de réaliser certaines tâches particulières (souvent des tâches administratives et sensibles, pouvant corrompre le système). ​ C'est à cela qu'est dévolu le compte superutilisateur,​ communément appelé //root//. 
-  * Comme le superutilisateur a la possibilité de corrompre le système, il est dangereux de toujours être connecté sous cette identité. ​ Pour tous les systèmes d'​exploitation récents (Unix depuis sa création en 1969, Windows NT4/​2000/​XP((Toutefois,​ le compte utilisateur par défaut sous Windows XP possède les droits d'​administration. ​ Il est //​root//​.)),​ Mac OS X), il y a une séparation entre le compte système et les comptes utilisateurs. ​ Ils sont distincts. 
- 
-===== ... et de sudo ===== 
- 
-Toutefois, certaines situations peuvent amener l'​utilisateur à effectuer des tâches administratives,​ particulièrement lors de la résolution de problèmes de fonctionnement du système. ​ L'​utilitaire ''​sudo''​ //(pour "​**S**uper**U**ser **DO**"​)//​ permet à un administrateur système de donner à un utilisateur (ou un groupe d'​utilisateurs) la possibilité d'​exécuter une ou toutes les commandes en tant que superutilisateur,​ tout en gardant une trace des commandes tapées et des arguments. ​ //​[[http://​www.courtesan.com/​sudo/​|(Plus d'​informations à propos de ''​sudo''​)]]//​ 
- 
-Par défaut, le compte superutilisateur n'a pas de mot de passe sous Ubuntu (Ce qui équivaut, sous UNIX à interdire le login pour cet utilisateur). ​ Ceci signifie donc que vous ne pouvez pas vous connecter en tant que //root// ou utiliser la commande ''​su root''​((La commande ''​su''​ //(pour "​**s**witch **u**ser"​)//​ permet de changer d'​identité,​ de prendre l'​identité d'un autre utilisateur. Vous ne pouvez pas utiliser la commande ''​su''​ pour prendre l'​identité du superutilisateur (''​su root''​). ​ Toutefois, vous pouvez l'​utiliser sans problème pour prendre l'​identité d'un autre utilisateur enregistré de votre ordinateur (par exemple: ''​su bob''​).)). ​ L'​installateur de Ubuntu configure plutôt l'​utilitaire ''​sudo''​ de façon à ce que l'​utilisateur créé durant l'​installation puisse effectuer toutes les tâches administratives. 
- 
-Autrement dit, vous pouvez utiliser la commande ''​sudo''​ pour effectuer les tâches nécessitant les privilèges du superutilisateur. ​ Tous les programmes d'​administration dans les menus d'​applications utilisent un système graphique associé à ''​sudo''​ (''​gksudo''​ sous GNOME et ''​kdesu''​ sous KDE) vous demandant votre mot de passe pour s'​exécuter;​ que ce soient ''​gksudo'',​ ''​kdesu''​ ou ''​sudo''​ dans un terminal qui vous demandent un mot de passe, c'est VOTRE mot de passe utilisateur qui est requis. 
- 
-Aucun mot de passe n'est associé au compte //root// et //root// n'en a pas besoin. 
- 
-===== Utilisation ===== 
- 
-L'​utilitaire ''​sudo''​ s'​utilise en ligne de commande, dans un terminal. ​ Il sert à exécuter, en mode superutilisateur,​ des commandes ou des applications en console. ​ Pour lancer des applications graphiques avec les privilèges d'​administration,​ il est de mise d'​utiliser les pendants graphiques ''​gksudo'',​ pour GNOME, ou ''​kdesu'',​ pour KDE. 
- 
-==== sudo ==== 
- 
-''​sudo''​ s'​utilise de la manière suivante : <​code>​$ sudo <​commande></​code>​ 
- 
-{{applications:​consolesudo.png ​ }} 
- 
-Ainsi, vous devrez faire précéder chacune de vos commandes à exécuter en mode superutilisateur de ''​sudo''​. 
- 
-Le mot de passe demandé est celui de l'​utilisateur **courant**. ​ La commande sera exécutée si le mot de passe entré est correct et que l'​utilisateur courant peut effectuer des tâches d'​administration. ​ Le mot de passe est mémorisé pour une durée de 15 minutes; au bout de ce laps de temps, il faudra entrer de nouveau le mot de passe. ​ Pour terminer la session ''​sudo''​ avant la fin des 15 minutes, entrez la commande: <​code>​$ sudo -k</​code>​ 
- 
-Lorsque de nombreuses commandes sont à entrer, vous pouvez [[#​une_console_superutilisateur|ouvrir un terminal en mode superutilisateur]]. 
- 
-==== gksudo ==== 
-''​gksudo''​ est le pendant graphique de ''​sudo''​ pour l'​[[:​bureau_gnome|environnement GNOME]]. ​ Il est utilisé par toutes les applications du menu //Système -> Administration//,​ nécessitant les droits d'​administration afin d'​être lancées. ​ Il s'​utilise de la même façon que ''​sudo'',​ c'​est-à-dire que ''​gksudo''​ doit précéder la commande ou l'​application à lancer. {{  applications:​gksudo.jpg}} ​ 
- 
-''​gksudo''​ peut être utilisé, par exemple, avec un lanceur, pour lancer une application qui a besoin des droits du superutilisateur pour s'​exécuter. ​ Lorsque ''​gksudo''​ est appelé, une fenêtre de saisie de mot de passe est affichée à l'​écran. ​ Tout comme pour ''​sudo'',​ c'est le mot de passe de l'​utilisateur **courant** qui est requis. ​ L'​application ou la commande ne sera exécutée que si le mot de passe est correct et que l'​utilisateur peut exécuter des tâches d'​administration. 
- 
- 
- 
-**Attention**:​ exécuter par un simple double-clic une commande ou un programme avec les privilèges d'​administration est potentiellement dangereux! Par exemple, lancer [[applications:​nautilus|Nautilus]] avec les droits du superutilisateur est vraiment risqué: une pression accidentelle sur la touche //Suppr// alors qu'un fichier ou un dossier vital au système d'​exploitation est sélectionné pourrait casser complétement le système! 
- 
-==== kdesu ==== 
- 
-''​kdesu''​ est le pendant graphique de ''​sudo''​ pour l'​[[:​bureau_kde|environnement KDE]]. ​ Il s'​utilise de la même façon que ''​gksudo''​ pour GNOME.Pour Kubuntu/​KDE,​ il est d'​autant **plus** important de //ne pas// affecter de [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=82815#​p82815|mot de passe au compte root]]. 
- 
-===== Quand utiliser sudo ou gksudo/​kdesu ? ===== 
- 
-Le [[https://​wiki.ubuntu.com/​RootSudo|wiki anglophone de Ubuntu]] recommande de **NE JAMAIS** utiliser ''​sudo''​ pour lancer une application graphique. ​ Vous devez toujours utiliser ''​gksudo''​ ou ''​kdesu''​ pour lancer de tels programmes; autrement, de nouvelles tentatives d'​ouverture de programmes pourraient échouer. 
- 
-**La règle est donc simple :** 
-  * Utiliser ''​sudo''​ pour les commandes et les programmes fonctionnant dans une console; 
-  * Utiliser ''​gksudo''​ ou ''​kdesu''​ pour les programmes graphique. 
- 
-À l'​heure actuelle, on retrouve de nombreuses fois dans cette documentation et dans le forum la commande ''​sudo gedit''​ pour lancer l'​éditeur de texte gEdit avec les droits d'​administration. ​ Il serait grandement préférable de la subsituer par ''​gksudo gedit''​ (sous Ubuntu) et ''​kdesu kate''​ (sous Kubuntu). ​ Toutefois, il faut noter que ''​sudo gedit''​ fonctionne sous Ubuntu, alors que ''​sudo kate''​ ne fonctionne pas sous Kubuntu. 
-=> ( chez moi ça fonctionne, sur de ça ?) 
- 
-===== Les avantages et inconvénients de sudo ===== 
- 
-==== Avantages ==== 
-Les bénéfices qu'​apportent la désactivation du compte //root// par défaut incluent : 
- 
-  * L'​installateur doit poser moins de questions. ​ Ceci est particulièrement important pour le nouvel arrivant, qui n'est peut-être pas au courant de l'​existence du compte système; 
-  * Les usagers n'ont pas à se souvenir d'un mot de passe supplémentaire,​ qu'ils peuvent facilement oublier. Certains utilisateurs ayant activé le compte //root// notent le mot de passe sur un papier, afin de le retrouver en cas d'​oubli ; ceci constitue un sérieux risque d'​insécurité,​ car n'​importe qui trouvant ce papier peut prendre l'​identité de //root//; 
-  * Cela évite le comportement du "Je peux tout faire sur ma machine"​ -- avant d'​effectuer une action d'​administration,​ le système vous demande votre mot de passe, ce qui devrait vous faire réfléchir aux conséquences de votre action; 
-  * ''​sudo''​ conserve une trace de toutes les commandes exécutées (dans le fichier de journal ///​var/​log/​auth.log//​). ​ Si un problème apparaît, vous pourrez toujours consulter ce journal afin de retrouver la commande ayant causé le problème; 
-  * Tous les hackers 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,​ autant pour du long que pour du court terme, par le simple ajout  ou retrait d'un utilisateur dans le groupe d'​administration,​ le tout sans compromettre le compte //root//; 
-  * ''​sudo''​ peut être configuré avec une politique bien plus raffinée. 
- 
- 
- 
-==== Mythes ==== 
- 
-  * ''​sudo''​ n'​est-il pas moins sécurisé que ''​su root''?​ 
-    * Le modèle de sécurité à la base est le même, et les deux systèmes partagent une même faiblesse. ​ Tout utilisateur utilisant ''​su root''​ ou ''​sudo''​ doit être considéré comme un utilisateur privilégié. ​ Si le compte de l'​utilisateur est compromis par un attaquant, celui-ci peut aussi obtenir les privilèges d'​administration et compromettre le système d'​exploitation. ​ Les utilisateurs ayant les droits d'​administration doivent être protégés avec les mêmes soins que le compte système. \\ Sur une note plus ésotérique,​ on remarque que ''​sudo''​ encourage la modification des habitudes de travail, qui peuvent provoquer un impact positif sur la sécurité du système d'​exploitation. ​ ''​sudo''​ est habituellement utilisé pour lancer une commande unique, alors que ''​su root''​ est souvent utilisé pour lancer un terminal //root// et lancer des multiples commandes. ​ L'​approche de sudo réduit la possibilité qu'un terminal //root// soit laissé ouvert indéfiniment sur le poste de travail et encourage l'​utilisateur à minimiser leur utilisation des privilèges d'​administration. 
- 
- 
- 
-===== Une console superutilisateur ? ===== 
-Utiliser ''​sudo''​ pour lancer une commande ne pose pas un réel problème. ​ Toutefois, il peut être plutôt désagréable de l'​utiliser pour lancer une longue procédure nécessitant plusieurs interventions en mode superutilisateur. ​ Dans ces cas, vous pouvez lancer un terminal superutilisateur,​ qui vous permettra alors de prendre l'​identité de //​root//​. ​ Vous n'​aurez donc plus besoin de saisir ''​sudo''​ devant chacune des actions à effectuer pour la durée de cette session en console. ​ Toutefois, aucune trace des actions posées n'est conservée en mémoire. ​ Il est déconseillé d'​ouvrir un terminal superutilisateur. 
- 
-Pour entrer en mode superutilisateur,​ saisissez la commande suivante dans un terminal: <​code>​$ sudo -s</​code>​ 
-Pour quitter le mode superutilisateur,​ saisissez simplement, dans ce même terminal, l'​instruction:<​code>#​ exit</​code>​ 
- 
- 
- 
-===== Configuration ===== 
- 
-La configuration de ''​sudo''​ se fait dans le fichier ///​etc/​sudoers//​. Ce fichier doit être modifié impérativement avec la commande ''​visudo''​ ; si vous utilisez un éditeur de texte autre que celui défini par défaut pour modifier ce fichier, il est possible que votre système refuse de fonctionner correctement par la suite. 
- 
-<​code>​~$ sudo visudo</​code>​ 
- 
- 
-==== Ajout des privilèges super-utilisateur à un utilisateur ==== 
- 
-  sudo adduser <​login>​ admin 
- 
-Il existe également d'​autres groupes relatif à l'​administration du système dont "​adm"​ qui autorise la lecture des fichiers de log sans avoir à utiliser sudo, et "​staff"​ qui donne des droits d'​écriture dans /usr/local et /home (un sudo bridé en quelque sorte). 
- 
- 
-Où à la création d'un compte sur le dernier onglet : \\ 
-{{  applications:​adduser-sudo.png ​ }} 
- 
-==== Options ==== 
- 
-La configuration de sudo est définie dans le fichier /​etc/​sudoers. 
- 
- 
-=== '​Insultes' ​ === 
-Un peu de bonne humeur grâce à sudo, si vous modifiez la ligne  
-  Defaults ​       !lecture,​tty_tickets,​!fqdn 
-en ajoutant //insults// 
-  Defaults ​       !lecture,​tty_tickets,​!fqdn,​insults 
-Vous affichera un autre message que le sempiternel ​ //Sorry, try again// lorsque vous vous trompez dans le mot de passe ((si vous vous êtes trompé dans la syntaxe du fichier l'​application vous signalera la ligne fautive, **corrigez la**)) 
-Ce qui donne :  
-<​code>​ 
-sudo cat /​etc/​sudoers 
-Password: 
-Where did you learn to type? 
-Password: 
-</​code>​ 
- 
-=== Commandes sans mots de passe  === 
- 
-** Ne pas généraliser à plus de commandes** ​ 
- 
-Definissons les commandes autorisés par exemple //less// : 
-  Cmnd alias specification 
-  Cmnd_Alias ​    LESS = /​usr/​bin/​less 
- 
-Puis éditons les privileges du groupe admin ((le premier utilisateur crée fait partie de ce groupe)) 
-  # Members of the admin group may gain root privileges 
-  %admin ​ ALL=(ALL) ALL, NOPASSWD: LESS 
- 
- 
-Voilà dorénavant un //sudo less// ​ ne demandera pas de mot de passe __aux membres du groupe admin__ ((qui pouvaient, eux seuls, faire un //sudo less /​etc/​shadow//​ mais avec demande de mot de passe)) ​ . 
- 
- 
- === Utilisation avancée ​ === 
-Pour une configuration poussée reportez vous à la page de manuel sur [[http://​www.courtesan.com/​sudo/​man/​sudoers.html|sudoers]] ((mieux vaut demander de l'aide pour l'​édition de /​etc/​sudoers plutôt que de casser sa machine)) 
- 
- 
-Toutes les commandes passées en sudo sont consignées dans le fichier ///​var/​log/​auth.log//​ consultable via l'​outil //​Applications / Outils Système / Visionneur de journaux système// 
- 
-===== Problèmes ===== 
- 
-==== Fichier /​etc/​sudoers corrompu ==== 
- 
-Il peut arriver lors de vos manipulations que vous corrompiez le fichier /​etc/​sudoers,​ il vous affichera alors quelque chose du genre : 
- 
-    sudoers file: syntax error, line 19 
-    sudo: parse error in /​etc/​sudoers near line 19 
- 
-Vous pouvez aussi avoir modifié par mégarde les droits du fichier : 
- 
-    sudo: bad permissions (ou autre) 
- 
-Dans ce cas vous ne pouvez le corriger puisque vous avez besoin de sudo pour le modifier. 
-Vous avez alors plusieurs possibilités pour retrouver des droits d'​administrateur et le corriger : 
- 
-    * Utiliser un live-cd 
- 
-Dans ce cas, aucun problème, insérez le CD et redémarrez. 
- 
-    * Redémarrer en **rescue mode** 
- 
-Ce mode est disponible à l'​écran de Grub lors du démarage de l'​ordinateur. Il vous enverra directement en mode texte et vous connecterra en tant qu'​administrateur. 
- 
-Une fois que vous êtes connecté, si c'est juste un problème de droits vous pouvez les corriger directement avec //chmod// et démarrer en mode normal avec la commande 
- 
-    init 2 
- 
-Sinon, si vous avez les compétences nécessaires pour modifier le fichier /​etc/​sudoers avec l'​éditeur vi: 
- 
-    export EDITOR=vi && sudo visudo 
- 
-**Esc** puis **a** permettent de rentrer en mode édition puis **ESC** suivi de **:wq** permet de sauver vos modifications (__w__rite) et de __q__uitter 
- 
-Si en revanche vous avez besoin d'aide et comme en mode //rescue// vous ne pouvez pas lancer votre client IRC ou votre navigateur. Je propose donc de réactiver //​temporairement//​ le compte root : 
- 
-    passwd -d root 
- 
-Démarrez ensuite le système complet avec : 
- 
-    init 2 
- 
-Maintenant connectez-vous en root  
- 
-    su - 
- 
-Vous pouvez maintenant corriger les erreurs avec //visudo// 
-Une fois le problème réglé, désactivez le compte root : 
- 
-    sudo passwd -l root 
- 
-Si cette dernière commande a fonctionné,​ tout est rentré dans l'​ordre :) 
- 
-==== Si jamais ces deux méthodes n'ont pas marché, il reste une solution avec le Desktop CD : ==== 
- 
-  - Amorcez votre ordinateur sur une session live à l'aide du //Desktop CD// d'​Ubuntu 6.06 LTS ou d'un liveCD d'une ancienne version d'​Ubuntu ou d'une autre distribution Linux 
-  - Une fois la session live chargée, ouvrez un terminal grâce au raccourci **Terminal** du menu //​Applications -> Accessoires//​ 
-  - Créez un point de montage pour votre partition racine d'​Ubuntu et montez cette partition : <​code>​$ sudo mkdir /mnt/racine 
-$ sudo mount -t type /dev/hdxy /​mnt/​racine</​code>​ 
-    * ''​type''​ est le système de fichiers de votre partition racine (généralement,​ ce sera ''​ext3''​ ou ''​reiserfs''​) 
-    * ''/​dev/​hdxy''​ doit être remplacé par le nom de périphérique de votre partition racine \\ Si vous ignorez les informations concernant vos partitions, l'​utilitaire ''​fdisk''​ peut vous aider : <​code>​$ sudo fdisk -l</​code>​ 
-    * ''/​mnt/​racine''​ est le point de montage de la partition racine 
-  - Exécutez gEdit avec les droits d'​administration afin de modifier le fichier ''/​mnt/​racine/​etc/​sudoers''​ : <​code>​$ gksudo "gedit /​mnt/​racine/​etc/​sudoers"</​code>​ 
-  - Une fois les modifications appliquées au fichier, enregistrez-le ! 
-  - Réamorcez votre ordinateur sur votre session normale sous Ubuntu. 
- 
- 
- 
- 
-==== Perte du privilège de sudoer ==== 
- 
-Il arrive de ne plus pouvoir exécuter de commandes en sudo, notamment en effectuant certaines manipulations. Par exemple : <​code>​$ usermod -G un_groupe nom_utilisateur</​code>​ 
-Lorsque l'on essaye d'​exécuter une commande avec sudo ensuite, on obtient le message suivant: <​code>​nom_utilisateur is not in the sudoers file. This incident will be reported.</​code>​ 
- 
-La solution est de redémarrer le poste, et dans [[:​grub|grub]] de choisir le mode rescue. On est alors automatiquement connecté en root. 
-Le but est alors de se rajouter dans le groupe admin avec la commande suivante : 
-<​code>​$ addgroup username admin</​code>​ 
- 
-Votre nom d'​utilisateur doit alors apparaître en exécutant la commande : 
-<​code>​$ cat /etc/group | grep admin</​code>​ 
- 
-Si cela ne fonctionne toujours pas, c'est que votre fichier /​etc/​sudoers est corrompu. 
- 
-===== Exceptions ===== 
- 
-Si vous ne trouvez pas comment faire, merci d'​ajouter de faire une entrée sur le forum et de mettre un lien ici. 
- 
-Sous unix tout est fichier, les périphériques aussi, ///dev// est le dossier correspondant aux périphériques,​ ///proc// celui réservé aux processus et commentaires du noyau par exemple /​proc/​cpuinfo donne les infos sur votre processeur (infos que le noyau a //​decouvert//​ au boot) impossible de le modifier donc. [[wp>​Filesystem_Hierarchy_Standard]] pour plus d'​informations. 
- 
-Certains fichiers de /proc  peuvent être édités, mais pas tous, directement ou avec sysctl (voir man sysctl.conf). 
- 
-==== Webmin ==== 
- 
-Pour mettre un mot de passe à root, mais **que** pour webmin : 
- 
-  sudo  /​usr/​share/​webmin/​changepass.pl /etc/webmin root mot_de_passe_pour_webmin 
- 
- 
-==== MySQL ==== 
-Pour phpMyadmin aussi donc... 
-  sudo mysqladmin -u root password nouveau_mot_de_passe 
- 
-Plus de details sur la [[:​applications:​mysql:​faq mysql]] 
- 
-===== Slogans ===== 
- 
-Ci-dessous une liste de slogans visant à décourager l'​emploi du compte root : 
- 
- 
-  * Sudo pour administrer sa machine sans se faire __SU__er 
-  * Si j'​avais SU, je s'rais pas venu  
-  * {{http://​xkcd.com/​comics/​sandwich.png}} \\  
- 
-- Fais moi un sandwich\\ 
-- Quoi ? t'as qu'à te le faire toi même.\\ 
-- sudo fais moi un sandwich\\ 
-- D'​accord\\ 
-([[http://​xkcd.com/​c149.html|illustration de Randall Munroe sous licence CC]]) 
- 
------- 
-//​Contributeurs : [[:​utilisateurs:​Ju]],​ [[utilisateurs:​Futal]],​ [[:​utilisateurs:​Damocles]],​ [[:​utilisateurs:​chatalors]]//​ 
  • applications/sudo.1168851104.txt.gz
  • Dernière modification: Le 18/04/2011, 14:47
  • (modification externe)