Что делает флаг --system для adduser?

Вопрос или проблема

Какова цель и польза использования опции --system при добавлении пользователя или даже группы?

Я хотел бы знать, почему я вижу это в большинстве Docker-контейнеров и это рекомендуется как наилучшая практика?

Для примера я добавляю непривилегированного пользователя в контейнер Docker на основе Alpine для использования при разработке и также для рабочего времени.

Текущие версии, которые я использую:

  • версия adduser – 3.118, и man adduser Alpine
  • версия Alpine – 3.12
  • Docker v19.03.13 на Windows 10 (обновление 20H2)

В мануале написано “Создать системного пользователя”, хорошо, но что вы получаете как системный пользователь? Или находясь в системной группе при использовании addgroup -S.

У меня нет опыта системного администратора, поэтому я не совсем понимаю, что это значит и хотел бы понять, когда мне следует использовать это?

Некоторое другое чтение

Поиск в Google дал некоторую информацию, но нет способа проверить, что я прочитал. То, что он не просит вас установить пароль для пользователя, но затем я могу использовать --disabled-password для этого.

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

В чем разница между обычным пользователем и системным пользователем?

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

  • У них нет срока действия (без выставленного срока)
  • Их UID ниже 999, как установлено в /etc/login.defs (можно изменить):

Также есть стандартные системные пользователи, которые идут с ОС или с установкой пакета, большинство из них имеют вышеуказанные атрибуты (Конвенциональные):

  • У большинства из них есть /sbin/nologin или /bin/false в качестве оболочки
  • У них есть “*” или “!!” в /etc/shadow, что означает, что никто не может просто использовать их.
  • И могут иметь атрибуты, которые я показал в первой части.

Чтобы проверить этот список стандартных системных пользователей: /usr/share/doc/setup-/uidgid

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

На Alpine Linux, adduser -S создаст системного пользователя, чей идентификатор пользователя начинается с 100, и который не может войти в систему:

kong:x:100:65533:Linux User,,,:/home/kong:/sbin/nologin

но это отличается без -S:

horward:x:1000:1000:Linux User,,,:/home/horward:/bin/ash

Ответ или решение

Флаг --system (или -S) в команде adduser используется для создания системного пользователя на операционных системах, таких как Alpine Linux. Этот флаг служит важной цели в управлении пользователями и группами в контексте безопасности и администрирования.

Что такое системный пользователь?

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

  1. UID ниже 1000: В большинстве дистрибутивов Linux, включая Alpine, системные пользователи имеют идентификаторы пользователей (UID) меньше 1000. Это позволяет разделить обычных пользователей и пользователей, предназначенных для системного обслуживания.

  2. Нет возможности интерактивного входа: Системные пользователи часто имеют в качестве оболочки /sbin/nologin или /bin/false, что предотвращает возможность их интерактивного использования. Это увеличивает уровень безопасности, так как снижает риск несанкционированного доступа.

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

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

Преимущества использования --system

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

  • Организация: Это позволяет трезво управлять пользователями и ресурсами в системе, особенно в контейнеризованных средах, таких как Docker, где практикуется использование минимальных образов.

  • Совместимость и стандарты: Системные пользователи (%system interaction or specific applications) часто предустановлены, что облегчает администрирование и совместимость различных приложений и служб.

Использование в Docker-контейнерах

В вашем контексте, использование флага --system и создание системного пользователя в Docker — это рекомендуемая практика. Это позволяет изолировать приложения, усовершенствовать безопасность контейнера и минимизировать потенциальные уязвимости. Например, пользователи, созданные в процессе сборки контейнера, могут быть исключены из интерактивного доступа и могут получать только необходимые привилегии для выполнения своей работы.

Заключение

Использование флага --system при создании пользователей и групп в системах, таких как Alpine Linux, способствует более безопасному и упорядоченному управлению учетными записями. Когда вы добавляете системного пользователя, вы обеспечиваете, что он получит необходимые атрибуты, которые будут удовлетворять требованиям вашей системы и обеспечивать безопасность, что особенно важно в средах Docker.

Оцените материал
Добавить комментарий

Капча загружается...