Я задал похожий вопрос, потому что столкнулся с проблемами с переменными среды XDG ( $XDG_RUNTIME_DIRв частности), которые сводили меня с ума. -> unix.stackexchange.com/questions/354826/…
Как правило, вы можете использовать sudoдля запуска новой оболочки как пользователь, которого вы хотите; -uфлаг позволяет указать имя пользователя вы хотите:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
Существуют более замысловатые способы, если у вас нет доступа к sudo, например, ssh username @ localhost, но sudo, возможно, это самый простой способ, если он установлен и у вас есть разрешение на его использование.
Кроме того, su - [user]может быть полезно - дополнительная черта дает вам оболочку входа.
Эфимент
Я получаю эту ошибку "-su: / dev / stderr: В доступе отказано" после выполнения этой команды echo >>/dev/stderrпри входе в систему с su --login ...любой подсказкой? Я нашел это между прочим unix.stackexchange.com/questions/38538/…
Водолей Power
Позволяет ли это каждому новому пользователю иметь разные, переопределяющие значения для переменных среды? например, git config для работы, с открытым исходным кодом и т. д.
Кевин Саттл
Одна находка, когда я перечислил envэто, увидела, что все было в порядке, а визуальный осмотр может пойти; И одна вещь была неправильно: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on ~ / .Xauthority` файл: -rw-------. Я сделал копию, и это позволило мне запустить gedit в качестве эксперимента.
будет
1
если вы получаете «Эта учетная запись в данный момент недоступна»: su -s / bin / bash - www-data
max4ever
47
Как правило, вы используете sudoдля запуска новой оболочки как пользователь, которого вы хотите; -uфлаг позволяет указать имя пользователя вы хотите:
Есть более обходные способы, если у вас нет доступа к sudo, например ssh username@localhost, но я думаю, что sudo, вероятно, проще всего, если он установлен и у вас есть разрешение на его использование.
Что если в моей системе нет ни ssh-сервера, ни sudo? Можете ли вы упомянуть эту часть в ответе?
Чепанг
хорошо, Пратт ответил, что один
tshepang
4
sudo -sдает вам оболочку как su, sudo -iимитирует логин как su -. Можно сочетать с -u $user, конечно.
Эфимент
гораздо эффективнее возможность "войти в систему" как пользователь, который не может нормально войти, является большим преимуществом ...! полностью позволил мне запустить экземпляр базы данных, не шутя с разрешениями или selinux
Феликс Ганьон-Гренье
21
$ whoami
Эта команда печатает текущего пользователя. Чтобы сменить пользователя, мы должны будем использовать эту команду (за которой следует пароль пользователя):
$ su secondUser
Password:
После ввода правильного пароля, вы войдете в систему как указанный пользователь (который вы можете проверить путем повторного запуска whoami.
Чтобы переключить сеанс терминала на другого пользователя, где этот пользователь не может вернуться обратно к исходному пользователю, используйте exec:
$ | # exec su - [имя пользователя]
Это технически войдет новый пользователь в новый процесс термина и закроет текущий. Таким образом, когда пользователь пытается выйти или Ctrl-D, терминал закрывается, как если бы этот пользователь был тем, кто его создал, то есть пользователь не может выйти обратно в исходный пользовательский термин. Это бессмысленно, учитывая, что они все еще могут просто начать новый сеанс терминала и автоматически войти в исходный пользовательский термин входа в систему, но это так.
РЕДАКТИРОВАТЬ: Для чего бы то ни было, вы можете использовать команду linux vlock в вашем ~ / .bashrc для блокировки терминальных сессий по умолчанию, требуя пароль пользователя терминальной сессии для разблокировки. Это в некоторой степени предотвратило бы перезапуск вышеупомянутого термина в исходном пользовательском контексте, учитывая, что термин не создается с использованием нестандартного ~ / .bashrc пользователя, как настроено.
Примером этого является 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 и вернуться к вашему логину.
$XDG_RUNTIME_DIR
в частности), которые сводили меня с ума. -> unix.stackexchange.com/questions/354826/…Ответы:
Как насчет использования
su
команды?Если вы хотите войти в систему как пользователь root, вам не нужно указывать имя пользователя:
Как правило, вы можете использовать
sudo
для запуска новой оболочки как пользователь, которого вы хотите;-u
флаг позволяет указать имя пользователя вы хотите:Существуют более замысловатые способы, если у вас нет доступа к 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
флаг позволяет указать имя пользователя вы хотите:Есть более обходные способы, если у вас нет доступа к sudo, например
ssh username@localhost
, но я думаю, чтоsudo
, вероятно, проще всего, если он установлен и у вас есть разрешение на его использование.источник
sudo -s
дает вам оболочку какsu
,sudo -i
имитирует логин какsu -
. Можно сочетать с-u $user
, конечно.Эта команда печатает текущего пользователя. Чтобы сменить пользователя, мы должны будем использовать эту команду (за которой следует пароль пользователя):
После ввода правильного пароля, вы войдете в систему как указанный пользователь (который вы можете проверить путем повторного запуска
whoami
.источник
Если вы используете Ubuntu, и если пользователь, которому вы хотите войти, не имеет установленного пароля:
Введите свой пароль, и вы должны быть установлены. Конечно, это требует, чтобы у вашего пользователя были права на получение привилегий root
sudo
.источник
Чтобы переключить сеанс терминала на другого пользователя, где этот пользователь не может вернуться обратно к исходному пользователю, используйте exec:
Это технически войдет новый пользователь в новый процесс термина и закроет текущий. Таким образом, когда пользователь пытается выйти или Ctrl-D, терминал закрывается, как если бы этот пользователь был тем, кто его создал, то есть пользователь не может выйти обратно в исходный пользовательский термин. Это бессмысленно, учитывая, что они все еще могут просто начать новый сеанс терминала и автоматически войти в исходный пользовательский термин входа в систему, но это так.
РЕДАКТИРОВАТЬ: Для чего бы то ни было, вы можете использовать команду linux vlock в вашем ~ / .bashrc для блокировки терминальных сессий по умолчанию, требуя пароль пользователя терминальной сессии для разблокировки. Это в некоторой степени предотвратило бы перезапуск вышеупомянутого термина в исходном пользовательском контексте, учитывая, что термин не создается с использованием нестандартного ~ / .bashrc пользователя, как настроено.
источник
sudo -iu <your_username>
для меня сделать трюкисточник
Еще один способ - запустить новую оболочку от имени другого пользователя (не root) для запуска команд от имени этого пользователя.
Примером этого является
mongodb
пользователь. При развертывании сегментированного кластера MongoDB все необходимые процессы должны выполняться так,mongodb
и нет необходимости (или не совсем удобно) демонизировать процессы с использованием сценариев инициализации для десятков узлов.источник
Давайте сделаем это правильно: вы вошли как пользователь A и хотите «войти» как пользователь B, чтобы выполнить некоторые команды, но хотели бы вернуться к пользователю A, когда закончите. Для простоты я предполагаю, что вы хотите запустить ls -l / tmp как UserB. Если вы не хотите покидать текущую оболочку UserA, а просто выполнить команду от имени UserB и по-прежнему оставаться в системе как UserA, вы должны сделать это:
Предполагается, что вы знаете пароль для пользователя B. Однако, если вы не знаете пароль пользователя B, вам нужно знать пароль пользователя root. Затем:
Если вы предпочитаете временно войти в систему как UserB для запуска большого количества команд, то просто выполните:
Это даст вам новую оболочку для UserB (проверьте это, введя id). Когда вы закончите, вы можете сделать Ctrl-D и вернуться к вашему логину.
источник
Если вам нужно запустить только одну команду, вы можете использовать sudo:
sudo -u username command
источник
Затем вам будет предложено ввести пароль sudo (текущий зарегистрированный пароль пользователя).
Также: убедитесь, что текущий пользователь находится в файле sudoers!
источник