Увійдіть як некористувач у терміналі


18

Це питання, на яке я б сподівався швидко отримати відповідь від google. Однак якимось чином Google не вдається мені. Припустимо, що я увійшов до термінальної сесії, і я хотів би тимчасово працювати іншим некористувальним користувачем, пароль якого я знаю, не виходячи з сеансу. Коли я входив у систему як цей користувач, я хочу, щоб домашній каталог тощо був для цього користувача правильно налаштований до мого виходу. Як це зробити?

я намагався

su -- username

а потім, ввівши пароль, це не призвело до помилок, але я не побачив видимих ​​змін у командному рядку, він все одно скаже myname @ myhost. Домашній каталог також був мій ім'ям, а не новим входом, в який я намагався увійти.

Я - як очевидно зараз - досить недосвідчений у linux / Ubuntu, тому будь-яка інформація вітається.

Відповіді:


18

До якого користувача ви хочете змінити?

Проблема полягає в тому, що ви намагаєтеся "вступити" в користувача, який не має призначеної йому оболонки. Більшість користувачів, таких як mysql, pulse тощо, створених системою або деякими пакунками при встановленні програмного забезпечення, не присвоєні оболонки.

Ви можете перевірити, чи є у користувача призначена оболонка, переглянувши /etc/passwdфайл, просто подивіться в кінці рядка кожного користувача, якщо він говорить, що /bin/falseце означає, що у нього немає призначеної оболонки, якщо вона має щось подібне /bin/bashчи будь-який інший оболонки, тоді ви повинні мати можливість "су" у цього користувача.

Коли я кажу "призначена оболонка", це в основному означає, що вона має "доступ до оболонки"

все ж якщо користувач не має доступу до оболонки, ви завжди можете виконувати команди, як і цей користувач

 sudo -u user command

все ж, якщо користувач не має доступу до оболонки, ви завжди можете виконувати команди як "користувач sudo -u команда"
Sam

Додайте -s /bin/bashдо своєї suкоманди або використовуйте chsh -u username -s /bin/bashдля зміни оболонки для користувача. Остерігайтеся наслідків для безпеки, які це може мати.
gertvdijk

7

якщо у вас є доступ до судо, я б рекомендував

sudo su username -

Це в основному те саме, але вимагає, щоб ви знали свій пароль, а не інші користувачі.

однак якщо у вас є пароль інших користувачів:

su username - повинен працювати просто чудово.

помітьте 1 - і це в кінці.


Якось обидва описані вами способи поводяться точно так само, як і моє - команда приймається без помилок, але домашній каталог невірний, і підказка говорить, що я все ще є початковим користувачем. Якщо я вийду після цього, вийду повністю.
Андрій Савіних

Гаразд, чи користувач, який увійшов у систему, дозволений для входу? Ви можете заблокувати вхід в обліковий запис, встановивши їх оболонку на "справжню", і це буде робити саме так, як ви описали. Це використовувалося багато в обліковому записі "системного" типу "apache" та "ftp". Щоб перевірити, sudo cat /etc/passwdНЕ ВСТУПУЙТЕ ЗМІСТ ТУТ. Просто очне яблуко і переконайтеся, що у користувача справжня оболонка як остання шматочка їх лінійки.
coteyr

1
бічна примітка, більш правильний спосіб зробити це - встановити оболонку на "false", що призведе до помилки. Хоча деякі системи та акаунти все ще використовують істинні з технічних чи психозахисних причин (щоб погіршити соплі від wana-be-хакерів)
coteyr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.