Answers:
使用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
如果已安装并且您有权使用它,则可能是最简单的。
su - [user]
可能很有用-多余的破折号为您提供了登录shell。
echo >>/dev/stderr
在使用进行登录时执行此命令后,出现“ -su:/ dev / stderr:权限被拒绝”错误su --login ...
,提示?我发现这个BTW unix.stackexchange.com/questions/38538/...
env
它时,发现一切都井井有条,而且可以目视检查。一件事是不正确的: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
〜/ .Xauthority`文件是:-rw-------
。我做了一个副本,然后让我运行gedit作为实验。
通常,您可以使用sudo
所需的用户身份来启动新的shell。该-u
标志可让您指定所需的用户名:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
如果您没有sudo访问权限,则还有更多circuit回的方法,例如ssh username@localhost
,但我认为,sudo
如果已安装并且您有权使用它,那可能是最简单的方法
sudo -s
给您一个shell su
,sudo -i
模拟登录su -
。-u $user
当然可以结合使用。
$ whoami
此命令显示当前用户。要更改用户,我们将必须使用以下命令(随后输入用户密码):
$ su secondUser
Password:
输入正确的密码后,您将以指定的用户身份登录(可以通过重新运行进行检查whoami
。)
要将终端会话切换到其他用户(该用户不能退出原来的用户),请使用exec:
$ |#exec su-[用户名]
从技术上讲,这将在新的任期流程中登录新用户,并关闭当前用户。这样,当用户尝试退出或按Ctrl-D时,终端将关闭,就像该用户是实例化该终端的用户一样,即,用户无法退出到原始用户的术语中。毫无意义,考虑到他们仍然可以启动新的终端会话并自动使用原始用户术语登录,但是确实如此。
编辑:对于它的价值,您可以在〜/ .bashrc中使用linux vlock命令来默认锁定终端会话,这需要术语会话用户的密码才能解锁。假设未使用用户的非默认〜/ .bashrc实例化该术语,则这将在某种程度上阻止上述术语在原始用户上下文下重新启动。
让我们正确地说:您以UserA身份登录,并希望以UserB身份“登录”以运行一些命令,但是希望在完成后返回UserA。为了简单起见,我假设您要以UserB身份运行ls -l / tmp。如果你不希望留下用户A的当前shell而是运行一个命令,用户B和仍保持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的新外壳(通过输入id进行检查)。完成后,您可以执行ctrl-d并返回您的登录名。
如果只需要运行一个命令,则可以使用sudo:
sudo -u username command
$XDG_RUNTIME_DIR
尤其是)使我发疯的问题。-> unix.stackexchange.com/questions/354826/…–