пользователь не существует в / etc / passwd при попытке изменить оболочку по умолчанию

Я хочу изменить оболочку по умолчанию с 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. Я не знаю почему.

Что я могу сделать?

21
задан 23 February 2014 в 02:43

7 ответов

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

0
ответ дан 23 February 2014 в 02:43

Существует обходное решение для gnome-terminal:

  1. Перейдите к Редактированию-> предпочтения Профиля-> Заголовок и Команда
  2. Проверьте Выполнение пользовательская команда вместо моей оболочки
  3. Обеспечить bash как команда Custom (или fish, или что-либо)
12
ответ дан 23 February 2014 в 02:43

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

chsh

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


См. также man chsh:

The chsh command changes the user login shell. This determines the name
of the user's initial login command. A normal user may only change the
login shell for her own account; the superuser may change the login
shell for any account.
0
ответ дан 23 February 2014 в 02:43

Если вы используете аутентификацию LDAP с помощью PAM или чего-то еще, вы должны найти свой ответ на своем сервере LDAP, давайте настроим его для Microsoft AD, в этом случае ваша учетная запись домена не находится в / etc / passwd, когда вы входите в систему, но Вы можете увидеть свое свойство пользователя в AD, #getent passwd | grep user, если в конце он показывает, что ваша оболочка - / bin / csh, это потому, что в вашей AD есть атрибут для этого, так что если у вас есть учетная запись администратора в AD, вы можете исправить это самостоятельно, в противном случае просто скажите это своей AD администратора, чтобы включить расширенные функции на вкладке «Вид» пользователей и компьютеров Active Directory> свойства пользователя> атрибуты UNIX> измените оболочку входа на / bin / bash

, убедитесь, что вы не забыли: sudo / opt / pbis / bin / config LoginShellTemplate / bin / bash

, если вы использовали аналогичным образом или ...

сделано! http://fereidonian.net/?p=52

0
ответ дан 23 February 2014 в 02:43

Если вы забыли свое имя пользователя, вы можете использовать команду whoami, чтобы запомнить вас.

Итак, попробуйте:

sudo chsh $(whoami)

Если действительно, не существует строки, начинающейся с вашего имени пользователя в файле /etc/passwd (что кажется необъяснимым), вы можете добавить новую, например :

username:x:1000:1000:your real name,,,:/home/username:/bin/bash

См. Также: Понимание формата файла / etc / passwd .

0
ответ дан 23 February 2014 в 02:43

Если Вы пробуете к ssh в удаленный хост с пользователем домена, Вы не смогли изменять свою оболочку с помощью chsh как @Masoud упомянутый. Но вот простое обходное решение для этого случая - каждый раз, когда Вы ssh в машину, сделайте это:

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

или

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

, Если Вы также хотите войти в систему непосредственно в другой рабочий dir

0
ответ дан 16 November 2019 в 12:18

На моей машине используется аутентификация LDAP, и у меня нет доступа к серверу. Таким образом, мой обходной путь состоял в том, чтобы изменить переменную $SHELL на zsh в конце моего файла .bashrc. $SHELL=/bin/zsh $SHELL Поэтому для меня, когда я открываю терминал, bash открывает zsh.

3
ответ дан 12 July 2020 в 23:06

Другие вопросы по тегам:

Похожие вопросы: