Sometimes I write things, sometimes I don't.

To content | To menu | To search

Donnez le coup fatal avec sudo

Que ce soit ici dans des billets ou ailleurs, vous avez eu l’occasion de croiser la commande sudo disponible dès le premier login sous Ubuntu. Mais à quoi sert réellement cet outil, quand doit-on l’utiliser, qui peut l’utiliser ? Autant de questions auquel ce billet va tenter de répondre. sudo est l’acronyme de Substitute User DO. C’est aussi la commande de référence permettant à un utilisateur avec les droits d’administration du système d’exécuter des commandes, de lire, ou d’écrire des fichiers que normalement sont réservés à l’administrateur du système qui se logge avec le compte bien connu identifié par root.

L’utilitaire sudo s’utilise toujours en ligne de commande. Il permet d’exécuter des commandes en tant que superutilisateur. Pour cela, il faut précéder la commande à entrer par le mot clé sudo. Comme ceci :
~$ sudo <ma super commande>
Ainsi chaque commande à exécuter avec les droits d’administration doit se présenter sous cette forme. sudo, pour des raisons de sécurité, a besoin du mot de passe de l’utilisateur actif (et non pas de root). Une fois le mot de passe entré, celui-ci est valable pour une session de 15 minutes à compter de la première commande. Il est toutefois possible de terminer cette session avant l’heure en entrant ceci dans le terminal de la session concernée.
~$ sudo -k

Si un grand nombre de commandes en tant que superutilisateur doivent être exécutées dans la foulée, il est conseillé d’ouvrir directement un terminal en mode superutilisateur. Pour cela, on utilise l’option -s.
~$ sudo -s
Et on utilise alors la commande exit pour le fermer.
~$ exit

Dans la même veine, sudo a un équivalent en mode graphique (sous GNOME et KDE). Nous verrons ici celui correspondant à GNOME, il est appelé par la commande gksudo.
Cet outil est utilisé par toutes les applications disponibles dans le menu Système > Administration. On l’utilise de la même façon que sudo, on doit simplement ajouter gksudo avant la commande à exécuter.
~$ gksudo gedit

Pas mal de personnes se demandent alors quand est-ce que l’on doit utiliser sudo ou gksudo. C’est en fait plutôt simple, et pas vraiment une question de goût. On peut si on le souhaite n’utiliser que sudo ou que gksudo cependant, il y a une “convention”. Toute action nécessitant les droits de superutilisateur dans un terminal et uniquement dans un terminal doit être faite avec sudo alors que celle réalisée en mode graphique sera utilisée via gksudo. Ce n’est pas si complexe que ça au final.

Comments

1. On Tuesday 4 November 2008, 11:31 by le renégat

Et pourquoi ? Pourquoi ne pas utiliser sudo pour du graphique ?

2. On Tuesday 4 November 2008, 13:23 by NaWer

sudo, gksudo, tout ca c’est une histoire d’environnement.

Les commandes utiles pour s’en apercevoir :
diff -u ~/.bashrc /root/.bashrc
env

Et vous comprendrez aussi pourquoi “sudo bash”, c’est pas terrible ;)

3. On Tuesday 4 November 2008, 14:09 by Guillaume

Intéressant, j’avais jamais eu l’idée d’utiliser ces commandes. Merci pour l’info.

4. On Tuesday 4 November 2008, 14:56 by theguitou

On pourrait aussi parler du fichier /etc/sudoers qui permet de définir des droits d’utilisation des commandes sans mot de passe. Exemple :

user1 ALL=NOPASSWD:/sbin/reboot

permet à user1 de lancer “sudo reboot” sans mot de passe.

On peut faire beaucoup plus fin.

5. On Tuesday 4 November 2008, 15:07 by Guillaume

Exact, dans la même veine, je n’ai pas parlé de comment donner les droits de sudoer à un utilisateur.

6. On Tuesday 4 November 2008, 18:39 by Daniel Birtz

Une idée mes venu lors de la lecture du billet. Est-il possible de lancer un “gestionnaire de fichier graphique” avec gksudo ?

J’ai essayé “gksudo nautilus” mais ça me donne des erreurs.

7. On Tuesday 4 November 2008, 18:55 by Guillaume

Ca marche pour moi. Ca ouvre Nautilus avec comme répertoire /root/. Y’a quand même des logs dans le terminal sur des erreurs.

8. On Tuesday 4 November 2008, 19:02 by Daniel Birtz

En effet, je viens d’essayer à nouveau et ça fonctionne. Je vais sauver du temps avec ça.

Merci Respawner,

9. On Wednesday 5 November 2008, 18:18 by Albob

Je pensais que SUDO c’était: “Super User DO”. Ca me parait un peu plus logique.

10. On Wednesday 5 November 2008, 18:50 by Guillaume

Je le pensais aussi, jusqu’à voir ceci.
http://fr.wikipedia.org/wiki/Sudo

11. On Wednesday 5 November 2008, 18:54 by Albob

Qui croire? Le wiki anglais confirme plutôt la version Super User (http://en.wikipedia.org/wiki/Sudo). D’autant que même l’article français répète à tour de bras que les commandes sont exécutées en super utilisateur.

Rooo, et puis on s’en fiche :)

12. On Wednesday 5 November 2008, 19:07 by Guillaume

Le wiki ubuntu-fr dit la même chose que l’article Wikipedia en français. Et puis bon, du moment que ça marche ça me va :D

13. On Wednesday 5 November 2008, 21:19 by Shrat

gksudo et sudo ne sont pas équivalents, loin de là. Certaines applications en mode graphiques ne fonctionneront tous simplement pas avec sudo. Une connexion vers X c’est une permission supplémentaire!

D’ailleurs les droits admin en mode graphique çaymal.

14. On Thursday 6 November 2008, 10:51 by olivemrs

Et pour l’utilisation de su préalablement à sudo ?
Je précise : j’avais mis à dispo à un ami un ordi, je lui avais créé un compte à son nom mais sans droit d’administrateur (histoire qu’il ne fasse pas de bêtises). De temps à autre je passais pour lui mettre à jour le système, rajouter un programme etc. Pour faire les manip plus rapidement j’ai pensé à trouver un moyen pour les faire directement depuis son compte, en ligne de commande.

Après un peu de tâtonnement j’ai trouvé la solution tout seul ;
dans le terminal faire : $su <mon nom (administrateur)>
il me demande le mot de passe associé à ce compte (qui n’est pas celui qui est logué sous gnome), ensuite toute les opérations faites avec la commande sudo appelle le super utilisateur (l’utilisateur de substitution, substitute user) précédemment appelé et ce jusqu’à la fermeture du terminal. Quelqu’un peut-il me confirmer la manip : je n’ai pas trouvé plus de précision quand à l’utilisation de la commande su (sauf http://fr.wikipedia.org/wiki/Su_(Un…) ); pour ce que je voulai faire ça marche …