为什么 sudo su; su tomcat 没有切换到 tomcat 用户?

pra*_*nth 4 linux su sudo command

在红帽 linux 中。来自我的用户,如果我发出命令 sudo su -> 更改为 root su tomcat --> 更改为 tomcat 用户

为什么在单行中拖尾命令不起作用?须藤苏; su tomcat --> 仍然在 root 中。不切换到tomcat

use*_*517 14

命令

sudo su; su tomcat
Run Code Online (Sandbox Code Playgroud)

是两个命令。shell 将运行第一个,当它完成时将运行第二个。请注意,shell 不会将第二个命令作为参数传递给第一个命令。

当您退出第一个命令时,它将运行第二个

sudo su ; su tomcat
[sudo] password for iain:
root@host:iain]$ exit
exit
Password: <---- this is the prompt from the second su command.
Run Code Online (Sandbox Code Playgroud)

可以使用 sudo 直接过渡到 tomcat 用户

sudo -u tomcat <some command>
Run Code Online (Sandbox Code Playgroud)

或用于-s获取外壳,例如

whoami
iain
sudo -s -u tomcat 
whoami
tomcat
Run Code Online (Sandbox Code Playgroud)


bmk*_*bmk 5

当你用符号分割你的sudosu命令时,将在完成后执行。即在这种情况下,您以普通用户身份执行。;susudosu

为了达到你想要的结果,尝试在一个命令中执行整个:

sudo su - tomcat
Run Code Online (Sandbox Code Playgroud)

  • 并且你可能想确保你也继承了 `tomcat` 的环境;尝试`sudo su - tomcat`。 (2认同)