Почему конфигурация PAM работает некорректно?

Вопрос или проблема

Я попытался отредактировать файл /etc/pam.d/su, чтобы достичь следующего:

  • Когда текущий пользователь userX выполняет su userM, пароль не требуется. Я использовал следующую конфигурацию:

    auth [success=ignore default=1] pam_succeed_if.so user = userM  
    auth sufficient pam_succeed_if.so use_uid user = userX  
    
  • Когда текущий пользователь userY выполняет su userN, пароль не требуется. Я использовал следующую конфигурацию:

    auth [success=ignore default=1] pam_succeed_if.so user = userN  
    auth sufficient pam_succeed_if.so use_uid user = userY  
    

Странная проблема заключается в том, что если я настраиваю только userX --> userM или только userY --> userN, оба работают как ожидается.
Однако, когда я настраиваю обе секции одновременно, работает только последняя конфигурация (userY --> userN). При попытке выполнить su с userX я получаю следующую ошибку:

su: failed to user credentials: The return value should be ignored by PAM dispatch  

Сделал ли я ошибку в конфигурации где-то?

Ответ или решение

Конфигурация PAM (Pluggable Authentication Modules), касающаяся управления доступом для командного доступа с помощью su, может быть сложной. Ваша проблема заключается в том, что при попытке настроить одновременный доступ для пользователя userX к userM и пользователя userY к userN, один из этих конфигурационных блоков не работает как ожидается. Давайте рассмотрим возможные причины и решения для вашей ситуации.

Понимание текущей конфигурации

Ваши конфигурации выглядят следующим образом:

  1. Для перехода от userX к userM:

    auth [success=ignore default=1] pam_succeed_if.so user = userM  
    auth sufficient pam_succeed_if.so use_uid user = userX  
  2. Для перехода от userY к userN:

    auth [success=ignore default=1] pam_succeed_if.so user = userN  
    auth sufficient pam_succeed_if.so use_uid user = userY  

Объяснение компонентов конфигурации

  • auth [success=ignore default=1] pam_succeed_if.so user = userM: Если текущий пользователь является userM, пропустите проверку и продолжите к следующему модулю.
  • auth sufficient pam_succeed_if.so use_uid user = userX: Если текущий пользователь userX, разрешите доступ, не требуя пароля.

Анализ проблемы

Странное поведение, которое вы наблюдаете, может быть связано с тем, что PAM обрабатывает модули в последовательности. Когда оба правила включены, первое правило для userY может блокировать доступ к userX.

Причины проблемы:

  1. Порядок модулей: PAM обрабатывает правила сверху вниз. Если один из модулей возвращает неудачу до того, как будет достигнут модуль, обеспечивающий доступ для другого пользователя, второй пользователь получит сообщение об ошибке.

  2. Стандартное поведение PAM: При использовании модуля pam_succeed_if.so возможно, что конфигурация не возвращает ожидаемое значение при наличии нескольких условий в одном контексте, что может вызвать конфликт.

  3. Конфликт условий: Возможно, в вашем сценарии конфигурирование обеих проверок сразу может привести к тому, что PAM не может корректно определить, какой из условий должен сработать.

Решение проблемы

Для решения этой проблемы попробуйте изменить порядок и структуру конфигураций следующим образом:

auth [success=ignore default=1] pam_succeed_if.so user = userM  
auth [success=ignore default=2] pam_succeed_if.so user = userN  
auth sufficient pam_succeed_if.so use_uid user = userX  
auth sufficient pam_succeed_if.so use_uid user = userY  

Дополнительные рекомендации

  1. Тестирование конфигурации: Вы можете протестировать свою конфигурацию, подключаясь под каждым пользователем и проверяя доступ. Это поможет выявить, работает ли намеренная логика.

  2. Логи PAM: Проверьте журналы системы (например, /var/log/auth.log или /var/log/secure в зависимости от дистрибутива) для получения более подробной информации о причинах отказов.

  3. Обратитесь к документации: Ознакомьтесь с документацией по PAM, особенно с разделами, касающимися модуля pam_succeed_if.so, чтобы лучше понять, как работает его логика.

Заключение

Настройка PAM требует внимания к деталям и понимания порядка обработки модулей. Попробуйте предложенные изменения, проверьте логи для более глубокого анализа и не стесняйтесь экспериментировать с конфигурациями, чтобы достичь нужного результата. Если проблема сохранится, возможно, стоит рассмотреть альтернативные подходы к аутентификации или обратиться за помощью к сообществу специалистов.

Оцените материал
Добавить комментарий

Капча загружается...