Як працюють справжні та ефективні ідентифікатори користувачів?


13

Коли звичайний користувач хоче змінити файл passwd, користувачеві через налаштування буде наданий ефективний доступ користувача. Користувач тимчасово стає root і може редагувати passwd.

Однак ви можете редагувати свій пароль правильно, а не всі інші? Однак ваш ефективний доступ користувача є кореневим. То чому ж вам заборонено змінювати інші паролі поруч із вашими?

Якщо ви запускаєте програму із встановленою програмою, що це означає насправді, коли ефективний користувач має root, але справжній ідентифікатор користувача все одно ваше ім’я?

Відповіді:


13

Ви не можете змінювати інші паролі, оскільки програма не дозволить вам це робити. У програмі є системні дозволи на зміну будь-якого потрібного пароля, оскільки він працює як root, але програма спеціально розроблена так, щоб не дати користувачеві жодного способу отримати його для використання цих прав.

Не зовсім те, що користувач тимчасово стає root, це те, що довірена програма працює з кореневими правами. Очевидно, що лише ті програми, які спеціально розроблені для того, щоб обмежити користувачів робити лише те, що їм слід дозволити, можна сміливо налаштувати.


Отже, у випадку, коли я відкриваю оболонку, встановлюючи uid на 0 (використовуючи setreuid), так що ефективний uid буде root, але справжнім uid все ще є я. Оскільки я не думаю, що в оболонці спеціально є щось, що перешкоджає мені, чи означає це я тоді отримую доступ до всієї системи?
зірковий

Мені цікаво в контексті техніки атаки стека. Там, де зловмисний хакер відкриває оболонку з рівнем суперрузера.
зірковий

@starcron: Так. Насправді можливі напади демонструються, показуючи, як використовувати цю атаку для створення встановленої кореневої оболонки.
Девід Шварц

2

Ви можете змінювати лише свій пароль, незважаючи на ефективний ідентифікатор користувача root, оскільки під час зміни пароля перевіряється справжній ідентифікатор користувача не ефективний ідентифікатор користувача. Ви можете змінити лише ефективний ідентифікатор користувача, а не справжній ідентифікатор користувача.
Лише користувач root може змінити справжній ідентифікатор користувача для запуску програми як непривілейований користувач. Справжній ідентифікатор користувача неможливо змінити, оскільки він встановлений на момент початку сеансу.
Ось чому можна змінити лише ваш пароль, оскільки не змінюється справжній ідентифікатор користувача (оскільки він все ще не є кореневим).


0

Раннім злому в Unix було створення символічного посилання на встановлений сценарій оболонки та виклик посилання -i. Це призводить до того, що скрипт викликається так, sh -iщо замість виконання сценарію, викликаного -iза призначенням, запускає інтерактивну оболонку, яка надає повні повноваження. Ефективний ідентифікатор користувача може бути використаний для зміни passwdфайлу для будь-якого користувача або самого кореня. Найкращий спосіб захиститись від цього - використовувати SELinux для запобігання модифікації скриптів довіри або програм за межами області, SELinux дозволяє їм працювати.

Інша методика - мати незмінний біт у важливих файлах, який один набір не може бути змінений навіть кореневим користувачем (крім в режимі однокористування)

Як root, ви можете запропонувати користувачам увійти до вашої системи без пароля і з'являтися як будь-який користувач, але звичайні привілейовані процеси дуже намагаються запобігти цьому.

Якщо ви користуєтеся мережевими системами подачі даних, користувач root буде розглядатися як ніхто в тому файловому просторі замість кореневого, що дозволяє ненадійним комп'ютерам приєднатися до надійної мережі, наприклад університетського містечка.


0

Ви можете змінювати свій пароль, оскільки програма встановленого пароля, хоч і має можливість робити що-небудь, запрограмована лише на зміну паролів. Він перевірить справжній ідентифікатор користувача та вирішить, який пароль потрібно змінити.

Оскільки ви не можете змінити свій справжній ідентифікатор користувача, навіть зателефонувавши на встановлену програму set-uid, програма може використовувати його для реалізації безпеки. Операційна система відмовляється від безпеки встановленої кореневої програми uid.

Примітка: встановлена ​​коренева програма uid також може змінити ідентифікатор реального користувача (але це не корисно в цьому випадку використання).

Попередження: встановлений uid root вважається шкідливим (набагато менше, ніж ідеальним). Ми повинні використовувати можливості сьогодні (див. Які різні способи встановлення дозволів на файли тощо на gnu / linux та http://man7.org/linux/man-pages/man7/capability.7.html )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.