Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
applications:sudo [Le 13/12/2006, 08:41] 195.6.25.114 |
— (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// | ||
- | |||
- | |||
- | ==== 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. | ||
- | |||
- | ===== Exceptions ===== | ||
- | |||
- | Si vous ne trouvez pas comment faire, merci d'ajouter de faire une entree sur le forum et de mettre un lien ici. | ||
- | |||
- | Sous unix tout est fichier, les peripheriques aussi, ///dev// est le dossier correspondant aux peripheriques, ///proc// celui reserve 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 etre edites, 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]]// |