Outils pour utilisateurs

Outils du site


admin:sudo

Différences

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

Lien vers cette vue comparative

admin:sudo [2008/01/29 11:54]
linkuff créée
admin:sudo [2011/02/02 22:42]
Ligne 1: Ligne 1:
  
-Documentation provenant de ubuntu-fr, Rédigé par Jul, complété par Futal et Damocles 
- 
-===== 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, l'utilisateur peut parfois nécessiter d'effectuer certaines 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.   
- 
-==== sudo ==== 
- 
-''sudo'' s'utilise de la manière suivante : <code>$ sudo <commande></code> 
- 
-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> 
- 
-===== 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 via la commande  
-  sudo visudo 
-et **uniquement** via cette commande ! En effet, les droits par défaut du fichier ///etc/sudoers// ne permettent pas l'écriture : 
-<code>ls -lsa /etc/sudoers 
-4 -r--r-----  1 root root 414 2005-08-09 17:19 /etc/sudoers 
-</code> 
-Vous pouvez constater qu'il n'y a pas de droit d'écriture (w). Changer les droits de ce fichier amènerait __inexorablement__  à un blocage de sudo ! Cela consisterait à se tirer une balle dans le pied, vu qu'il faut les droits sudoers pour repasser le fichier en lecture seule ! 
-? 
-Si l'éditeur par défaut vous rebute vous pouvez taper  
-  EDITOR=gedit sudo visudo  
-Pour rendre ce choix permanent : 
-   update-alternatives --config editor 
- 
-> Par rapport à la partie **Quand utiliser sudo ou gksudo/kdesu ?**, je crois qu'on devrait remplacer ''**EDITOR=gedit sudo visudo**'' par ''**EDITOR=gedit gksudo visudo**'', sous Kubuntu on aurait ''**EDITOR=kate kdesu visudo**'', mais cette dernière commande me semble avoir un comportement bizarre... Qu'arriverait-il si on rendait ce choix permanent ? Il faudrait tester sur des live-cd de Ubuntu et Kubuntu... (Damocles) 
- 
-==== 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 megarde 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 probleme, inserez le CD et redemarrez. 
- 
-    * Redemarrer en **rescue mode** 
- 
-Ce mode est disponible a l'ecran de Grub lors du demarage de l'ordinateur. Il vous enverra directement en mode texte et vous connecterra en tant qu'administrateur. 
- 
-Une fois que vous etes connecté, si c'est juste un probleme de droits vous pouvez les corriger directement avec //chmod// et demarrer en mode normal avec la commande 
- 
-    init 2 
- 
-Sinon, soit vous avez les competences necessaire pour modifier le fichier /etc/sudoers, soit vous avez besoin d'aide et en mode //rescue// vous ne pouvez pas lancer votre client IRC ou votre navigateur. Je propose donc de reactiver //temporairement// le compte root : 
- 
-    passwd -d root 
- 
-Demarrez ensuite le systeme complet avec : 
- 
-    init 2 
- 
-Maintenant connectez vous en root  
- 
-    su - 
- 
-Vous pouvez maintenant corriger les erreurs avec //visudo// 
-Une fois le probleme reglé, desactivez le compte root : 
- 
-    sudo passwd -l root 
- 
-Si cette derniere commande a fonctionné, tout est rentré dans l'ordre :) 
- 
-===== 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 
- 
-===== 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 ne serais pas venu  
admin/sudo.txt · Dernière modification: 2011/02/02 22:42 (modification externe)