Outils pour utilisateurs

Outils du site


admin:sudo

Documentation provenant de ubuntu-fr

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 impressionnant1) de personnes affectant un mot de passe au compte root2) 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/XP3), 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 “SuperUser 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. (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 root4). 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 :

$ sudo <commande>

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:

$ sudo -k

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:

$ sudo -s

Pour quitter le mode superutilisateur, saisissez simplement, dans ce même terminal, l'instruction:

# exit

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 :

ls -lsa /etc/sudoers
4 -r--r-----  1 root root 414 2005-08-09 17:19 /etc/sudoers

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 :

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 5) Ce qui donne :

sudo cat /etc/sudoers
Password:
Where did you learn to type?
Password:

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 6)

# 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 7) .

Utilisation avancée

Pour une configuration poussée reportez vous à la page de manuel sur sudoers 8)

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. 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 SUer
  • Si j'avais SU, je ne serais pas venu
1)
ne serait-ce que deux personnes, deux est déjà un nombre impressionnant dans ce cas
2)
et certaines personnes conseillent d'affecter un mot de passe au compte root, ce qui ne suit pas du tout la logique de Ubuntu
3)
Toutefois, le compte utilisateur par défaut sous Windows XP possède les droits d'administration. Il est root.
4)
La commande su (pour “switch user”) 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).
5)
si vous vous êtes trompé dans la syntaxe du fichier l'application vous signalera la ligne fautive, corrigez la
6)
le premier utilisateur crée fait partie de ce groupe
7)
qui pouvaient, eux seuls, faire un sudo less /etc/shadow mais avec demande de mot de passe
8)
mieux vaut demander de l'aide pour l'édition de /etc/sudoers plutôt que de casser sa machine
admin/sudo.txt · Dernière modification: 2011/02/02 23:42 (modification externe)

Outils de la page