Спочатку користувачі повинні були відповідати людині за допомогою системи, звідси і назва. Кожен процес працює як конкретний користувач, і кожен файл належить певному користувачеві. Спеціальний користувач, який називається root, використовується для речей, які не належать ні одному конкретному користувачеві, тобто самій операційній системі. Оскільки root відповідає самій операційній системі, він має всі привілеї.
Незабаром люди виявили, що було зручно створювати декількох користувачів системи, без великих пільг. Це дозволяє виділити різні служби, які працюють на машині, щоб вони не ступали на пальці ніг. Обліковий запис служби (або "системний рахунок", ці два терміни є синонімами) - це той, що відповідає службі, що працює в системі, а не тому, хто використовує систему. Зазвичай у вас є обліковий запис служби для кожної задачі, що працює в системі, яка має власний набір привілеїв (наприклад, власні файли, власні мережеві порти тощо).
Не існує офіційного визначення облікового запису людини проти системи / послуги. Ядро не хвилює (окрім надання користувачам багатьох привілеїв за допомогою UID 0). Більшість команд адміністрування теж не хвилює. Деякі типові відмінності:
- Людський користувач має справжнє ім’я, наприклад, «Джон Доу», тоді як користувач системи має описову назву, як «Демон носа» або взагалі жодна.
- Людський користувач має реальну оболонку для входу (наприклад,
/bin/sh
або /bin/bash
або /bin/csh
. Деякі користувачі системи мають оболонку (майже завжди /bin/sh
), інші - ні, залежно від способу використання (наприклад, su foo
необхідна foo
оболонка).
- Людський користувач часто має пароль - але це не завжди так, наприклад, у віддаленого користувача може бути лише ключ SSH. Зауважте, що в сучасних уніках пароль не в,
/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
vs adduser --system
або useradd
vs useradd -r
в Linux.