Annexe à la page "Sudo : effectuez des tâches administratives"

Options utiles

  • sudo -k termine une session sudo éventuellement ouverte, cela assure que la prochaine instruction sudo demandera bien un mot de passe.
  • sudo -s ouvre le shell spécifié dans /etc/passwd pour l'utilisateur cible (root par défaut).
  • sudo -i simule un login initial et ouvre le shell spécifié dans /etc/passwd pour l'utilisateur cible (root par défaut). Cela signifie que des fichiers spécifiques tels que .login ou .profile seront lus par le shell ainsi lancé.
  • sudo -E préserve l'environnement du shell depuis lequel la commande est lancée
  • sudo -u foo lance la commande en tant que l'utilisateur foo
  • sudo -g bar lance la commande avec le groupe bar spécifié (le groupe spécifié est le groupe primaire de l'utilisateur cible indiqué dans /etc/passwd)
  • sudo -i -u toto permet de se connecter en tant que l'utilisateur toto (ne pas utiliser ces options pour root)

Activer et désactiver le compte root

  • Activer le compte root est rarement nécessaire. Presque toutes les tâches d'administration auxquelles on est confronté sous Ubuntu peuvent être réalisées avec sudo ou gksudo.
    Si le besoin d'un login en tant que root se fait ressentir, la meilleure alternative est de simuler un shell de login en tant que root à l'aide de la commande suivante:
    sudo -i

    Il est possible de sortir de ce shell avec le raccourci Ctrl-d ou avec la commande suivante:

    exit
  • Pour activer le compte root, i.e. lui donner un mot de passe (à vos risques et périls), on peut utiliser la commande suivante:
    sudo passwd root
Se loguer sous X (i.e. en mode graphique) en tant que root peut poser de gros problèmes.
Si vous pensez avoir besoin d'un compte root activé pour réaliser une certaine action, consultez un canal de support officiel (irc, liste de diffusion, forum, …) avant de l'activer, afin de vous assurez qu'il n'y a pas une meilleure méthode pour réaliser cette action.
  • Désactiver un compte root précédemment activé:
    sudo usermod -p '!' root

Différences entre "sudo -i" et "sudo -s" et pourquoi il est préférable de ne jamais lancer "sudo su"

  • Une démonstration valant bien des explications, voici une commande mettant en évidence ces différences (il est nécessaire que le paquet meld soit installé pour que cette commande fonctionne):
    sudo -s env > /tmp/testenv_sudo_-s ; sudo -i env > /tmp/testenv_sudo_-i ; sudo su -c env > /tmp/testenv_sudo_su ; meld /tmp/testenv_sudo_* && rm /tmp/testenv_sudo_* 
  • Voici les principales différences observées, dans le cas ou ces commandes sont lancées par l'utilisateur foo:
sudo -s sudo -i sudo su
HOME= /home/foo /root /root
PWD= /home/foo /root /home/foo
PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
fichier(s) exécuté(s) /home/foo/.bashrc /etc/environment, /root/.login, /root/.profile, /root/.bashrc /etc/environment, /root/.bashrc

On voit donc que ces commandes ont une influence différente sur les variables d'environnement, et cela peut avoir des conséquences inattendues (compilations etc…).

Voir aussi

—-

Contributeurs : avelldiroll, eagle08