zaLinux.ru

Как в Linux изменить login shell (оболочку входа в систему). Инструкция по команде chsh


Для чего нужен login shell

Вход в систему обрабатывается оболочкой и другими инструментами, например, сам login или ваш диспетчер рабочего стола (с помощью PAM и различных других инструментов).

Назначение оболочки входа не в том, чтобы обрабатывать вход в систему, а в том, чтобы вести себя соответствующим образом как первая оболочка в сеансе входа в систему: в основном это означает обработку файлов запуска, которые должны обрабатываться только один раз за сеанс входа, и защиту сеанса входа в систему от нежелательных взаимодействие с некоторыми функциями системы (в частности, приостановка работы).

Особенности оболочки входа, по крайней мере, реализованной в Bash, заключаются в следующем:

  • оболочка входа в систему обрабатывает команды из /etc/profile, затем первый файл, который она находит среди ~/.bash_profile, ~/.bash_login и ~/.profile (если только это не интерактивная оболочка входа, запущенная без параметра --login);
  • при выходе из оболочки входа выполняется logout вместо exit;
  • выход из оболочки входа в систему прерывает все задания;
  • оболочку входа нельзя приостановить;
  • оболочка входа устанавливает переменную HOME (кроме POSIX-корректного режима);
  • оболочка входа устанавливает параметр оболочки login_shell.

С практической точки зрения, выбранная оболочка входа в систему определяет оболочку, которая используется для пользователя по умолчанию. Хотя конечно, ничто не мешает запустить любую другую установленную в вашей системе оболочку.

Смотрите также: Различия между Login shell и Non login shell (оболочка с входом и оболочка без входа)

Как узнать, какие оболочки установлены в системе

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

Один из способов узнать правильные названия оболочек и пути до исполнимых файлов — это запустить следующую команду:

chsh -l

Но предыдущая команда срабатывает не на всех дистрибутивах (работает на Arch Linux, но не работает на производных Debian).


Поэтому можно воспользоваться универсальным методом — посмотреть содержимое файла /etc/shells:

cat /etc/shells

В файле shells собраны пути к действующим оболочкам входа.

/etc/shells — это текстовый файл, который содержит полные пути к действующим оболочкам входа. Этот файл просматривается программой chsh и доступен для запроса другими программами.

Имейте в виду, что есть программы, которые обращаются к этому файлу, чтобы узнать, является ли пользователь обычным пользователем; например, демоны FTP традиционно запрещают доступ пользователям с оболочками, не включёнными в этот файл.

Программа для смены оболочки пользователя — chsh

chsh — измените оболочку входа пользователя на постоянной основе.

Если вы временно хотите изменить шелл, то установите его и запустите. Примеры команд запуска различных оболочек:

sh
bash
pwsh
dash
zsh

chsh используется для изменения оболочки входа в систему. Если оболочка не указана в командной строке, chsh запрашивает её.

chsh поддерживает нелокальные записи (kerberos, LDAP и т.д.), если они связаны с libuser, в противном случае используйте ypchsh, lchsh или любую другую реализацию для нелокальных записей.

Синтаксис команды:

sudo chsh -s ОБОЛОЧКА

В качестве ОБОЛОЧКИ нужно указать одну из оболочек, как они перечислены в файле /etc/shells.


chsh примет полный путь к любому исполняемому файлу в системе.

Поведение по умолчанию для пользователей без полномочий root — принимать только оболочки, перечисленные в файле /etc/shells, и выдавать предупреждение для пользователя root. Его также можно настроить во время компиляции, чтобы выдавать предупреждение только для всех пользователей.

Смена оболочки с помощью usermod

Утилита usermod с опцией -s меняет оболочку указанного пользователя.

Например, чтобы заблокировать пользователя root, используйте следующую команду:

sudo usermod -s /usr/sbin/nologin root

Чтобы назначить пользователю root оболочку Bash:

sudo usermod -s /usr/bin/bash root

Чтобы назначить пользователю root оболочку ZSH:

sudo usermod -s /usr/bin/zsh root

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *