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?
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.
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
$ 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
.
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
.
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é.
Sudo -iu <your_username>
pour moi fais le tour
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.
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.
Si vous devez exécuter une seule commande, vous pouvez utiliser Sudo: Sudo -u username command