пользователь не существует в / 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
задан 13.05.2020, 02:55

5 ответов

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

13
ответ дан 13.05.2020, 02:57
  • 1
    @rmp251 Это - точно мой сценарий. Я don' t имеют доступ к базовой машине. Вы находили способ изменить оболочку иначе? – Afraz Ahmad 13.05.2020, 02:57
  • 2
    можете Вы объяснять что " ядро machine"? – Picrasma 13.05.2020, 02:58
  • 3
    @Geek Вы находили путь, как решить его? – Pierre 13.05.2020, 02:58
  • 4
    В моем случае I' m относящийся к ряду выделенных машин, обеспеченных университетом в их сети, в которую студенты могут войти и использовать (совместно использованный). В противоположность моей собственной машине в моем офисе. – Casper 13.05.2020, 02:59

Существует обходной путь для gnome-terminal:

  1. Перейти к Редактировать -> Параметры профиля -> Название и команда [1110 ]
  2. Проверить Запустить пользовательскую команду вместо моей оболочки
  3. Предоставить bash в качестве Пользовательской команды (или fish, или что-нибудь еще). )
11
ответ дан 13.05.2020, 02:56

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

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

sudo chsh $(whoami)

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

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

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

2
ответ дан 13.05.2020, 02:56
  • 1
    Одна причина Ваш пользователь не мог бы существовать в/etc/passwd, состоит в том, если аутентификация не обрабатывается на той машине (например, ldap) – Roy M J 13.05.2020, 02:57

Если вы используете аутентификацию 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

5
ответ дан 13.05.2020, 02:57
  • 1
    Вопрос состоял в том, чтобы изменить оболочку для одного пользователя, тогда как pbis конфигурируют изменения для всех пользователей. – Kim Schroeder 13.05.2020, 02:57
  • 2
    Этот ответ имеет грамматические дефекты что я can' t видят, как зафиксировать (недостающие слова?) Кроме того, ссылка мертва. – mJehanno 13.05.2020, 02:58

Если вы хотите изменить оболочку для своего пользователя, вам не нужно становиться пользователем 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.
5
ответ дан 13.05.2020, 02:58
  • 1
    Причина я использовал sudo, состояла в том потому что он didn' t делают что-либо без него. > whoami userid > chsh You may not change the shell for 'userid'. – Bhavesh Gangani 13.05.2020, 02:58
  • 2
    Причина это работает, состоит в том, что chsh не работает с kerberos – nfriend21 13.05.2020, 02:59