Фон
Я пытаюсь лучше понять процесс входа в OS X, чтобы выбрать лучший способ для достижения единой регистрации VPN .
Пожалуйста, поправьте меня, если я ошибаюсь, но я верю, что ...
launchd(8)
звонкиgettyent(3)
и, таким образом, определяет отttys(5)
выполнитьloginwindow.app
для/dev/console
.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
(инициализирует Kerberos, получая TGT).builtin:login-success
loginwindow:success
(защищает сеанс входа в систему от несанкционированного удаленного доступа; регистрирует вход в систему в системных базах utmp и utmpx; устанавливает владельца и разрешения для консольного терминала).HomeDirMechanism:login,privileged
(монтирует домашний каталог пользователя).HomeDirMechanism:status
(отображает ход монтажа домашнего каталога).MCXMechanism:login
(применяет профили конфигурации).loginwindow:done
(сбрасывает предпочтения пользователя, чтобы включить глобальные системные настройки по умолчанию; настраивает звук мыши, клавиатуры и системы, используя предпочтения пользователя; устанавливает разрешения группы пользователей; извлекает запись пользователя из служб каталогов и применяет эту информацию к сеансу; загружает вычисления пользователя окружение - включая предпочтения, переменные среды, права доступа к устройствам и файлам, доступ к цепочке ключей и т. д .; запускает Dock, Finder и SystemUIServer; запускает элементы входа для пользователя).
Вопросов
Я бы очень хотел подтвердить мое понимание функций каждого механизма:
Доступен ли их исходный код открыто? Я знаю, что немеханизмы
builtin
определяются подключаемыми модулями/System/Library/CoreServices/SecurityAgentPlugins
, но я не могу найти источник, из которого они были построены. Также я не могу найти, где определеныbuiltin
механизмы.Если источник недоступен, документированы ли механизмы где-нибудь?
наблюдения
Как
loginwindow:login
запросить учетные данные, если они были вызваны ранее,builtin:forward-login
иbuiltin:auto-login
любой из них вызывает обход GUI? Проверяет ли он контекст для таких учетных данных и пропускает ли сам себя, если они присутствуют? Кажется страннымКроме того, как описано в техническом документе Apple по аутентификации 802.1X :
Когда режим окна входа в систему настроен и пользователь вводит имя пользователя и пароль в окне входа в систему, произойдут две вещи. Во-первых, окно входа в систему аутентифицирует компьютер через сеть 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.)