почему sudo su; su tomcat не переключает на пользователя tomcat?

почему sudo su; su tomcat не переключает на пользователя tomcat?

В Redhat Linux. Если я ввожу команду sudo su -> из моего пользователя, то он изменяет пользователя на root. su tomcat -> изменяет пользователя на tomcat.

Почему не работает отслеживание команд в одной строке? sudo su; su tomcat --> все еще в root. Не переключается на tomcat

решение1

Команды

sudo su; su tomcat

две команды. Оболочка запустит первую, а когда она завершится, запустит вторую. Обратите внимание, что оболочка не передает вторую команду в качестве аргумента первой команде.

При выходе из первой команды запустится вторая.

sudo su ; su tomcat
[sudo] password for iain:
root@host:iain]$ exit
exit
Password: <---- this is the prompt from the second su command.

Вы можете использовать sudo для прямого перехода к пользователю tomcat.

sudo -u tomcat <some command>

или используйте -s, чтобы получить оболочку, например

whoami
iain
sudo -s -u tomcat 
whoami
tomcat

решение2

Когда вы разделяете свои команды sudoи знаком , то они будут выполнены после того, как завершится . То есть в этом случае вы выполняете как обычный пользователь.su;susudosu

Чтобы достичь желаемого результата, попробуйте выполнить все в одной команде:

sudo su - tomcat

Связанный контент