su (Français)
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
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 :
- 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); - 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 pourbash
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 (Français)#Mode interactif pour plus d'informations.
Lancement d'applications graphiques
gksuAUR ou kdesu (kdebase-runtimeAUR) 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.