#1 楼
如何使用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。
–短暂
2010-10-27 20:40
在使用su --login登录时执行此命令echo >> / dev / stderr后,出现此错误“ -su:/ dev / stderr:权限被拒绝”。我发现这个顺便说一句unix.stackexchange.com/questions/38538 / ...
–水瓶座力量
2014年11月24日18:58
这是否使每个新用户都有不同的环境变量替代值?例如用于工作,开源等的git config
–凯文·索特尔
15年12月23日在21:13
一个发现,当我列出环境时,发现一切都井井有条,而且可以目视检查。一件事是不正确的:XAUTHORITY = / home / user1 / .Xauthority'。不确定_为什么_?因此X窗口默认情况下不起作用,因为〜/ .Xauthority`文件上的保护为:-rw -------。我做了一个副本,然后让我运行gedit作为实验。
–将
15/12/26在11:47
如果收到“此帐户当前不可用”:su -s / bin / bash-www-data
–max4ever
19 Mar 15 '19 at 12:19
#2 楼
通常,您使用sudo
以所需的用户身份启动新的外壳程序; -u
标志可让您指定所需的用户名:[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
如果您没有sudo访问权限,则还有更多circuit回方式,例如
ssh username@localhost
,但我认为sudo
是如果已安装并且您有权使用它,则可能是最简单的方法评论
如果我的系统既没有ssh服务器也没有sudo怎么办?你能在答案中提到那部分吗?
– tshepang
2010-10-27 19:52
好吧,普拉特回答说
– tshepang
10-10-27在20:01
sudo -s为您提供了一个像su这样的外壳,sudo -i模拟了像su-这样的登录。可以与-u $ user结合使用。
–短暂
2010-10-27 20:41
效率更高。能够以通常无法登录的用户身份“登录”是一项巨大的财富。完全允许我运行数据库实例而不会弄乱权限或selinux
–FélixGagnon-Grenier
16-10-12在15:01
#3 楼
$ whoami
此命令将打印当前用户。要更改用户,我们将必须使用此命令(随后输入用户密码):
$ su secondUser
Password:
输入正确的密码后,您将以指定的身份登录用户(您可以通过重新运行
whoami
进行检查。评论
如果您不懂事,就很有用。
–马可·苏拉(Marco Sulla)
15年6月24日在8:55
更好地真实测试密码(避免sudo)或新用户的行为。
– Peter Krauss
5月30日17:46
#4 楼
如果您正在运行Ubuntu,并且您要登录的用户没有设置密码:sudo su - username
输入您自己的密码,则应设置为。当然,这要求您的用户有权使用
sudo
获得root特权。#5 楼
要将终端会话切换到其他用户(该用户不能退出原来的用户),请使用exec:$ |#exec su-[用户名]
从技术上讲,这将在新的任期过程中登录新用户,并关闭当前用户。这样,当用户尝试退出或按Ctrl-D时,终端将关闭,就好像该用户是实例化该终端的用户一样,即,用户无法退出到原始用户的术语中。毫无意义,考虑到他们仍然可以开始新的终端会话并自动使用原始用户名登录,但是确实如此。
编辑:
对于它的价值,您可以默认情况下,在〜/ .bashrc中使用linux vlock命令锁定终端会话,需要使用术语会话用户的密码来解锁。如果未使用已配置的用户非默认〜/ .bashrc实例化该术语,则在某种程度上可以防止上述术语在原始用户上下文中重新启动。
评论
当您使用SSH连接并且希望将现有连接“交给”另一个用户而无需重新连接时,使用exec是一个很好的用例。我想知道在这方面是否存在安全漏洞。
–叶提
1月5日21:12
这是一个直接的流程分支;除了环境变量和路径外,新进程不应继承任何东西!哦,可能还有ssh-agent。 Envars和ssh-agent密钥环可能令人担忧!
– SYANiDE
1月13日21:18
#6 楼
sudo -iu <your_username>
对我有用吗#7 楼
还有另一种方法是以其他(非root)用户身份启动新的shell,以该用户身份运行命令。ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
mongodb
用户就是一个例子。部署分片的MongoDB集群时,所有必需的进程都必须以mongodb
运行,并且不必(或完全方便)使用init脚本来为数十个节点守护进程。#8 楼
让我们正确地说:您以UserA身份登录,并希望以UserB身份“登录”以运行一些命令,但是希望在完成后返回UserA。为了简单起见,我假设您要以UserB身份运行ls -l / tmp。如果您不想离开UserA的当前外壳,而是以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的新外壳(通过输入id进行检查)。完成后,您可以执行ctrl-d并返回您的登录名。
#9 楼
如果只需要运行一个命令,则可以使用sudo:sudo -u username command
#10 楼
~$ sudo login
,然后它会提示您输入sudo密码(当前登录的用户密码)。
另外:确保当前用户在sudoers文件中!
评论
问题是关于以其他用户身份登录。
– Minix
2015年5月27日15:38
评论
我问了类似的问题,因为我遇到了XDG环境变量(特别是$ XDG_RUNTIME_DIR)的问题,这些问题使我发疯。 -> unix.stackexchange.com/questions/354826 / ...