sudo

De ArchwikiFR


sudo (substitute user do)est un programme conçu pour permettre à un administrateur système de déléguer des privilèges à des utilisateurs, et ainsi leur permettre de lancer certaines (ou toutes) commandes en tant que root ou autre utilisateur tout en enregistrant l'utilisation de ces privilèges.

Installation

# pacman -S sudo

Configuration

Il faut éditer le fichier /etc/sudoers avec l'outil visudo, en root :

# visudo
Astuce : Pour sauvegarder les modifications et quitter visudo utiliser :wq
Note : À sa fermeture, visudo vérifiera si vous avez commis des erreurs, vous permettant de rectifier le tir.

On peut utiliser un autre éditeur en utilisant la variable $EDITOR :

EDITOR=vim visudo

permettra d'utiliser vim à la place de vi.

Exemples de configuration :

  • Autoriser l'utilisateur jean à éteindre l'ordinateur :
jean  localhost=/sbin/shutdown -h now
  • Autoriser le group wheel à lancer des commandes en root :
%wheel ALL=(ALL) ALL
  • Utiliser sudo avec le mot de passe root :
Defaults rootpw

Utilisation

Ensuite, on utilise sudo simplement, sudo devant les commandes :

$ sudo pacman -Syu

On peut utiliser la commande sudoedit ou sudo -e pour éditer un ou plusieurs fichiers. Ces derniers seront d'abord copiés dans des fichiers temporaires avant d'être sauvés sous leurs vrais noms lorsqu'on quitte l'édition.

Mode interactif

Il est possible d'utiliser sudo en mode interactif via la commande :

$ sudo -i

Avantages

Lancé en mode interactif, le comportement de sudo -i est très semblable à celui de su, néanmoins, ce terminal est soumis aux restrictions définies dans /etc/sudoers. Ainsi, si un utilisateur toto n'a pas les droits adéquats pour redémarrer ou arrêter la machine (ou toute autre commande restreinte à root) tel que défini dans /etc/sudoers, il ne pourra pas lancer la commande via ce mode, contrairement à l'utilisation de su. Les commandes générant des enregistrements dans le journal (comme systemctl par exemple) sont enregistrés sous le nom de l'utilisateur d'origine, contrairement à su où cet enregistrement a lieu comme s'il avait été lancé par root.

Invite de commande

Il est également possible de personnaliser l'invite de commande en mode interactif via la variable d'environnement SUDO_PS1 (cette variable est néanmoins surchargée par la variable PS1 pouvant se trouver dans /root/.bash_profile, /etc/profile ou encore /etc/bash.bashrc).

Avancé

Complétion avec bash

Par défaut, la complétion ne fonctionne pas pour sudo, pour l'activer, il faut ajouter ceci à votre ~/.bashrc:

complete -cf sudo

Ainsi:

$ sudo pac<TAB>

donnera la liste des choix dont en théorie pacman.

Lancement d'applications graphiques

Si vous tenez à lancer une application graphique avec sudo, vous pouvez utiliser gksudo (disponible dans gksu) ou kdesu (disponible si vous disposez de kdebase-runtime ).

kdesu

Pour utiliser kdesu avec sudo plutôt qu'avec su (comportement par défaut), vous pouvez ajouter dans $HOME/.kde4/share/config/kdesurc (ou /usr/share/config/kdesurc pour tous les utilisateurs) :

[super-user-command]
super-user-command=sudo