su

De ArchwikiFR


La commande su (substitute user) est utilisée pour prendre l'identité d'un autre utilisateur sur le système (root par défaut). Ainsi vous pouvez vous connecter en tant qu'autre utilisateur pendant votre session en commençant une sorte de sous-session, puis de retrouver votre session initiale une fois terminé.


Utilisation

Pour se connecter sous l'identité d'un autre utilisateur, passer son nom:

su http

pour l'utilisateur http.

Le prompt vous demandera le mot de passe de l'utilisateur que vous tentez de devenir.

Si aucun nom d'utilisateur n'est passé, su suppose qu'il s'agit de l'utilisateur root, et le mot de passe qui vous est demandé est donc celui de ce dernier.

Shell de connexion

Important : Le comportement par défaut de su est de rester dans le répertoire courant et de maintenir les variables d'environnement de l'utilisateur original (plutôt que de passer à ceux du nouvel utilisateur).

Il est donc essentiel de bien considérer les points suivants:

Il peut parfois être avantageux pour un administrateur système d'utiliser le compte shell d'un utilisateur ordinaire plutôt que le sien. Cette méthode est particulièrement efficace pour identifier et résoudre les problèmes que peut rencontrer un utilisateur.
Cependant, dans de nombreuses situations, il n'est pas souhaitable, voire même dangereux, d'opérer de la sorte car variables d'environnement et emplacement initial sont ceux de votre utilisateur de départ tandis que vous avez les droits et permissions de l'utilisateur dont vous avez pris l'identité. L'erreur la plus commune qui en résulte et de lancer un programme qui va installer ou modifier des fichiers sur le compte initial, empêchant par exemple le lancement du même programme par le véritable utilisateur du compte parce que c'est root qui a placé ses propres permissions et pas vous.

Il est donc souhaitable que les administrateurs, ainsi que tous les autres utilisateurs qui sont autorisés à utiliser su (et il est suggéré qu'il y en ait très peu, voire aucun) d'acquérir l'habitude de toujours faire suivre la commande su avec un espace et un trait d'union. Le trait d'union a pour effet de lancer un shell de connexion (login shell), ce qui a pour conséquence :

  1. le passage du répertoire courant vers le répertoire $HOME de la nouvelle identité (par exemple, à /root dans le cas de l'utilisateur root);
  2. la destruction des variables d'environnement, hormis $TERM. Celles concernant l'utilisateur sont initialisées et le shell est invoqué en tant que login shell ce qui permet la lecture des fichiers d'initialisation ($HOME/.bash_profile entre autres pour bash par exemple). (cf. su invocation)

Ainsi, les administrateurs doivent généralement utiliser su comme suit:

su -

Un résultat identique est produit en ajoutant le nom d'utilisateur root:

su - root

La même chose peut être réalisée pour tout autre utilisateur (par exemple pour un utilisateur nommé Archie):

su - Archie

Alternative : sudo -i

Afin de restreindre d'avantage les actions des utilisateurs amenés à utiliser le compte root et de mieux journaliser les actions des utilisateurs nommés, il est conseillé d'utiliser la commande sudo -i à la place.

Voir Sudo#Mode_interactif pour plus d'informations.

Lancement d'applications graphiques

gksu ou kdesu (kdebase-runtime) sont là pour ça.

Sécurité

De ce point de vue, si vous comptez attribuer à un petit groupe d'utilisateurs des droits d'administration, il est préférable de configurer et d'utiliser sudo au lieu de su. Le système de commande sudo vous demandera votre mot de passe, ou aucun s'il est configuré de telle façon, plutôt que celui de l'utilisateur cible (le compte utilisateur que vous tentez d'utiliser). De cette façon, vous n'avez pas à partager entre les utilisateurs des mots de passe (celui de root en l'occurrence ! ), et si jamais vous avez besoin d'arrêter un utilisateur ayant un accès root (ou l'accès à tout autre compte, d'ailleurs), vous n'avez pas à changer le mot de passe root, ce qui est un inconvénient pour tout le monde, et n'avez besoin que de révoquer l'accès sudo de cet utilisateur.