С чего начать Первые шаги трек · 15 ступеней
Linux Labs

nologin — оболочка, отказывающая во входе

4 мин Ubuntu 24.04; Bash 5.2 for shell builtins

Программа для поля login shell: сообщает об отказе и завершается вместо открытия интерактивной оболочки.

Шпаргалка

5 команд Версия для печати
  • getent passwd labsvc проверить поле оболочки
  • id labsvc посмотреть UID и группы
  • type -a nologin найти установленную программу
  • /usr/sbin/nologin получить отказ, без смены shell
  • printf '%s\n' "$?" сразу прочитать ненулевой статус

Обзор

nologin — программа, используемая вместо login shell: при обычном вызове она отказывает во входе и завершается с ненулевым статусом. Это полезно для служебной учётной записи, которой не нужна интерактивная оболочка.

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

Ключи

2

Основной сценарий — указать путь программы в поле оболочки пользователя. Ключи самой программы для этого не требуются: у неё есть только --help и --version, остальной вызов всегда завершается отказом. Проверь путь на своей системе, прежде чем менять запись; в учебных примерах используется /usr/sbin/nologin.

Не смешивай программу с файлом /etc/nologin и механизмом PAM для ограничения входов. Это разные интерфейсы. Для справки именно о программе используй man 8 nologin.

Ключ Что делает Пример
-h --help Показать краткую справку и завершиться (не отказ во входе). /usr/sbin/nologin -h
-V --version Показать версию программы и завершиться. /usr/sbin/nologin -V

Ничего не найдено. Попробуй запрос короче.

Рецепты

3

Назначить оболочку учебной записи

Только для заранее подготовленной labsvc, если изменение входит в задание:

bash
sudo usermod -s /usr/sbin/nologin labsvc
getent passwd labsvc

Проверь последнее поле записи. Это проверка настройки; вывод о конкретном способе удалённого доступа требует отдельной проверки соответствующей службы.

Проверить отказ самой программы

bash
/usr/sbin/nologin
refusal_status=$?
printf 'status=%s\n' "$refusal_status"

Сообщение может зависеть от локали и настройки системы. Для учебного наблюдения существенны отказ и ненулевой статус, а не точная фраза на экране.

Проверить границу ограничения

При разрешённой политике sudo:

bash
sudo -u labsvc id

Успешный запуск показывает, что выполнение команды от UID и открытие login shell — разные действия. Он не доказывает возможность входа по SSH и не снимает ограничения оболочки.

Неполадки

2

Служба работает, хотя shell запрещён

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

Команда от пользователя всё ещё разрешена через sudo

Проверь правила sudo. Назначение nologin не отменяет выданные там разрешения. В задаче отзыва доступа эти механизмы проверяются отдельно.

Опасно

Не назначай nologin своей единственной административной записи. Не меняй глобальные файлы ограничения входа ради одной учебной записи.

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

См. также

  • users-groups — поля учётной записи.
  • chage — окончание срока действия записи.
  • sudo — разрешения на выполнение отдельных команд.
  • systemd — запуск служб от служебных пользователей.
Загрузка…