chsh: “Вы не можете изменить оболочку для ‘username’.”

Вопрос или проблема

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

$ 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, если необходимо. В случае возникновения дальнейших трудностей возможно потребуется рассмотреть дополнительные настройки или обратиться за помощью к системному администратору.

Оцените материал
Добавить комментарий

Капча загружается...