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

16

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

Я знаю, что, например, Jenkinsустановлен в Ubuntu не пользователь, а учетная запись службы .

  1. Что такое использование сервисной учетной записи?
  2. Когда они нам нужны?
  3. Как я могу создать учетную запись службы?
Rudziankoŭ
источник

Ответы:

18

Учетные записи пользователей используются реальными пользователями, учетные записи служб используются системными службами, такими как веб-серверы, почтовые агенты транспорта, базы данных и т. Д. По договоренности и только по договоренности учетные записи служб имеют идентификаторы пользователей в низком диапазоне, например <1000 или около того , За исключением UID 0, учетные записи служб не имеют никаких особых привилегий. Сервисные учетные записи могут - и обычно имеют - собственные ресурсы, даже специальные файлы устройств, но у них нет прав суперпользователя.

Учетные записи служб могут быть созданы как обычные учетные записи пользователей (например , с помощью useradd). Однако учетные записи служб обычно создаются и настраиваются диспетчером пакетов после установки служебного программного обеспечения. Таким образом, даже будучи администратором, вы редко должны быть напрямую связаны с созданием учетных записей служб.

По уважительной причине: в отличие от учетных записей пользователей, учетные записи служб часто не имеют «правильной» оболочки входа в систему, то есть они имеют в /usr/sbin/nologinкачестве оболочки входа в систему (или, как в старые времена, /bin/false). Кроме того, учетные записи служб , как правило , блокируется, т.е. не представляется возможным вход в системе (для традиционных /etc/passwdи /etc/shadowэто может быть достигнуто путем установки хэша пароля на произвольные значения , такие как , *или x). Это необходимо для защиты учетных записей служб от злоупотреблений ( глубокая защита ).

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

countermode
источник
4

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

Вскоре люди обнаружили, что было удобно создавать нескольких пользователей системы, без широких привилегий. Это позволяет изолировать различные службы, работающие на машине, чтобы они не наступали друг другу на ноги. Учетная запись службы (или «системная учетная запись», эти два термина являются синонимами) - это учетная запись, которая соответствует службе, работающей в системе, а не тому, кто ее использует. Как правило, у вас есть служебная учетная запись для каждой задачи, работающей в системе, которая имеет собственный набор привилегий (например, свои собственные файлы, свои сетевые порты и т. Д.).

Формального определения «человек против системы / службы» не существует. Ядру это безразлично (кроме предоставления пользователю большого количества привилегий с UID 0). Большинству административных команд это тоже не важно. Некоторые типичные различия:

  • Пользователь-человек имеет настоящее имя, например «Джон Доу», а системный пользователь имеет описательное имя, например «Демон носа», или его нет вообще.
  • У человека-пользователя есть настоящая оболочка для входа (например, /bin/shили /bin/bashили /bin/csh. У некоторых системных пользователей есть оболочка (почти всегда /bin/sh), у других ее нет, в зависимости от того, как они предназначены для использования (например, su fooтребуется fooналичие оболочки).
  • У человека-пользователя часто есть пароль, но это не всегда так, например, у пользователя с удаленным доступом может быть только SSH-ключ. Обратите внимание, что в современных Unix пароль находится не в, /etc/passwdа в каком-то другом файле, например /etc/shadow.
  • Домашний каталог пользователя обычно находится в /home(или в каком-то определенном для сайта месте), тогда как домашний каталог пользователя системы обычно не находится /homeи может не существовать (но есть исключения).
  • Большинство сайтов назначают диапазон идентификаторов пользователей для пользователей системы и несвязанный диапазон для пользователей. Резервирование 100–65533 или 500–65533 или 1000–65533 является типичным, и большинство распределений настроены так, чтобы начать распределение реальных идентификаторов пользователя от 500 или 1000.

На сайтах, где учетные записи совместно используются несколькими компьютерами, обычно существует центральный сервер, содержащий списки пользователей, доступные через NIS или LDAP . passwdЗапись в /etc/nsswitch.confспецифицируешь , где найти информацию о пользователе. Обычно системные пользователи являются локальными /etc/passwdи реальными пользователями из базы данных всей сети, но иногда в базе данных сети есть системные пользователи (для обеспечения согласованных UID, что облегчает репликацию сервера и данных), а иногда пользователи в локальном файле (чтобы позволить им войти в систему, даже если сеть подключена).

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

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

Жиль "ТАК - прекрати быть злым"
источник
3
    1. учетная запись службы, или техническая учетная запись, - это учетная запись, предназначенная для использования только службой / приложением, а не обычным пользователем.
    1. Разработчики приложений и служб хотят, чтобы эти учетные записи ограничивали права и привилегии связанных процессов вместо того, чтобы запускать свои процессы как root. Услуги , как созданные init, systemdили подобные, которые работают в качестве корня, быстро вернуться к использованию учетной записи службы для ограничения рисков. В зависимости от используемой ОС учетные записи приложений могут получить больше привилегий, чем обычные учетные записи, например, право привязываться к привилегированному порту TCP или наоборот, их привилегии могут быть уменьшены по сравнению с обычным пользователем, например, если процессам службы запрещается вызов fork/ exec. В этом случае нет необходимости переводить службы в учетную запись службы, их можно запускать с нее.
    1. Вам не нужно просто создавать учетную запись без используемого пароля и с нерабочей оболочкой (например /bin/false), и она не будет использоваться обычным пользователем, то есть не будет возможности войти в систему локально или удаленно (например, через ssh) используя имя учетной записи. Как и большинство ограничений, использование учетной записи root или sudoпозволяет ее преодолеть.
jlliagre
источник
1

Например, служебная учетная запись может не иметь возможности использовать оболочку. Он используется для выполнения сервисов (демонов) с ограниченными областями и привилегиями. Мое мнение таково, что вы можете создать его как обычный пользователь, просто следя за правами и членством в группах. Однако в большинстве случаев этого не происходит, поскольку программы автоматически создают их во время установки. Заглянуть в/etc/passwd root:x:0:0:root:/root:/bin/bash

0 - это UID, он характеризует иерархию учетной записи в пространстве пользователя, root выше всех, затем у вас есть членство :rootв группе, домашний каталог и, /rootнаконец, оболочка, используемая учетной записью /bin/bashдля входа в систему.

Вы можете использовать /usr/sbin/nologinучетную запись, для которой вы не хотите входить в систему.

Kuruwan
источник