Вопрос или проблема
Я пытаюсь изменить оболочку по умолчанию для своего пользователя. Но я продолжаю получать эту ошибку:
$ chsh
Вы не можете изменить оболочку для 'flimm'.
$ chsh -s "$(which bash)"
Вы не можете изменить оболочку для 'flimm'.
Я пытаюсь понять, почему я не могу изменить оболочку для своего пользователя.
Поскольку вы подтвердили, что /usr/bin/chsh
имеет установленный бит setuid (и, следовательно, должен позволять непривилегированным пользователям изменять свою оболочку входа), наиболее вероятное объяснение такого поведения заключается в том, что либо
- ваша текущая оболочка входа не была в файле /etc/shells
или
- ваша текущая оболочка входа была ограничена (возможно,
/bin/rbash
)
Напр.
$ grep fish /etc/shells || echo "недопустимая оболочка"
недопустимая оболочка
$
$ sudo chsh -s /usr/bin/fish testuser
$
$ su - testuser
Пароль:
Добро пожаловать в fish, дружелюбную интерактивную оболочку
testuser@t400s ~> chsh -s /bin/bash
Вы не можете изменить оболочку для 'testuser'.
testuser@t400s ~> exit
Обратите внимание, что нет никаких ограничений для root в установке оболочки входа пользователя на недопустимую оболочку (как здесь), и это не делает недопустимую оболочку допустимой, добавляя ее в файл /etc/shells.
$ sudo chsh -s /bin/rbash testuser
$
$ su - testuser
Пароль:
testuser@t400s:~$
testuser@t400s:~$ chsh
Вы не можете изменить оболочку для 'testuser'.
testuser@t400s:~$ exit
Если бы целевая оболочка отсутствовала в файле /etc/shells, вы бы получили другое сообщение:
$ sudo chsh -s /bin/bash testuser
$
$ su - testuser
Пароль:
testuser@t400s:~$ chsh -s /usr/bin/fish
Пароль:
chsh: /usr/bin/fish является недопустимой оболочкой
Вы можете попробовать команду sudo usermod -s /bin/bash flimm
Оболочка входа пользователя хранится в /etc/passwd
, и защищена от изменения обычными пользователями. Вы можете увидеть ее с помощью getent passwd $USER
.
Если ваша новая оболочка перечислена в /etc/shells
, вы можете изменить ее с помощью:
sudo chsh -s $(type -p bash) $USER
Как и при любых манипуляциях с данными о входе, убедитесь, что у вас есть сессия входа на другом терминале (Ctrl-Alt-F3), на случай, если вы что-то испортите и не сможете войти.
Брат, люди должны сначала ставить отказы от ответственности, я по-настоящему сначала удалил zsh. Честно, почему бы вам не поставить команду на удаление сначала с отказыванием потом. Это как если бы кто-то застрелил вас в голову, а потом сказал вам, что собирается застрелить вас в голову… Пожалуйста, дайте отказы и предупреждения заранее,
Если бы я знал, что мне не следует вводить команду сначала и выполнять другую команду заранее, я бы этого не сделал. Теперь я здесь. Просто смешно, что человек поставил команды в обратном порядке, как будто их логическое мышление.
Это ведь не сложно.
Ответ или решение
Ошибка chsh: "Вы не можете изменить оболочку для 'имя_пользователя'" возникает, когда пользователь пытается изменить свою оболочку с помощью команды
chsh`, но не имеет на это разрешения. Данная ситуация может быть вызвана несколькими причинами. Рассмотрим основные из них:
Неизвестная оболочка
Необходимо убедиться, что целевая оболочка (например, /bin/bash
, /usr/bin/fish
) прописана в файле /etc/shells
. Этот файл содержит список всех допустимых оболочек, которые могут быть настроены для пользователей. Если оболочка не присутствует в этом списке, команда chsh
будет возвращать ошибку.
Пример проверки:
cat /etc/shells
Если нужная оболочка отсутствует, вы можете рассмотреть возможность её добавления в файл /etc/shells
, если у вас есть соответствующие права. Добавление права на использование оболочки может выглядеть следующим образом:
echo "/usr/bin/fish" | sudo tee -a /etc/shells
Ограниченная оболочка
Если ваша текущая оболочка является ограниченной (например, rbash
), это также может стать причиной появления данной ошибки. Ограниченные оболочки обеспечивают определенные ограничения по полностью взаимодействию с системой, что может включать в себя запрет на изменение оболочки.
Изменение оболочки с правами суперпользователя
Если у вас нет прав для изменения оболочки через обычную команду chsh
, рассмотрите возможность использования команды с правами суперпользователя:
sudo chsh -s /bin/bash ваше_имя_пользователя
Убедитесь также, что вы проверили текущую оболочку вашего пользователя с помощью:
getent passwd ваше_имя_пользователя
Это поможет вам убедиться, что вы внесли все изменения правильно.
Подготовка к потенциальным ошибкам
Перед изменением оболочки рекомендуется открыть дополнительный терминал (например, на TTY), чтобы иметь возможность зайти, если что-то пойдет не так. Это важное предостережение, особенно если вы работаете с оболочками, которые можете случайно удалить или изменить в процессе.
Заключение
При выполнении указанных шагов вы сможете устранить ошибку chsh: "Вы не можете изменить оболочку для 'имя_пользователя'"
. Убедитесь, что целевая оболочка действительно присутствует в списке допустимых оболочек, и используйте команду sudo
, если необходимо. В случае возникновения дальнейших трудностей возможно потребуется рассмотреть дополнительные настройки или обратиться за помощью к системному администратору.