Що насправді роблять механізми авторизації OS X?


13

Фон 

Я намагаюся краще зрозуміти процес входу в OS X, щоб визначити найкращий спосіб досягнення єдиного входу в VPN .

Будь ласка, виправте мене, якщо я помиляюся, але я вважаю, що:

  1. launchd(8)виклики gettyent(3)і , таким чином , визначає з ttys(5)виконати loginwindow.appдля /dev/console.

  2. loginwindow.appспроби придбати system.login.consoleправо авторизації, для яких база даних авторизації визначає такі механізми (перераховані разом з моїм розумінням їх функції); ті, які мають пільги, запускаються в authdпроцесі (як root), а ті, які не є привілейованими, виконуються в SecurityAgentпроцесі (як _securityagent):

    • builtin:policy-banner(відображається банер вікна входу , якщо встановлено).
    • loginwindow:login (запити на отримання облікових даних).
    • builtin:login-begin
    • builtin:reset-password,privileged(виконує скидання пароля за допомогою Apple ID ).
    • builtin:forward-login,privileged (пересилає облікові дані EFI під час завантаження).
    • builtin:auto-login,privileged (застосовує облікові дані автоматичного входу під час завантаження).
    • builtin:authenticate,privileged(виклики pam_authenticate(3)для authorizationслужби; встановлює контекстне значення "uid").
    • PKINITMechanism:auth,privileged (ініціалізує Керберос, отримуючи TGT).
    • builtin:login-success
    • loginwindow:success (захищає сеанс входу від несанкціонованого віддаленого доступу; записує вхід у бази даних utmp та utmpx системи; встановлює власника та дозволи для консольного терміналу).
    • HomeDirMechanism:login,privileged (монтує домашній каталог користувача).
    • HomeDirMechanism:status (відображає хід монтажу домашнього каталогу).
    • MCXMechanism:login (застосовується профілів конфігурації).
    • loginwindow:done (скидає налаштування користувача для включення глобальних системних стандартних налаштувань; налаштовує миша, клавіатуру та системний звук за допомогою налаштувань користувача; встановлює групові дозволи користувача; витягує запис користувача з Служб каталогів і застосовує цю інформацію до сеансу; завантажує обчислення користувача навколишнє середовище - включаючи налаштування, змінні середовища, дозволи пристрою та файлів, доступ до ключових ланцюгів тощо; запускає Dock, Finder та SystemUIServer; запускає елементи входу для користувача).

Запитання

Я дуже хотів би підтвердити своє розуміння функції кожного механізму:

  1. Чи доступний їх вихідний код відкрито? Я знаю, що немеханізми builtinвизначаються плагінами, які можна знайти під /System/Library/CoreServices/SecurityAgentPlugins, але я не можу знайти джерело, з якого вони були побудовані. Я також не можу знайти, де визначені builtinмеханізми.

  2. Якщо джерело недоступне, чи механізми документовані десь?

Спостереження

  1. Як loginwindow:loginзапросити на отримання облікових даних, якщо вони викликалися раніше, builtin:forward-login і builtin:auto-loginбудь-який з них призведе до обходу графічного інтерфейсу? Чи перевіряє він контекст для таких облікових даних і пропускає себе, якщо вони є? Здається дивно.

  2. Крім того, як описано в технічній білій книзі Apple 802.1X Authentication :

    Коли налаштовано режим вікна входу, а користувач набере ім’я та пароль користувача у вікні входу, відбудуться дві речі. По-перше, вікно для входу в систему підтвердить автентифікацію комп'ютера через мережу 802.1X, використовуючи ім’я користувача та пароль, введені користувачем. Після того, як аутентифікація 802.1X буде успішною, вікно входу підтвердить аутентифікацію того ж імені користувача та пароля у зовнішній каталог.

    Оскільки другий етап цієї аутентифікації обробляється pam_opendirectory.soмодулем і залежить від присутності мережі, перша стадія (автентифікація через мережу 802.1X) повинна обов'язково проходити до цього. Тобто воно має відбуватися перед builtin:authenticateмеханізмом.

    З випадкового огляду loginwindowбінарного модуля плагіну, здається, він обробляє таку аутентифікацію 802.1X, але єдиним механізмом, на який посилався цей плагін, builtin:authenticateє loginwindow:login. Чи правильно я вважаю, що цей механізм не тільки відображає запит на вхід, але й намагається перевірити автентифікацію 802.1X? (Якщо так, це не тільки здається трохи неохайним IMHO, але також дозволяє припустити, що облікові дані з EFI / auto-login не можна використовувати для аутентифікації вікна входу 802.1X.)

Відповіді:


1
  1. З того, що я згадую loginwindow: login фактично використовується при нересту вікна входу в GUI, подібно до вбудованого: policy-banner. Тому логічно бути породженим перед рештою дій. Отже, вікно GUI - це те, що насправді не має значення / обходить, а не самі дані.

  2. Що саме ви хотіли б змінити і до якої мети? Наприклад, якщо ви вимагаєте, щоб плагін авторизації викликався в інших ситуаціях, ви можете це зробити, відредагувавши auth.db.

Крім того, вбудовані: підсистеми аутентифікації повинні працювати з різницею між 802.1X та локальним auth.


1
builtin:forward-login,privileged

Пересилає успішне вхід у FileVault у вікно входу в OS X і обходить необхідність входу. Це щось на зразок єдиного входу. Я вимикаю це в моєму середовищі, оскільки не використовував профіль 802.1X, який я встановив. Я б спробував це зробити.

OS X: Як відключити автоматичний вхід, коли увімкнено FileVault

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.