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

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

Как насчет использования команды 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 , пожалуй, самый простой, при условии, что он установлен, и у вас есть разрешение на его использование.

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

 [mrozekma@etudes-1 ~] % whoami mrozekma [mrozekma@etudes-1 ~] % sudo -u nobody zsh [nobody@etudes-1 ~] % whoami nobody 

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

 $ whoami 

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

 $ su secondUser Password: 

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

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

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

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

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

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

 sudo su - username 

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

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

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

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

 ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc... mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork 

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

 ~$ sudo login 

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

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