3 способа изменить оболочку пользователя по умолчанию в Linux

Оболочка, или командный интерфейс, является важным компонентом операционной системы Linux, предоставляя пользователям мощный способ взаимодействия с системой.

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

Изменение основной оболочки пользователя может быть необходимым по различным причинам, таким как личные предпочтения или необходимость в определенных функциях, предлагаемых другой оболочкой.

В этой статье мы рассмотрим процесс изменения основной оболочки пользователя в Linux. Оболочка – это программа, которая принимает и интерпретирует команды; существует несколько оболочек с открытым исходным кодом, таких как bash, sh, ksh, zsh, fish, и множество других менее известных оболочек, доступных в Linux.

Оболочка Linux Bash

Bash (/bin/bash) является популярной оболочкой на большинстве, если не на всех дистрибутивах Linux, и обычно является основной оболочкой для учетных записей пользователей.

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

  • Чтобы блокировать или отключить обычные входы пользователей в Linux с использованием оболочки nologin.
  • Используйте оболочку-обертку или программу для регистрации команд пользователей перед тем, как они будут отправлены в оболочку для выполнения. Здесь вы указываете оболочку-обертку как оболочку входа пользователя.
  • Чтобы удовлетворить запросы пользователя (хочет использовать определенную оболочку), особенно тех, у кого есть административные права.

При создании учетных записей пользователей с помощью утилит useradd или adduser, флаг --shell может использоваться для указания имени оболочки входа пользователя, отличной от указанной в соответствующих конфигурационных файлах.

A login shell can be accessed from a text-based interface or via an SSH from a remote Linux machine. However, if you log in via a graphical user interface (GUI), you can access the shell from terminal emulators like xterm, konsole, and many more.

Список доступных оболочек в системе Linux

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

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

cat /etc/shells

Примерный вывод:

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

Прежде чем продолжить, обратите внимание, что:

  • A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
  • Только root может запускать оболочку, не указанную в файле /etc/shells.
  • Если у учетной записи установлена ограниченная оболочка входа, то только root может изменить оболочку этого пользователя.

Найти текущую оболочку в Linux

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

echo $SHELL

/bin/bash

Вывод показывает, что пользователь в настоящее время использует оболочку Bash (/bin/bash).

Изменение стандартной оболочки в Linux

Теперь давайте обсудим три разных способа изменить стандартную оболочку пользователя Linux.

1. Утилита usermod

Команда usermod используется для изменения деталей учетной записи пользователя, хранящихся в файле /etc/passwd, и опция -s или --shell используется для изменения оболочки входа пользователя.

В этом примере мы сначала проверим информацию об учетной записи пользователя tecmint, чтобы увидеть его стандартную оболочку входа, а затем изменим его оболочку входа с /bin/sh на /bin/bash следующим образом.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd
Change User Shell using Usermod

Теперь стандартная оболочка для пользователя “tecmint” будет изменена на bash.

2. Утилита chsh

Команда chsh используется для изменения стандартной оболочки входа пользователя интерактивно с использованием опции -s или –shell, как показано.

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd
Change User Shell Using chsh

Заменить “/bin/sh” на фактический путь к оболочке, которую вы хотите установить. Например, чтобы установить оболочку на sh, вы должны использовать “/bin/sh“.

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

Оба вышеуказанных метода изменяют оболочку, указанную в файле /etc/passwd, который вы можете редактировать вручную, как в третьем методе ниже.

3. Изменение пользовательской оболочки в файле /etc/passwd

В этом методе просто откройте файл /etc/passwd с помощью любого из ваших любимых текстовых редакторов командной строки и измените оболочку определенного пользователя.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd
Change User Shell in Passwd File

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

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

Последнее поле, /bin/bash, представляет стандартную оболочку (в данном случае, Bash).

Чтобы изменить значение поля оболочки на нужную оболочку, просто укажите путь к оболочке (/bin/zsh), как показано.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

После завершения редактирования сохраните и закройте файл.

Как установить другую оболочку?

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

Установка оболочки Zsh в Linux

Чтобы установить Zsh в Linux, используйте следующую соответствующую команду для вашего конкретного дистрибутива Linux.

sudo apt install zsh         [On Debian, Ubuntu and Mint]
sudo yum install zsh         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh  [On Gentoo Linux]
sudo apk add zsh             [On Alpine Linux]
sudo pacman -S zsh           [On Arch Linux]
sudo zypper install zsh      [On OpenSUSE]    

Установка Fish Shell в Linux

Для установки Zsh в Linux используйте следующую соответствующую команду для вашей конкретной Linux-дистрибуции.

sudo apt install fish         [On Debian, Ubuntu and Mint]
sudo yum install fish         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish  [On Gentoo Linux]
sudo apk add fish             [On Alpine Linux]
sudo pacman -S fish           [On Arch Linux]
sudo zypper install fish      [On OpenSUSE]    

Не забудьте прочитать эти связанные темы:

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

Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/