Изначально пользователи должны были соответствовать человеку, использующему систему, отсюда и название. Каждый процесс выполняется как отдельный пользователь, и каждый файл принадлежит конкретному пользователю. Специальный пользователь, называемый 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.