chsh: «Вы не можете изменить оболочку для 'username'».

chsh: «Вы не можете изменить оболочку для 'username'».

Я пытаюсь изменить оболочку по умолчанию для своего пользователя. Но я продолжаю получать эту ошибку:

$ chsh
You may not change the shell for 'flimm'.
$ chsh -s "$(which bash)"
You may not change the shell for 'flimm'.

Я пытаюсь понять, почему я не могу изменить оболочку для своего пользователя.

решение1

Поскольку вы подтвердили, что /usr/bin/chshэто setuid root (и, следовательно, должно позволять непривилегированным пользователям изменять свою собственную оболочку входа), наиболее вероятным объяснением такого поведения является то, что либо

  • Ваша текущая оболочка входа отсутствует в файле /etc/shells

или

  • ваша текущая оболочка входа была ограничена (скорее всего /bin/rbash)

Бывший.

$ grep fish /etc/shells || echo "invalid shell"
invalid shell
$ 
$ sudo chsh -s /usr/bin/fish testuser
$ 
$ su - testuser
Password:
Welcome to fish, the friendly interactive shell
testuser@t400s ~> chsh -s /bin/bash
You may not change the shell for 'testuser'.
testuser@t400s ~> exit

Обратите внимание, что на установку пользователем root недействительной оболочки входа пользователя (как здесь) не накладывается никаких ограничений, и это не делает недействительную оболочку действительной путем добавления ее в файл /etc/shells.

$ sudo chsh -s /bin/rbash testuser
$     
$ su - testuser
Password:
testuser@t400s:~$
testuser@t400s:~$ chsh
You may not change the shell for 'testuser'.
testuser@t400s:~$ exit

Еслицельshell отсутствовал в файле /etc/shells, вы бы получили другое сообщение:

$ sudo chsh -s /bin/bash testuser
$ 
$ su - testuser
Password:
testuser@t400s:~$ chsh -s /usr/bin/fish
Password:
chsh: /usr/bin/fish is an invalid shell

решение2

Вы можете попробовать команду sudo usermod -s /bin/bash flimm

решение3

Оболочка входа пользователя хранится в /etc/passwdи защищена от изменения обычными пользователями. Вы можете увидеть ее с помощью getent passwd $USER.
Если ваша новая оболочка указана в /etc/shells, вы можете изменить ее с помощью:

sudo chsh -s $(type -p bash) $USER

Как и при любых манипуляциях с данными для входа, обязательно имейте сеанс входа на другом терминале ( Ctrl-Alt-F3) на случай, если вы что-то сломаете и не сможете войти в систему.

Связанный контент