користувач не існує в / etc / passwd при спробі змінити оболонку за замовчуванням


22

Я хочу змінити стандартну оболонку з tcsh на bash. Тому я спробував, і ось що сталося:

>sudo chsh userid
Changing the login shell for userid
Enter the new value, or press ENTER for the default
        Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd

Дійсно, я не в / etc / passwd. Я не знаю чому.

Що я можу зробити?


11
Чи використовує ваша система розподілену автентифікацію (наприклад, kerberos / winbind)? У такому випадку ваші дані користувача не відображатимуться у локальному файлі / etc / passwd (але мають бути видимими, використовуючи getent passwd <userid>). Я думаю, що чи chshпідтримується біг у такому випадку, може залежати від налаштувань/etc/pam.d/
steeldriver

Відповіді:


15

Мій комп'ютер є частиною мережі, що використовує розподілену автентифікацію, тому мої дані користувачів не відображатимуться у локальному файлі / etc / passwd (але видно за допомогою getent passwd userid). (дякую @steeldriver) У моєму випадку мені довелося зробити chsh на основній машині.


11
Ви можете пояснити, що таке "основна машина"?
Неррве

У моєму випадку я маю на увазі набір спеціалізованих машин, що надаються університетом всередині їхньої мережі, на які студенти можуть увійти та використовувати (спільно використовувати). На відміну від власної машини в моєму кабінеті.
rmp251

4
@ rmp251 Це точно мій сценарій. У мене немає доступу до основної машини. Ви знайшли спосіб змінити оболонку інакше?
Geek

@Geek Ви знайшли спосіб, як це вирішити?
мілушов

13

Існує рішення щодо gnome-terminal:

  1. Перейдіть до редагування -> Налаштування профілю -> Назва та команда
  2. Поставте прапорець Запустити власну команду замість моєї оболонки
  3. Введіть bashяк спеціальну команду (або fish, або що-небудь)

Спасибі! Подання команди запустити негайно, коли я відкриваю свій термінал (або нову вкладку терміналу) через налаштовані для мене налаштування.
какодер

Це також працює для Konsole та yakuake в KDE.
xgdgsc

6

Якщо ви використовуєте автентифікацію LDAP за допомогою PAM або щось подібне, вам потрібно знайти свою відповідь у своєму сервері LDAP. Давайте націлимо його на Microsoft AD, у цьому випадку ваш обліковий запис домену не входить /etc/passwdпід час входу, але ви можете бачити власність користувача в AD, від getent passwd | grep user.

Якщо в кінці він показує, що ваша оболонка є /bin/csh, це тому, що у вашому AD є атрибут для цього. Тож якщо у вас є обліковий запис адміністратора в AD, ви можете виправити його самостійно. В іншому випадку просто скажіть своєму адміністратору AD, щоб увімкнути попередні функції на вкладці « Вид » активних користувачів каталогів та комп'ютерів> Властивості користувачів> Атрибути UNIX . Там ви можете змінити оболонку для входу /bin/bash.

Не забудьте запустити:

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

Джерело: Користувача не існує в / etc / passwd при спробі змінити оболонку за замовчуванням .


1
Питання полягало в тому, щоб змінити оболонку для одного користувача, тоді як pbis config змінити для всіх користувачів.
kubanczyk

5

Якщо ви хочете змінити оболонку для свого користувача, вам не потрібно ставати root. Просто введіть:

chsh

без sudoі без аргументів.


Дивіться також man chsh:

Команда chsh змінює оболонку входу користувача. Це визначає назву
початкової команди входу користувача. Звичайний користувач може змінити лише
оболонка для входу для власного рахунку ; суперпользователь може змінити логін
оболонки для будь-якого рахунку.

Причиною, що я користувався судо, було те, що без нього нічого не обійшлося. > whoami userid > chsh You may not change the shell for 'userid'.
rmp251

Причина цього працює в тому, що chsh не працює з kerberos
Lennart Rolland

2

Якщо ви забули своє ім’я користувача, ви можете скористатися whoamiкомандою, щоб запам'ятати вас.

Отже, спробуйте:

sudo chsh $(whoami)

Якщо дійсно не існує рядка, що починається з вашого імені користувача у /etc/passwdфайлі (що здається незрозумілим), ви можете додати новий, як цей:

ім'я користувача : x: 1000: 1000: ваше справжнє ім'я ,,,: / home / username : / bin / bash

Дивіться також: Розуміння / etc / passwd Формат файлу .


1
Однією з причин того, що ваш користувач може не існувати в / etc / passwd, це якщо автентифікація не обробляється на цій машині (наприклад, ldap)
MatrixManAtYrService

1

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

ssh my-host -t "zsh --login"

або

ssh my-host -t "cd /data/repos; zsh --login"

Якщо ви також хочете увійти безпосередньо в інший робочий каталог.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.