Igorka Лекція №29 - Аутентифікація у Linux
Дещо про все і все про небагато, або практичний досвід системного адміністратора.

| «Лютий | квітень » | |||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |

Лекція №29 - Аутентифікація у Linux. Система PAM
Подивимося на системуPAM докладніше. Основні функції, або дії, або завдання, які виконує системаPAM - розбиті на чотири групи які мають певні назви:
групаaccount - це дії, пов'язані з керуванням обліковими записами. Наприклад, навіть якщо ви автентифікувалися в системі, ваш обліковий запис може поставити заборону на роботу в певний час доби. Або дозволити заходити у консольному режимі, але заборонити заходити у графічному режимі. І т.д.
групаsession - дії цієї групи здійснюють виділення користувачеві необхідних роботи ресурсів. Найпростіший приклад – це дозвіл на монтування каталогів.
групаpassword - дії, що реалізують зміну автентифікаційних даних користувача. Найчастіше це дії з керування паролями користувача.
Всі ці дії або процедури (функції) реалізовані у вигляді окремих модулів, які розміщені в каталозі/lib/security/. Тобто можна сказати, є модулі групиauth, модулі групиaccount і т.д.Відповідно системаPAM є модульною і якщо вам необхідно реалізувати біометричну автентифікацію, необхідно просто встановити модуль, яких може цю процедуру виконати.
Основний файл конфігураціїPAM - це файл/etc/pam.conf. Крім файлу/etc/pam.conf, налаштуванняPAM зберігаються у файлах каталогу/etc/pam.d/. Усередині каталогу знаходяться текстові файли які містять у собі послідовність дій (якийсь алгоритм) для програм які використовуютьPAM. Наприклад, файл/etc/pam.d/login містить алгоритм роботи системиPAM для програмиlogin, а файл/etc/pam.d/ passwd для програмиpasswd.
Розглянемо спочатку формат файлу/etc/pam.conf. Файл складається із рядків. Файл може складатися з одного рядка, а може з кількох рядків складаючись у ланцюжок послідовних дій. Кожен рядок описує одне правило або один крок такого ланцюжка (алгоритму). Рядок складається з чотирьох полів. Перше поле це ім'я програми, до якої належить даний крок. Друге поле, це тип дії (auth,account,session,password ). Третє поле це поле в якому задається поведінка системи PAM після завершення цього кроку на цьому кроці алгоритму (трохи нижче зупинимося докладніше на цьому питанні). Четверте поле – це ім'я файлу модуля. Також у рядку можуть бути деякі параметри передані модулю.
Структура файлів, що знаходяться в каталозі/etc/pam.d/, така сама. Відмінність лише у відсутності першого поля – імені. Оскільки ім'я програми береться з імені файлу. Подивимося приклад такого файла. Назвемо йогоtestpam.
Реакція може бути чотирьох типів:required,requisite,optional,sufficient. На прикладі рядкаauth sufficient pam_rootok.so розглянемо, що означають ці значення.
Якщо в другому полі встановлено значенняrequisite, то це означає, що якщо модульpam_rootok.so завершився з помилкою, то подальше виконання файлуtestpam переривається і системаPAM повертає додатку помилку. Якщо модуль повернув позитивний результат, то виконання ланцюжка триває.
required схожий наrequisite. Якщо модульpam_rootok.so завершився з помилкою, тоPAM також поверне помилку, але після того як будуть виконані інші модулі, тобто ланцюжок не переривається. Якщо модуль повернув позитивний результат, то виконання ланцюжка триває.
sufficient - якщо модульpam_rootok.so повернув успіх, то системаPAM повертає додатку успіх, і подальше виконання ланцюжка переривається. Якщо невдача, то продовжується виконання ланцюжка.
optional - цей параметр ніяк не впливає на перебіг ланцюжка. Вказується для тих модулів, які не виконують жодних перевірочних дій. Якщо у файлі будуть лише рядки з параметромoptional, тоPAM поверне додатку успіх.
Докладніше про системуPAM та призначення тієї чи іншої бібліотеки можна прочитати на сайті http://kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html. Зараз виконаємо невелику практичну вправу, яка дозволить краще зрозуміти як працює системаPAM і як складати конфігураційні файли.
Перейдіть до каталогу/etc/pam.d/. Скопіюйте файлsu у домашню директорію (щоб можна було відновити його) і видаліть файлsu з директорії/etc/pam.d/. Спробуйте тепер виконати командуsu у терміналі, щоб перейти в режим суперкористувача. Після введення пароля система видасть помилку аутентифікації, оскільки відсутній файл конфігурації для програмиsu.
Створюємо файл/etc/pam.d/su і пишемо в ньому такий рядок:
Зберігаємо файл. Пробуємо знову виконати командуsu і бачимо, що тепер ми стаємо суперкористувачем без запиту пароля. Це сталося тому, що модульpam_permit.so завжди повертає позитивний результат,sufficient відразу перериває виконання ланцюжка і системаPAM повертає позитивний результат. Відредагуємо файл до такого вигляду:
Модульpam_deny.so завжди повертає помилку. Яким буде результат? Перевірте. А якщо замінитиrequisite наrequired ? Тепер напишемо у файлі таке правило:
Після виконання командиsu буде запрошений пароль користувачаroot. Якщо пароль ввести правильно, то ви станете рутом, якщо пароль буде неправильний, то залишитеся звичайним користувачем. Тепер додамо до файлу ще один рядок, так щоб вийшли такі правила:
Спробуйте відповісти, хто зможе успішно виконати командуsu і, що для цього потрібно буде зробити? На цьому завершимо практичну вправу (не забудьте повернути на місце оригінальний файл su).
Хочу ще раз наголосити, що конфігураційні файли в каталозі /etc/pam.d/ можна створювати тільки для файлів, які використовують системуPAM. Наприклад, якщо створити файл/etc/pam.d/ls з рядкомauth requisite pam_deny.so, то командаls все одно буде виконуватися так як вона не використовує системуPAM. Щоб перевірити, чи використовує командасистему PAM можна використовувати командуldd, якій як параметр передається повний шлях до файлу команди. Наприклад:
Командаldd покаже які бібліотеки використовує програма і якщо в переліку єlibpam.so.0,libpam_misc.so.0 означає програма використовує системуPAM.
На завершення хочу ще згадати такий файл як/etc/nsswitch.conf. Перші три рядки цього файлу якраз і задають, яка система аутентифікації буде працювати в системі:
Ключове словоcompat якраз і “говорить” про те, що як система аутентифікації, буде використана системаPAM.
І ще. Будьте обережні в експериментах зPAM. За незнанням чи необережністю можна запросто заблокувати свою систему. Тому перед тим, як щось змінювати, обов'язково збережіть вихідні конфігураційні файли, щоб у разі проблем можна було їх швидко відновити.