Первоначально предполагалось, что пользователи будут соответствовать человеку, использующему систему, отсюда и название. Каждый процесс запускается от имени определенного пользователя, и каждый файл принадлежит определенному пользователю. Специальный пользователь, называемый root, используется для вещей, которые не принадлежат какому-либо конкретному пользователю-человеку, то есть для самой операционной системы. Поскольку root соответствует самой операционной системе, у нее есть все привилегии.
Вскоре люди обнаружили, что было удобно создавать нескольких пользователей системы без обширных привилегий. Это позволяет изолировать различные службы, работающие на машине, чтобы они не наступали друг другу на ноги. Учетная запись службы (или «системная учетная запись», эти два термина являются синонимами) - это учетная запись, которая соответствует службе, запущенной в системе, а не тому, кто ее использует. Обычно у вас есть служебная учетная запись для каждой задачи, выполняемой в системе, которая имеет свой собственный набор привилегий (например, свои собственные файлы, свои собственные сетевые порты и т. Д.).
Не существует формального определения учетной записи человека и системы / службы. Ядру все равно (кроме предоставления пользователю множества привилегий с UID 0).Большинству административных команд тоже наплевать. Вот некоторые типичные отличия:
/ bin / sh
или / bin / bash
или / bin / csh
). У некоторых пользователей системы есть оболочка (почти всегда / bin / sh
), другие - нет, в зависимости от того, как они предназначены для использования (например, su foo
требует, чтобы foo
есть оболочка). / etc / passwd
, но в каком-то другом файле, например / etc / shadow
. / home
(или на каком-то сайте - определенное местоположение), тогда как домашний каталог пользователя системы обычно не находится в / home
и может не существовать (но есть исключения). На сайтах, где учетные записи используются на нескольких машинах, обычно имеется центральный сервер, содержащий списки пользователей, доступные через NIS или LDAP . Запись passwd
в /etc/nsswitch.conf
указывает, где найти информацию о пользователе.Обычно системные пользователи находятся в локальном / etc / passwd
, а реальные пользователи - в общесетевой базе данных, но иногда есть системные пользователи в общесетевой базе данных (для обеспечения согласованности UID, что упрощает сервер и репликация данных), а иногда в локальном файле есть пользователи-люди (чтобы они могли войти в систему, даже когда сеть закрыта).
Доступная для человека учетная запись, замаскированная под системного пользователя, обычно не имеет настоящего имени, но имеет оболочку входа в систему и либо установленный пароль, либо ключ SSH, а идентификатор пользователя находится в системном диапазоне. Фактически, было бы лучшей маскировкой использовать реальную системную учетную запись, удаление которой привело бы к прекращению работы какой-либо службы. Но у вас не может быть никаких жестких правил для обнаружения потенциальных атак: злоумышленники по определению не соблюдают правила.
Учетные записи служб и учетные записи людей управляются одними и теми же командами и записываются в одни и те же файлы. Команды создания учетной записи могут иметь параметры для установки разумных значений по умолчанию для людей и пользователей службы, например для выбора идентификатора пользователя в правильном диапазоне, а также для запроса пароля для человека и отключения аутентификации по паролю для службы. Например, adduser
vs adduser --system
или useradd
vs useradd -r
в Linux.