Ідентифікатор користувача
Ідентифікатор користувача (англ. User ID або user identifier) – ідентифікатор користувача в операційній системі Unix та їй подібних. Зберігається в облікових записах користувачів в файлі паролів (/etc/passwd
).
Операційна система розпізнає користувача саме за його UID (а не, наприклад, за логіном). UID також використовується в мета-даних файлів і процесів, завдяки чому система взмозі визначити їх належність окремому користувачеві.
В багатьох[скільки?] ОС існує можливість створювати два облікові записи користувача з різними логінами, але однаковими UID; в результаті два логіни мають однакові права, оскільки з точки зору системи вони не відрізняються, бо мають однаковий UID. Цим можуть зловживати шахраї: проникнувши в систему та отримавши права root, зловмисник може створити собі обліковий запис UID=0, щоб потім повертатися в систему під логіном, не викликаючи підозри.
Величина допустимих значень UID залежить від системи; загалом UID допускає використання значень від 0 до 65535 з деякими винятками:
- Суперкористувач завжди має UID, що дорівнює (0).
- Користувачу nobody зазвичай присвоюється найбільший серед можливих UID (протилежний суперкористувачу), або один із системних UID.
- UID з 1 по 100 за згодою зарезервовані для потреб системи; деякі посібники рекомендують резервувати UID з 101 по 499 (в Red Hat) або навіть 999 (в Debian).
Ідентифікатор збереженого користувача
Ідентифікатор збереженого користувача (suid
) використовується коли програма, яка працює з підвищеними привілеями тимчасово потребує зробити непривілейовану роботу: змінює euid
з привілейованого значення (зазвичай root
) на певний непривілейований та робить копію привілейованого ідентифікатора користувача в слот suid
. Пізніше, він може встановити свій euid
назад до suid
(непривілейований процес може задати euid
тільки три значення: ruid
, fsuid
та euid
, - тобто без змін) щоб відновити свої привілеї.
Ідентифікатор користувача файлової системи
Linux також має ідентифікатор користувача файлової системи (fsuid
) який використовується спеціально для доступу до контролю файлової системи. Він збігається із euid
, якщо не спеціально встановлений інакше. Це може бути ідентифікатор суперкористувача тільки якщо ruid
, suid
та euid
є суперкористувачами. Якщо був змінений euid
, то ці зміни поширюються і на fsuid
.
Мета fsuid
дозволяти програмам (напр. NFS сервер) лімітувати самих себе у правах відносно файлової системи певними наданими uid
без надання цьому uid
дозволу надсилати їм сигнали. Починаючи з kernel 2.0, використання fsuid
не є необхідністю тому, що Linux дотримується правил надсилання сигналів SUSv3, проте fsuid
залишається з міркувань сумісності.
Ідентифікатор реального користувача
Ідентифікатор реального користувача (ruid
) і ідентифікатор реальної групи (rgid
) визначають реального власника процесу і впливають на права для передачі сигналів. Процес без прав суперкористувача може сигналізувати іншому процесу, тільки якщо відправники реальний або чинний UID збігаються з реальним або збереженим UID отримувача. Оскільки дочірні процеси успадковують повноваження від батьківського, вони можуть сигналізувати один одному.