web-dev-qa-db-fra.com

Comment basculer entre les utilisateurs sur un même terminal?

Je souhaite me connecter en tant qu'utilisateur différent sans vous déconnecter de l'utilisateur actuel (sur le même terminal). Comment je fais ça?

535
tshepang

Que diriez-vous d'utiliser la commande su?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

Si vous souhaitez vous connecter en tant que root, il n'est pas nécessaire de spécifier le nom d'utilisateur:

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

En règle générale, vous pouvez utiliser Sudo pour lancer un nouveau shell en tant qu'utilisateur souhaité; le -u L'indicateur vous permet de spécifier le nom d'utilisateur que vous souhaitez:

$ whoami
user1
$ Sudo -u user2 zsh
$ whoami
user2

Il existe des moyens plus détournés si vous n'avez pas accès à Sudo, comme ssh username @ localhost, mais Sudo est probablement le plus simple, à condition qu'il soit installé et que vous ayez la permission de l'utiliser.

630
Pratt

En général, vous utilisez Sudo pour lancer un nouveau shell en tant qu'utilisateur souhaité; le -u L'indicateur vous permet de spécifier le nom d'utilisateur que vous souhaitez:

[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % Sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody

Il existe des moyens plus détournés si vous n'avez pas accès à Sudo, comme ssh username@localhost, mais je pense que Sudo est probablement le plus simple s'il est installé et que vous avez la permission de l'utiliser

51
Michael Mrozek
$ whoami 

Cette commande imprime l'utilisateur actuel. Pour changer d'utilisateur, nous devrons utiliser cette commande (suivie du mot de passe de l'utilisateur):

$ su secondUser
Password:

Après avoir entré le mot de passe correct, vous serez connecté en tant qu'utilisateur spécifié (que vous pouvez vérifier en réexécutant whoami.

25
Ashish Saini

Si vous utilisez Ubuntu et si l'utilisateur auquel vous souhaitez vous connecter n'a pas de mot de passe défini:

Sudo su - username

Entrez votre propre mot de passe et vous devriez être configuré. Bien sûr, cela nécessite que votre utilisateur dispose des droits pour obtenir les privilèges root avec Sudo.

17
Sundae

Pour basculer la session de terminal vers un autre utilisateur, où cet utilisateur ne peut pas revenir en arrière vers l'utilisateur d'origine, utilisez exec:

$ | # exec su - [nom d'utilisateur]

Ceci connectera techniquement le nouvel utilisateur dans un nouveau processus de terme et fermera celui en cours. De cette façon, lorsque l'utilisateur tente de quitter ou Ctrl-D, le terminal se ferme comme si cet utilisateur était celui qui l'a instancié, c'est-à-dire que l'utilisateur ne peut pas revenir dans le terme de l'utilisateur d'origine. Un peu inutile, étant donné qu'ils peuvent toujours simplement démarrer une nouvelle session de terminal et être automatiquement dans le terme utilisateur d'origine, mais ça y est.

EDIT: pour ce que cela vaut, vous pouvez utiliser la commande linux vlock dans votre ~/.bashrc pour verrouiller les sessions de terminal par défaut, nécessitant le mot de passe du terme utilisateur de session pour déverrouiller. Cela empêcherait quelque peu le terme susmentionné de redémarrer dans le contexte utilisateur d'origine, étant donné que le terme n'est pas instancié en utilisant le ~/.bashrc non par défaut de l'utilisateur, tel qu'il est configuré.

9
SYANiDE

Sudo -iu <your_username> pour moi fais le tour

3
andilabs

Soyons clairs: vous êtes connecté en tant qu'utilisateur A et souhaitez vous "connecter" en tant qu'utilisateur B pour exécuter certaines commandes, mais souhaitez revenir à l'utilisateur A une fois terminé. Par souci de simplicité, je suppose que vous souhaitez exécuter ls -l/tmp en tant qu'utilisateurB. Si vous voulez pas vouloir quitter le shell actuel de UserA mais plutôt exécuter une commande en tant que UserB et toujours rester connecté en tant que UserA, vous devez le faire:

su - UserB -c "ls -l /tmp"   <-- Just an example

Cela suppose que vous connaissez le mot de passe pour UserB. Cependant, si vous ne connaissez pas le mot de passe de UserB, vous devez connaître le mot de passe root. Alors:

Sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

Si vous préférez vous connecter temporairement en tant que UserB pour exécuter de nombreuses commandes, faites simplement:

Sudo su - UserB

Cela vous donnera un nouveau Shell pour UserB (vérifiez cela en tapant id). Une fois terminé, vous pouvez faire ctrl-d et revenir à votre connexion.

2
Hopping Bunny

Un autre moyen consiste à lancer un nouveau Shell en tant qu'utilisateur différent (non root) pour exécuter des commandes en tant qu'utilisateur.

ubuntu@aws-ip:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork

Un exemple de ceci est l'utilisateur mongodb. Lors du déploiement d'un cluster MongoDB fragmenté, tous les processus nécessaires doivent s'exécuter en tant que mongodb et il n'est pas nécessaire (ou tout à fait pratique) de démonifier les processus à l'aide de scripts init pour des dizaines de nœuds.

2
azatar

Si vous devez exécuter une seule commande, vous pouvez utiliser Sudo: Sudo -u username command

1
Maksim Luzik