Я пытаюсь изменить свою оболочку по умолчанию на zsh. Мне поместили запись правильно в/etc/shells файле.
Каждая попытка, которую я предпринял с этой командой, закончилась тем же сообщением об ошибке:
chsh -s $(which zsh)
Password: ### after entering the correct password
chsh: PAM: Authentication failure
sudo chsh -s $(which zsh) ## yields the same result
Я использовал sudo для других команд, чтобы быть уверенным, что это не была ошибка пароля, и любая команда работала, но ничто не работает с "chsh".
Полностью озадаченный.
Дополнительная информация:
Я добавил строку на предложенный код Oli в/etc/shells файл.
echo $SHELL
/bin/bash
sudo chsh -s /usr/local/bin/zsh
Password:
chsh: PAM: Authentication failure
chsh -s /usr/local/bin/zsh
You may not change the shell for 'username'
Все еще не может изменить оболочку.
PAM имеет довольно трудное, держатся chsh
. Поскольку Вы видите форму /etc/pam.d/chsh
, это делает проверку:
# This will not allow a user to change their shell unless
# their current one is listed in /etc/shells. This keeps
# accounts with special shells from changing them.
auth required pam_shells.so
Существует также страница справочника для этой проверки (man pam_shells
) который говорит нам следующее:
pam_shells is a PAM module that only allows access to the system if the users shell is
listed in /etc/shells.
It also checks if /etc/shells is a plain file and not world writable.
Таким образом звуками его, у Вас нет a /usr/bin/zsh
строка в /etc/shells
. Давайте добавим тот:
echo $(which zsh) | sudo tee -a /etc/shells
chsh -s $(which zsh)
Или это или Ваша текущая оболочка не перечислены на там. Если Вы застреваете на чем-то как rbash
, это не могло бы быть перечисленным примером, и это могло бы мешать Вам изменить оболочку.
Я протестировал (удалил zsh
строка от /etc/shells
, загруженный zsh
и попробованный к chsh
) но видел совсем другое сообщение об ошибке:
You may not change the shell for 'oli'
Таким образом, это - вероятно, не это.
ситуация на моей домашней машине была /etc/shells
, не имел только многократных въездов /usr/bin/zsh
. Но и никакая запись /bin/zsh
.
тест which zsh | sudo tee -a /etc/shells
возвратил бы хороший результат.
редактирование краткого руководства по А так /bin/zsh
было связанной записью единственного zsh, был достаточно ничего для исправления.
После этого я сделал удаление /home/usr/.oh-my-zsh
каталог (я сохранил мой .zshrc
файл), и сделал полное, переустанавливают, и это удалило chsh проблему. Возможно, комбинация некоторых плохо oh-my-zsh файл и плохой файл оболочки создала ошибку?
В моем случае проблемой был мой пользователь, был создан без оболочки (никакая оболочка в passwd файле для моего пользователя). Я должен был изменить оболочку как корень.
Чтобы дополнить прекрасное объяснение Оли простым исправлением ошибки Вы не можете изменять оболочку для ошибки «имя пользователя»
, любезно предоставлено этот ответ :
# Set the shell for the current user to '/bin/bash' in this example,
# which works even if the current shell is (unexpectedly) not listed in '/etc/shells'.
sudo usermod --shell /bin/bash $USER