Ответы:
Как насчет использования 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/…