Ответы:
Как насчет использования 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, возможно, это самый простой способ, если он установлен и у вас есть разрешение на его использование.
su - [user]может быть полезно - дополнительная черта дает вам оболочку входа.
echo >>/dev/stderrпри входе в систему с su --login ...любой подсказкой? Я нашел это между прочим unix.stackexchange.com/questions/38538/…
envэто, увидела, что все было в порядке, а визуальный осмотр может пойти; И одна вещь была неправильно: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on ~ / .Xauthority` файл: -rw-------. Я сделал копию, и это позволило мне запустить gedit в качестве эксперимента.
Как правило, вы используете sudoдля запуска новой оболочки как пользователь, которого вы хотите; -uфлаг позволяет указать имя пользователя вы хотите:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
Есть более обходные способы, если у вас нет доступа к sudo, например ssh username@localhost, но я думаю, что sudo, вероятно, проще всего, если он установлен и у вас есть разрешение на его использование.
sudo -sдает вам оболочку как su, sudo -iимитирует логин как su -. Можно сочетать с -u $user, конечно.
$ whoami
Эта команда печатает текущего пользователя. Чтобы сменить пользователя, мы должны будем использовать эту команду (за которой следует пароль пользователя):
$ su secondUser
Password:
После ввода правильного пароля, вы войдете в систему как указанный пользователь (который вы можете проверить путем повторного запуска whoami.
Чтобы переключить сеанс терминала на другого пользователя, где этот пользователь не может вернуться обратно к исходному пользователю, используйте exec:
$ | # exec su - [имя пользователя]
Это технически войдет новый пользователь в новый процесс термина и закроет текущий. Таким образом, когда пользователь пытается выйти или Ctrl-D, терминал закрывается, как если бы этот пользователь был тем, кто его создал, то есть пользователь не может выйти обратно в исходный пользовательский термин. Это бессмысленно, учитывая, что они все еще могут просто начать новый сеанс терминала и автоматически войти в исходный пользовательский термин входа в систему, но это так.
РЕДАКТИРОВАТЬ: Для чего бы то ни было, вы можете использовать команду linux vlock в вашем ~ / .bashrc для блокировки терминальных сессий по умолчанию, требуя пароль пользователя терминальной сессии для разблокировки. Это в некоторой степени предотвратило бы перезапуск вышеупомянутого термина в исходном пользовательском контексте, учитывая, что термин не создается с использованием нестандартного ~ / .bashrc пользователя, как настроено.
Еще один способ - запустить новую оболочку от имени другого пользователя (не root) для запуска команд от имени этого пользователя.
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
Примером этого является mongodbпользователь. При развертывании сегментированного кластера MongoDB все необходимые процессы должны выполняться так, mongodbи нет необходимости (или не совсем удобно) демонизировать процессы с использованием сценариев инициализации для десятков узлов.
Давайте сделаем это правильно: вы вошли как пользователь A и хотите «войти» как пользователь B, чтобы выполнить некоторые команды, но хотели бы вернуться к пользователю A, когда закончите. Для простоты я предполагаю, что вы хотите запустить ls -l / tmp как UserB. Если вы не хотите покидать текущую оболочку UserA, а просто выполнить команду от имени UserB и по-прежнему оставаться в системе как UserA, вы должны сделать это:
su - UserB -c "ls -l /tmp" <-- Just an example
Предполагается, что вы знаете пароль для пользователя B. Однако, если вы не знаете пароль пользователя B, вам нужно знать пароль пользователя root. Затем:
sudo su - UserB -c "ls -l /tmp" <-- UserB's pw not needed here
Если вы предпочитаете временно войти в систему как UserB для запуска большого количества команд, то просто выполните:
sudo su - UserB
Это даст вам новую оболочку для UserB (проверьте это, введя id). Когда вы закончите, вы можете сделать Ctrl-D и вернуться к вашему логину.
Если вам нужно запустить только одну команду, вы можете использовать sudo:
sudo -u username command
$XDG_RUNTIME_DIRв частности), которые сводили меня с ума. -> unix.stackexchange.com/questions/354826/…