Menu Fermer

Comment utiliser la commande su avec des exemples sur Linux

Que vous soyez sur Ubuntu, Debian, Mint, Fedora ou tout autre distribution Linux, vous pouvez utiliser la commande su qui est native.
su (switch user)
est une commande qui permet de s’identifier avec un autre utilisation ou passer une commande avec un autre utilisateur dans un terminal.
Vous pouvez donc à tout moment basculer et passer sur un autre utilisateur.

Dans ce tutoriel, je vous montre comment utiliser la commande su avec des exemples sur Linux.

Comment utiliser la commande su avec des exemples sur Linux

sudo VS su : les différences

sudo (substitute user do) est une commande qui permet d’exécuter une ou plusieurs commandes sous un autre utilisateur.
Ainsi la commande sudo accorde un accès ponctuel ou limitée à la fonctionnalité racine.
Typiquement, la commande sudo est utilisée pour exécuter rapidement une commande administrative, puis revenir aux autorisations régulières du compte d’utilisateur.
Dans la plupart des distributions Linux, elle permet a un utilisateur dans un groupe administrateur d’exécuter des commandes root.
Mais on peut très bien, par exemple, créer un groupe www et permettre d’exécuter des commandes pour administrer un serveur WEB.

su (switch user) de s’identifier sous un autre utilisateur dans un terminal.
Vous pouvez alors agir comme si vous étiez identifier directement avec ce dernier.
Pour y parvenir, il faut connaître le mot de passe de cet utilisateur.
C’est le moyen le plus simple de basculer ou de passer au compte administrateur.

Comment utiliser la commande su avec des exemples sur Linux

Syntaxe et options

su [options] [utilisateurs [arguments]]

Si un nom d’utilisateur est spécifié, SU est par défaut sur le superutilisateur (racine). Il suffit de trouver l’utilisateur dont vous avez besoin et de l’ajouter à la syntaxe de commande SU.

Utilisez la commande whoami pour savoir avec à quelle utilisateur vous êtes identifié.
COMMANDESDESCRIPTION
UsernameRemplacez le nom d’utilisateur avec le nom d’utilisateur réel que vous souhaitez vous connecter. Cela peut être n’importe quel utilisateur, pas seulement la racine.
–c ou –command [command]Exécute une commande spécifique comme utilisateur spécifié.
– ou –l ou –login [username]Exécute un script de connexion pour passer à un nom d’utilisateur spécifique. Vous devrez entrer un mot de passe pour cet utilisateur.
–s ou –shell [shell] Vous permet de spécifier un environnement de shell différent à exécuter.
–h ou –helpAffiche le fichier d’aide pour la commande SU.
–p ou ––preserve–environmentPréserver l’environnement Shell (maison, coquille, utilisateur, nom de connexion).
Les options de la commande su

Passer à un autre utilisateur

Pour basculer d’un autre utilisateur à l’autre, deux utilisations de la commande su est possible :

su –l [autre_utilisateur]

ou

su – [autre_utilisateur]

On vous demande le mot de passe de l’utilisateur cible pour s’identifier avec.
Ci-dessous on bascule de l’utilisateur debian à l’utilisateur malekalmorte :

Passer à un autre utilisateur avec la commande su sur Linux

Par exemple pour passer en root, on peut utiliser su de toutes ces manières

su -l
su -
su -l root
su - root

L’utilisateur doit être configuré avec un shell dans /etc/passwd (par exemple /bin/bash).
Les utilisateurs pour des raisons de sécurité n’ont pas de shell ainsi si vous tentez de vous connecter avec, vous recevez le message : This account is currently not available.

root@www:/data/www# whoami
root
root@www:/data/www# cat /etc/passwd|grep www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
root@www:/data/www# su - www-data
This account is currently not available.

On peut utiliser l’option –shell pour faire un shell ce qui permet de s’identifier avec un utilisateur système :

root@www:/data/www# su - www-data --shell=/bin/bash
www-data@www:~$ whoami
www-data
Passer à un autre utilisateur avec la commande su sur Linux

Exécuter une commande spécifique comme un utilisateur différent

Pour exécuter une commande spécifique comme utilisateur différent, utilisez l’option -c :

su –c [commande] [autre_utilisateur]

Par exemple, ci-dessous, on exécute la commande whoami avec l’utilisateur malekalmorte qui retourne logiquement malekalmorte.

su -c whoami malekalmorte
Exécuter une commande spécifique comme un utilisateur différent avec la commande su sur Linux

Si vous administrez un serveur WEB, cela est très pratique pour exécuter des utilitaires en lignes de commandes (CLI) comme WP-CLI, PHP CLI, phpbb-cli, …
Par exemple, ci-dessous, on exécute la commande occ (cli d’owncloud) avec l’utilisateur www-data :

su -c '/usr/bin/php7.4 occ integrity:check-core' www-data --shell /bin/bash

Utilisez un shell différent

Pour utiliser une coque différente ou un environnement d’exploitation, entrez les éléments suivants :

su –s /usr/bin/zsh

Cette commande ouvre un compte utilisateur root dans Z Shell.

Utilisez un autre utilisateur dans le même environnement

Vous pouvez conserver l’environnement du compte d’utilisateur actuel avec l’option p :

su –p [other_user]

Le compte d’utilisateur commutera, mais vous garderez le même répertoire de la maison. Ceci est utile si vous devez exécuter une commande en tant qu’utilisateur différent, mais vous avez besoin d’accéder aux données actuelles de l’utilisateur.

Utilisez un autre utilisateur dans le même environnement avec la commande su sur Linux