dimanche 2 novembre 2008, 23:18
Donnez le coup fatal avec sudo
Par Guillaume Mazoyer - Ubuntu - Lien permanent
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.
14 commentaires
Et pourquoi ? Pourquoi ne pas utiliser sudo pour du graphique ?
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 ;)
Intéressant, j’avais jamais eu l’idée d’utiliser ces commandes. Merci pour l’info.
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.
Exact, dans la même veine, je n’ai pas parlé de comment donner les droits de sudoer à un utilisateur.
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.
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.
En effet, je viens d’essayer à nouveau et ça fonctionne. Je vais sauver du temps avec ça.
Merci Respawner,
Je pensais que SUDO c’était: “Super User DO”. Ca me parait un peu plus logique.
Je le pensais aussi, jusqu’à voir ceci.
http://fr.wikipedia.org/wiki/Sudo
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 :)
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
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.
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 …