Как переключаться между пользователями на одном терминале?

Я бы хотел войти в систему как другой пользователь, не выходя из текущего (на том же терминале). Как это сделать?

385 голосов | спросил Tshepang 27 +04002010-10-27T23:38:50+04:00312010bEurope/MoscowWed, 27 Oct 2010 23:38:50 +0400 2010, 23:38:50

9 ответов


438

Как использовать команду su?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

Если вы хотите войти в систему под именем root, нет необходимости указывать имя пользователя:

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

Как правило, вы можете использовать sudo для запуска новой оболочки в качестве пользователя, которого вы хотите; флаг -u позволяет указать имя пользователя, которое вы хотите:

$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2

Есть более обходные способы, если у вас нет доступа sudo, например, ssh username @ localhost, но sudo, вероятно, прост, при условии, что он установлен, и у вас есть разрешение на его использование.

ответил Pratt 27 +04002010-10-27T23:58:12+04:00312010bEurope/MoscowWed, 27 Oct 2010 23:58:12 +0400 2010, 23:58:12
38

Как правило, вы используете sudo для запуска новой оболочки в качестве пользователя, которого хотите; флаг -u позволяет указать имя пользователя, которое вы хотите:

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

Есть более обходные способы, если у вас нет доступа к sudo, например ssh [email protected], но я думаю, что sudo, вероятно, самый простой, если он установлен, и у вас есть разрешение на его использование

ответил Michael Mrozek 27 +04002010-10-27T23:41:24+04:00312010bEurope/MoscowWed, 27 Oct 2010 23:41:24 +0400 2010, 23:41:24
15
$ whoami 

Эта команда печатает текущего пользователя. Чтобы изменить пользователей, мы должны будем использовать эту команду (за которой следует пароль пользователя):

$ su secondUser
Password:

После ввода правильного пароля вы войдете в систему как указанный пользователь (который вы можете проверить с помощью повторного использования whoami.

ответил Ashish Saini 28 J000000Monday14 2014, 09:50:05
7

Если вы используете Ubuntu, и если пользователь, которого вы хотите войти в систему, не имеет набора пароля:

sudo su - username

Введите свой собственный пароль, и вы должны быть установлены. Конечно, это требует, чтобы ваш пользователь имел права на получение прав root с помощью sudo.

ответил Sundae 11 J0000006Europe/Moscow 2015, 09:40:10
7

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

  

$ | # exec su - [имя пользователя]

Это приведет к техническому вхождению нового пользователя в новый процесс term и закрытию текущего. Таким образом, когда пользователь попытается выйти или Ctrl-D, терминал закроется, как если бы этот пользователь был тем, кто его создал, т. Е. Пользователь не может выйти обратно в исходный пользовательский термин. Какой-то бессмысленный, учитывая, что они все еще могут начать новый сеанс терминала и автоматически войти в исходный логин пользователя, но там он.

EDIT: Для чего это стоит, вы можете использовать команду linux vlock в вашем ~ /.bashrc для блокировки сеансов терминала по умолчанию, требуя разблокировать пароль пользователя сеанса сеанса. Это несколько предотвратило бы перезапуск вышеупомянутого термина в исходном контексте пользователя, поскольку этот термин не создается с использованием нестандартного ~ /.bashrc пользователя, как это было настроено.

ответил SYANiDE 24 +04002014-10-24T03:51:05+04:00312014bEurope/MoscowFri, 24 Oct 2014 03:51:05 +0400 2014, 03:51:05
1

Еще один маршрут - запустить новую оболочку в качестве другого (не root) пользователя для запуска команд в качестве этого пользователя.

[email protected]:~$ sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ mongod --configsvr --dbpath /data/configdb --fork

Примером этого является пользователь mongodb. При развертывании осколочного кластера MongoDB все необходимые процессы должны выполняться как mongodb, и нет необходимости (или совершенно удобного) для демонтизации процессов с использованием сценариев инициализации для десятков узлов.

ответил toszter 28 PMpThu, 28 Apr 2016 18:22:07 +030022Thursday 2016, 18:22:07
1

sudo -iu <your_username> для меня делает трюк

ответил andilabs 24 Maypm16 2016, 12:17:10
1

Давайте получим это правильно: вы вошли в систему как UserA и хотите «войти» в качестве UserB для запуска некоторых команд, но хотели бы вернуться в UserA по завершении. Для простоты я предполагаю, что вы хотите запустить ls -l /tmp как UserB. Если вы not хотите оставить текущую оболочку 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 и вернуться к своему логину.

ответил Hopping Bunny 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 07 Sep 2016 10:10:55 +0300 2016, 10:10:55
-1
~$ sudo login

Затем он предложит вам пароль sudo (текущий пароль пользователя).

Также: убедитесь, что текущий пользователь находится в файле sudoers!

ответил Tshepo 27 Maypm15 2015, 18:16:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132