Root-su-sudo

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

L'utilisateur root

Sur les systèmes Unix et GNU/Linux existe un utilisateur privilégié, appelé parfois superutilisateur: root Cet utilisateur à tous les droits sur tous les fichiers, et en particulier les fichiers systèmes, c'est lui qui lance les tâches systèmes (en particulier la première de toutes init). Il a toujours pour identifiant unique 0, et possède son propre groupe (root). Cet utilisateur est donc fondamental pour le système. Il devra être protégé par un mot de passe béton, et ne devra être connecté que le strict minimum pour effectuer des tâches d'administration. On préférera déléguer certaines tâches d'administration basiques (sauvegarde par ex.) à un autre utilisateur. Autre conséquence, on ne lancera sous cet utilisateur que le minimum de processus, et on s'assurera que ceux-ci soient mis à jour côté sécurité.

La commande su

su veut dire "substitute user". Elle permet, en ligne de commande, de se changer temporairement en un autre utilisateur. Cette commande vous demandera bien évidemment le mot de passe de l'utilisateur sous lequel vous voulez travailler. Par exemple :su toto vous transformera en utilisateur toto pour exécuter les commandes que vous taperez par la suite (à condition que toto vous ait donné son mot de passe). Il existe un cas particulier; si vous tapez su sans préciser d'utilisateur, c'est comme si vous aviez utilisé "su root", c'est un raccourci. Ne pas oublier de faire exit lorsque vous en avez fini avec cet utilisateur, surtout si celui-ci est root! Vous pouvez définir un 'timeout' qui vous "sortira" automatiquement au bout d'un certain temps. Éditez le fichier /root/.profile

 export TMOUT=30
 readonly TMOUT

Vous pouvez aussi passer une suite de commandes avec su:

$ su -c commande
ou
$ su -c 'première commande; deuxième commande; autres commandes'

NOTE : la commande su + mot de passe vous place dans votre dossier home/utilisateur tandis que "su -" vous place directement dans votre dossier perso /root.

La commande kdesu (gksu)

Cette commande est strictement équivalente à su, mais en mode graphique. kdesudo peut par exemple être utilisé avec mplayer pour lire un fichier situé dans le /home d'un autre utilisateur qui n'a pas donné l'accès en lecture aux autres (mais vous devez dans ce cas connaître son mot de passe). Ou bien pour lancer synaptic depuis votre environnement graphique courant.

La commande sudo

Cette commande ("substitute user do") permet de donner de façon permanente des droits à un ou plusieurs utilisateurs sur un ou plusieurs programmes. Ces droits sont définis dans le fichier /etc/sudoers. Je prendrai l'exemple de la commande poweroff. Il est pratique, via sudo, d'autoriser un utilisateur courant à utiliser cette commande sans mot de passe pour éteindre la machine ; et ce n'est pas dangereux pour le système. Autre exemple souvent cité: les sauvegardes. sudo permet de donner à quelques utilisateurs l'autorisation d'utiliser un logiciel de sauvegarde qui doit normalement être lancé avec les droits root. Là encore, pas de risque de casser la machine. On peut faire beaucoup de chose avec sudo, et surtout des bêtises! C'est la solution de facilité qu'il faut éviter si une autre solution existe. La pire des erreurs serait de donner les droits root sur tous les programmes, sans mot de passe (c'est possible avec sudo et certaines distributions le font par défaut!)

La configuration de sudo se trouve dans le fichier /etc/sudoers

Le fichier sudoers est bien sûr personnalisable, il s'ouvre avec la commande

# visudo

Autoriser tous les utilisateurs à éteindre la machine:

ALL ALL=NOPASSWD: /sbin/shutdown

Il est recommandé de prendre des précautions et d'ajouter ce qui suit à votre "sudoers"

Defaults:ALL    timestamp_timeout=0, tty_tickets

La première ne laisse pas la possibilité de passer une seconde commande sans redemander le mot de passe, la seconde empêche d'en passer une depuis une autre console.

Vous pouvez spécifier des alias d'utilisateurs et commandes:

# Définition d'un Alias de deux utilisateurs
User_Alias      BOSS = lol, piratebab

# Définition de deux Alias de commandes
Cmnd_Alias      ETEINDRE = /sbin/shutdown, /sbin/reboot, /sbin/halt
Cmnd_Alias      APT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude

# Les utilisateurs faisant partie de l'Alias BOSS peuvent installer/enlever des paquets et redémarrer/éteindre le système.
BOSS ALL = APT, ETEINDRE

Avec le sudoers ci-dessus, les utilisateurs appartenant au groupe "LEBOSS" ont le droit d'éteindre la machine et d'installer des paquets.

Pour vérifier la syntaxe de votre fichier sudoers:

# sudo -v

Comme dit plus haut, il n'est pas recommandé de donner tous les pouvoirs de root à un (ou plusieurs) utilisateur(s), vous devez prendre la peine de définir les commandes autorisées ou pas... Débutant