it-swarm.cn

如何在一个终端上的用户之间切换?

我想以其他用户身份登录而不注销当前用户(在同一终端上)。我怎么做?

535
tshepang

如何使用su命令?

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

如果要以root用户身份登录,则无需指定用户名:

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

通常,您可以使用Sudo以所需的用户身份启动新Shell。 -u标志可让您指定所需的用户名:

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

如果您没有Sudo访问权限,则还有更多circuit回的方法,例如ssh username @ localhost,但是Sudo可能是最简单的,前提是已安装且您有权使用它。

630
Pratt

通常,您使用Sudo以所需的用户身份启动新的Shell。 -u标志可让您指定所需的用户名:

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % Sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

如果您没有Sudo访问权限,则还有更多circuit回的方式,例如ssh [email protected],但我认为Sudo可能是最简单的(如果已安装并且您有权使用它)

51
Michael Mrozek
$ whoami 

此命令显示当前用户。要更改用户,我们将必须使用以下命令(随后是用户密码):

$ su secondUser
Password:

输入正确的密码后,您将以指定的用户身份登录(可以通过重新运行whoami进行检查。

25
Ashish Saini

如果您正在运行Ubuntu,并且您要登录的用户没有设置密码:

Sudo su - username

输入您自己的密码,您将被设置。当然,这要求您的用户有权使用Sudo获得root特权。

17
Sundae

要将终端会话切换到其他用户(该用户不能退出原来的用户),请使用exec:

$ |#exec su-[用户名]

从技术上讲,这将在新的任期流程中登录新用户,并关闭当前用户。这样,当用户尝试退出或按Ctrl-D时,终端将关闭,就好像该用户是实例化该用户的终端一样,即,用户无法退出到原始用户的术语中。毫无意义,考虑到他们仍然可以开始新的终端会话并自动使用原始用户术语登录,但是确实如此。

编辑:对于它的价值,您可以在〜/ .bashrc中使用linux vlock命令来默认锁定终端会话,这需要术语会话用户的密码才能解锁。鉴于未使用已配置的非默认用户〜/ .bashrc实例化术语,这将在某种程度上阻止上述术语在原始用户上下文下重新启动。

9
SYANiDE

Sudo -iu <your_username>对我来说有用

3
andilabs

让我们正确地说:您以UserA身份登录,并想以UserB身份“登录”以运行某些命令,但是希望在完成后返回UserA。为了简单起见,我假设您要以UserB身份运行ls -l/tmp。如果要not想要离开UserA的当前Shell,而是以UserB身份运行命令并仍然以UserA身份登录,则应执行以下操作:

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

假设您知道UserB的密码。但是,如果您不知道UserB的密码,则需要知道root密码。然后:

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

如果您希望暂时以UserB身份登录以运行许多命令,则只需执行以下操作:

Sudo su - UserB

这将为您提供一个新的UserB Shell(通过输入id进行检查)。完成后,您可以执行ctrl-d并返回您的登录名。

2
Hopping Bunny

另一种方法是以其他(非root)用户身份启动新Shell,以该用户身份运行命令。

[email protected]:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ mongod --configsvr --dbpath /data/configdb --fork

mongodb用户就是一个例子。部署分片的MongoDB集群时,所有必需的进程都必须以mongodb运行,并且不必(或完全方便)使用init脚本为数十个节点守护进程。

2
azatar

如果只需要运行一个命令,则可以使用Sudo:Sudo -u username command

1
Maksim Luzik