В 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
;
su
sudo
su
Чтобы достичь желаемого результата, попробуйте выполнить все в одной команде:
sudo su - tomcat