Відповіді:
Як щодо використання 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/…