Ідентифікатор користувача

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Ідентифікатор користувача (англ. 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) of a process is the ownership assigned to files created by that process. The effective GID (egid) of a process may also affect file creation, depending on the semantics of the specific kernel implementation being used and possibly also by the mount options used. According to BSD Unix semantics, the group ownership given a newly created file is unconditionally inherited from the group ownership of the directory in which it is created. According to AT&T System 5 Unix semantics (also adopted by Linux variants) newly created files will normally be given the group ownership of the egid of the process that creates them. Редагую! Some filesystems may implement options for selecting at mount time whether BSD or AT&T semantics should be used regarding group ownership of newly created files. Refer to the pertinent specific implementation-dependent documentation for open and mount operations to learn of these nuances between implementations.

During file access, the kernel uses the effective UID and effective GID of the process to determine if it can access the file.

Ідентифікатор збереженого користувача[ред.ред. код]

Ідентифікатор збереженого користувача (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 отримувача. Оскільки дочірні процеси успадковують повноваження від батьківського, вони можуть сигналізувати один одному.

Див. також[ред.ред. код]