Как проверить, установлена ли определенная оболочка (shell) для пользователя в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять стандартную оболочку (shell) для определенного пользователя в Linux. Оболочка (shell) представляет собой интерпретатор командной строки, который обрабатывает ваши команды, и разные пользователи могут иметь разные стандартные оболочки.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/help -.-> lab-558766{{"Как проверить, установлена ли определенная оболочка (shell) для пользователя в Linux"}} linux/man -.-> lab-558766{{"Как проверить, установлена ли определенная оболочка (shell) для пользователя в Linux"}} linux/cat -.-> lab-558766{{"Как проверить, установлена ли определенная оболочка (shell) для пользователя в Linux"}} end

Проверка оболочки пользователя с помощью команды cat /etc/passwd

На этом этапе вы научитесь проверять стандартную оболочку (shell) для пользователя в Linux. Оболочка (shell) представляет собой интерпретатор командной строки, который обрабатывает ваши команды. Разные пользователи могут иметь разные стандартные оболочки.

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

Мы можем использовать команду cat для отображения содержимого файла /etc/passwd.

Если терминал еще не открыт, откройте его. Помните, что вы можете найти значок Xfce Terminal слева на рабочем столе.

Теперь введите следующую команду и нажмите Enter:

cat /etc/passwd

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

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

labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh

Поля имеют следующие значения:

  1. Имя пользователя (Username): labex
  2. Заполнитель пароля (Password placeholder): x (фактический хэш пароля хранится в другом месте для обеспечения безопасности)
  3. Идентификатор пользователя (User ID - UID): 5000
  4. Идентификатор группы (Group ID - GID): 5000
  5. Информация о пользователе (GECOS): LabEx user,,,
  6. Домашний каталог (Home Directory): /home/labex
  7. Стандартная оболочка (Default Shell): /usr/bin/zsh

В данном случае стандартной оболочкой для пользователя labex является /usr/bin/zsh. Это подтверждает, что текущий терминал, который вы используете, действительно zsh.

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

Нажмите Продолжить (Continue), чтобы перейти к следующему шагу.

Перечисление доступных оболочек с помощью команды chsh -l

На предыдущем этапе вы увидели, что вашей стандартной оболочкой (shell) является /usr/bin/zsh. Но какие еще оболочки доступны в этой системе?

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

Команда chsh обычно используется для изменения оболочки входа (login shell) пользователя, но опция -l позволяет перечислить оболочки, перечисленные в файле /etc/shells. Этот файл содержит список допустимых оболочек входа в системе.

В терминале введите следующую команду и нажмите Enter:

chsh -l

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

/bin/sh
/bin/bash
/usr/bin/rc
/usr/bin/rbash
/usr/bin/nologin
/bin/false
/usr/bin/zsh
/usr/bin/ksh
/usr/bin/dash

Вы можете увидеть /usr/bin/zsh в этом списке, что подтверждает, что это допустимая оболочка в этой системе. Также вы можете увидеть другие распространенные оболочки, такие как /bin/bash (Bourne Again SHell) и /bin/sh (Bourne SHell).

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

Нажмите Продолжить (Continue), чтобы перейти к следующему шагу.

Проверка оболочки с помощью команды getent passwd

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

Команда getent представляет собой утилиту, которая получает записи из баз данных Name Service Switch (NSS), которые могут включать /etc/passwd, /etc/group и другие. Это более стандартизованный способ получения информации о пользователях по сравнению с прямым чтением файла /etc/passwd, так как он также может запрашивать сетевые базы данных пользователей.

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

getent passwd labex

Эта команда специально запрашивает запись для пользователя labex из базы данных passwd. Вывод будет похож на строку, которую вы видели при использовании команды cat /etc/passwd:

labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh

Снова последнее поле /usr/bin/zsh подтверждает, что стандартной оболочкой для пользователя labex является /usr/bin/zsh.

Использование команды getent часто предпочтительнее в скриптах или при запросах к системам, которые могут использовать централизованные системы аутентификации (например, LDAP), а не только локальные файлы. Для простых проверок на локальной системе работают как команда cat /etc/passwd, так и команда getent passwd <username>.

Теперь вы успешно использовали три разных метода для изучения оболочек пользователей в Linux: прямое просмотр файла /etc/passwd, перечисление доступных оболочек с помощью команды chsh -l и запрос информации о пользователе с помощью команды getent.

Нажмите Продолжить (Continue), чтобы завершить этот практический урок.

Резюме

В этом практическом уроке вы узнали, как проверить стандартную оболочку (shell) пользователя в Linux. Вы использовали команду cat /etc/passwd для отображения информации о пользователях, с особым вниманием к последнему полю каждой строки, которое указывает на стандартную оболочку. Этот метод представляет собой прямой способ определения оболочки, настроенной для любого пользователя в системе, путем изучения структуры файла /etc/passwd.