мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
notes:howlinuxworks:vol7 [2026/05/18 16:11] radi0devnotes:howlinuxworks:vol7 [2026/05/18 16:18] (текущий) radi0dev
Строка 602: Строка 602:
   * Запрос пароля при каждой аутентификации   * Запрос пароля при каждой аутентификации
   * Не поддерживает альтернативные методы (токены, смарт-карты, биометрия)   * Не поддерживает альтернативные методы (токены, смарт-карты, биометрия)
- 
- 
- 
- 
- 
- 
- 
- 
- 
  
 ===== 7.10 Подключаемые модули аутентификации (PAM) ===== ===== 7.10 Подключаемые модули аутентификации (PAM) =====
  
-**PAM** (Pluggable Authentication Module) — стандарт от Sun Microsystems (1995) для гибкой аутентификации. Система разделяемых библиотек позволяет добавлять методы аутентификации (двухфакторная, ключи) без изменения приложений.+**PAM** (Pluggable Authentication Module) стандарт от Sun Microsystems (1995) для гибкой аутентификации. Система разделяемых библиотек позволяет добавлять методы аутентификации (двухфакторная, ключи) без изменения приложений.
  
-Модули — динамически загружаемые объекты (.so). Пример: pam_unix.so проверяет пароль.+Модули динамически загружаемые объекты (.so). Пример: pam_unix.so проверяет пароль.
  
 ==== 7.10.1 Конфигурация PAM ==== ==== 7.10.1 Конфигурация PAM ====
Строка 624: Строка 615:
 **Структура строки конфигурации (3 поля):** **Структура строки конфигурации (3 поля):**
  
-Поле Описание Пример +Поле Описание Пример ^
-| --- | --- | --- |+
 | **Тип функции** | Операция, запрашиваемая приложением | auth, account, session, password | | **Тип функции** | Операция, запрашиваемая приложением | auth, account, session, password |
 | **Аргумент управления** | Поведение при успехе/неудаче | sufficient, requisite, required | | **Аргумент управления** | Поведение при успехе/неудаче | sufficient, requisite, required |
Строка 631: Строка 621:
  
 **Типы функции:** **Типы функции:**
-  * **auth** — аутентификация (кто ты?) +  * **auth** аутентификация (кто ты?) 
-  * **account** — проверка статуса учетной записи +  * **account** проверка статуса учетной записи 
-  * **session** — действия только для текущего сеанса (motd) +  * **session** действия только для текущего сеанса (motd) 
-  * **password** — изменение пароля+  * **password** изменение пароля
  
 **Управляющие аргументы (стек правил):** **Управляющие аргументы (стек правил):**
-  * **sufficient** — успех → немедленный успех, пропустить остальные; неудача → далее +  * **sufficient** успех → немедленный успех, пропустить остальные; неудача → далее 
-  * **requisite** — успех → далее; неудача → немедленный отказ +  * **requisite** успех → далее; неудача → немедленный отказ 
-  * **required** — успех → далее; неудача → далее, но всегда отказ в конце+  * **required** успех → далее; неудача → далее, но всегда отказ в конце
  
-**Пример стека (chsh):**+**Пример стека (функции аутентификации chsh):**
 <code> <code>
 auth sufficient pam_rootok.so auth sufficient pam_rootok.so
Строка 649: Строка 639:
 </code> </code>
  
-**Аргументы модулей:** После имени модуля (пример: `pam_unix.so nullok` — пароль может отсутствовать)+++++При такой конфигурации, когда команда chsh запрашивает у PAM функцию аутентификации, PAM выполняет следующее| 
 +  - Модуль pam_rootok.so проверяет, не пытается ли суперпользователь пройти аутентификацию. Если это так, процесс немедленно выполнится успешно и не будет пытаться выполнить дальнейшую аутентификацию. Это сработает, потому что аргумент управления имеет значение sufficient, что означает: выполнения этого действия достаточно для того, чтобы модуль PAM немедленно сообщил об успехе chsh. В противном случае он переходит к шагу 2. 
 +  - Модуль pam_shells.so проверяет, указана ли оболочка пользователя в файле /etc/shells. Если ее там нет, модуль возвращает ошибку и аргумент управления requisite указывает, что модуль PAM должен немедленно сообщить об этом сбое chsh и не пытаться выполнить аутентификацию. В противном случае модуль успешно завершит выполнение и в соответствии с требованиями аргумента управления requisite перейдет к шагу 3. 
 +  - Модуль pam_unix.so запрашивает у пользователя пароль и проверяет его. Аргументу управления присвоено значение sufficient, поэтому успеха данного модуля (правильного пароля) достаточно, чтобы PAM сообщил об этом оболочке chsh. Если пароль неверен, PAM переходит к шагу 4. 
 +  - Модуль pam_deny.so никогда не выполняется, и поскольку аргумент управления установлен в значение required, PAM сообщает об ошибке в оболочку chsh. Это значение используется по умолчанию для случаев, когда больше нет вариантов действий. (Обратите внимание, что аргумент управления required не приводит к немедленному сбою функции PAM: он будет запускать все строки, оставшиеся в его стеке, но при этом модуль всегда будет сообщать приложению о сбое.) 
 + 
 +{{:notes:howlinuxworks:pic_7.4.png}} 
 +++++ 
 + 
 +**Аргументы модулей:** После имени модуля (пример: `pam_unix.so nullok` пароль может отсутствовать)
  
 ==== 7.10.2 Советы по синтаксису конфигурации PAM ==== ==== 7.10.2 Советы по синтаксису конфигурации PAM ====
Строка 656: Строка 655:
   * Локализация: `locate pam_unix.so`   * Локализация: `locate pam_unix.so`
   * Комментарии в /etc/pam.d указывают на источник генерации   * Комментарии в /etc/pam.d указывают на источник генерации
-  * **/etc/pam.d/other** — конфигурация по умолчанию (обычно запрещает всё)+  * **/etc/pam.d/other** конфигурация по умолчанию (обычно запрещает всё)
   * Включение файлов: `@include` или управляющие аргументы   * Включение файлов: `@include` или управляющие аргументы
   * Дополнительные настройки в **/etc/security**   * Дополнительные настройки в **/etc/security**
Строка 662: Строка 661:
 ==== 7.10.3 Модули PAM и пароли ==== ==== 7.10.3 Модули PAM и пароли ====
  
-**/etc/login.defs** — конфигурация shadow-паролей (алгоритм шифрования). Используется редко при наличии PAM.+**/etc/login.defs** конфигурация shadow-паролей (алгоритм шифрования). Используется редко при наличии PAM.
  
 **Установка пароля (функция password):** **Установка пароля (функция password):**