Відповіді:
Як щодо використання 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 ...
будь-яким підказом? Я знайшов це btw 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
Є більш схематичні способи, якщо у вас немає доступу до судо, наприклад ssh username@localhost
, але я думаю, sudo
це, мабуть, найпростіше, якщо він встановлений і у вас є дозвіл на його використання
sudo -s
надає вам оболонку на зразок su
, sudo -i
імітує вхід у систему su -
. Можна поєднувати -u $user
, звичайно.
$ whoami
Ця команда друкує поточного користувача. Щоб змінити користувачів, нам доведеться використовувати цю команду (з наступним паролем користувача):
$ su secondUser
Password:
Після введення правильного пароля ви увійдете в систему як зазначений користувач (що ви можете перевірити, повторно запустившись whoami
.
Щоб переключити сеанс терміналу на іншого користувача, де цей користувач не може вийти назад у вихідного користувача, використовуйте exec:
$ | # exec su - [ім'я користувача]
Це технічно увійде нового користувача в новий термін, і закриє поточного. Таким чином, коли користувач намагається вийти або Ctrl-D, термінал закриється, як ніби саме той користувач був тим, хто його створив, тобто користувач не може вийти назад у початковий термін користувача. Вигляд безглуздий, враховуючи, що вони все ще можуть просто запустити новий термінальний сеанс і автоматично перейти в оригінальний логін користувача, але він є.
EDIT: Для того, що варто, ви можете використовувати команду llock vlock у ~ / .bashrc для блокування термінальних сеансів за замовчуванням, вимагаючи розблокувати пароль користувача термінальної сесії. Це дещо завадить перезапустити вищезазначений термін у початковому контексті користувача, враховуючи, що термін не є ініційованим, використовуючи невстановлений ~ / .bashrc користувача, як налаштовано.
Ще один шлях полягає у запуску нової оболонки як інший (некоріозний) користувач, який виконує команди як цей користувач.
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
Прикладом цього є mongodb
користувач. Під час розгортання ошаленого кластера MongoDB всі необхідні процеси повинні запускатися як mongodb
і не потрібно (або цілком зручно) демонструвати процеси, використовуючи скрипти init для десятків вузлів.
Давайте нам правильно це зробити: Ви увійшли в систему як 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 і повернутися до свого логіну.
Якщо вам потрібно виконати лише одну команду, ви можете використовувати sudo:
sudo -u username command
$XDG_RUNTIME_DIR
зокрема) змінних середовища XDG, які спричинили моє враження. -> unix.stackexchange.com/questions/354826/…