Подробный гайд: Проверка текущей оболочки в Astra Linux
В Astra Linux, как и в других дистрибутивах Linux, важно различать оболочку входа по умолчанию (login shell) и фактически запущенную оболочку в текущем сеансе. Ниже приведены все основные способы проверки, их технические нюансы и рекомендации по использованию в среде Astra Linux (Common Edition и Special Edition).
1. Через переменную окружения $SHELL
echo $SHELL
Что показывает:
Путь к оболочке, назначенной пользователю как оболочка входа по умолчанию. Значение задаётся при создании учётной записи и хранится в переменных окружения.
Важный нюанс:
Переменная $SHELL не обновляется автоматически, если вы вручную запустили другую оболочку. Например, находясь в bash, вы запустили zsh → echo $SHELL всё равно вернёт /bin/bash.
Пример вывода:
/bin/bash
2. Через системную базу /etc/passwd
grep "^$(whoami):" /etc/passwd
Или (рекомендуется для корпоративных сред с LDAP/AD):
getent passwd $(whoami)
Что показывает:
Последнее поле в строке пользователя — это login shell, прописанная в системной базе учётных записей.
Пример вывода:
user:x:1000:1000:User:/home/user:/bin/bash
Почему getent предпочтительнее:
В Astra Linux SE часто используется интеграция с доменными службами (FreeIPA/AD). getent запрашивает данные через NSS (Name Service Switch), поэтому покажет актуальную оболочку даже если она хранится не в локальном /etc/passwd.
3. Через текущий процесс оболочки
Если нужно узнать, какая оболочка фактически работает в открытом терминале:
ps -p $$
Или:
echo $0
Что показывает:
ps -p $$выводит информацию о процессе с PID текущего интерпретатора ($$= PID текущей оболочки).echo $0выводит имя исполняемого файла. Префикс-(например,-bash) означает, что оболочка запущена как login shell.
Пример вывода ps -p $$:
PID TTY TIME CMD
2841 pts/0 00:00:00 zsh
Сравнительная таблица методов
| Команда | Что показывает | Когда использовать |
|---|---|---|
echo $SHELL |
Оболочка по умолчанию (из окружения) | Быстрая проверка, написание скриптов |
getent passwd $(whoami) |
Системная login shell (локальная/сетевая) | Администрирование, аудит, проверка реальных настроек |
ps -p $$ / echo $0 |
Текущий запущенный процесс | Отладка, проверка вложенных сеансов, su/sudo сессий |
Особенности Astra Linux
| Версия | Особенности работы с оболочками |
|---|---|
| Common Edition (CE) | По умолчанию: /bin/bash. Полная свобода смены через chsh или usermod. |
| Special Edition (SE) | В рамках мандатного контроля доступа (Parsec) могут применяться: • Ограниченные оболочки ( /bin/rbash)• Кастомные entry-скрипты • Запрет на запуск нестандартных интерпретаторов через политики безопасности |
Проверка разрешённых оболочек:
cat /etc/shells
Только пути, указанные в этом файле, считаются валидными для входа. PAM и утилита chsh блокируют установку оболочек, отсутствующих в списке.
Как изменить оболочку пользователя
# От имени пользователя (если разрешено политиками)
chsh -s /bin/zsh
# От root (для любого пользователя)
sudo usermod -s /bin/bash username
Внимание:
В Astra Linux SE изменение оболочки может требовать дополнительных прав или быть ограничено мандатными политиками. Всегда проверяйте /etc/shells и логи аудита (/var/log/audit/audit.log или seadmin log).
Дополнительно
echo $SHELL→ быстро, но показывает только настроенную оболочку.getent passwd $(whoami)→ надёжно для аудита и enterprise-сред.ps -p $$илиecho $0→ точно показывает текущий рабочий интерпретатор.- В Astra Linux SE учитывайте политики безопасности и мандатный контроль: доступные оболочки могут быть ограничены системными профилями.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.