Используйте более сложный И/ИЛИ структура с PAM

PAM позволяет использовать sufficent и required для некоторой логики, как

auth sufficient pam_a.so
auth required pam_b.so
auth required pam_c.so

который означал бы "или верного, или b должно быть верным, и затем c должен быть верным".

Действительно ли возможно сделать более сложные операции? как" (a или b) и (c или d)" или" (a и b) или (c и d)"? Возможно еще с большим количеством слоев круглой скобки.

4
задан 8 March 2015 в 01:42
1 ответ

Да, есть логика, позволяющая пропускать произвольное количество строк. Нет никаких «группирующих скобок» или чего-то подобного, но если вы объедините логику, о которой вы только что упомянули, с возможностью пропускать строки, вы можете выборочно исключить поведение.

Вот пример с моего личного сервера:

# Skip Google authenticator check if they're coming from a local IP.
auth    [success=1 default=ignore] pam_access.so accessfile=/etc/security/access/nogoogle.conf noaudit
auth    required        pam_google_authenticator.so nullok

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

Вы можете найти больше об этом на странице руководства pam.conf . Найдите "значение1". Раздел начинается так:

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

  [значение1 = действие1 значение2 = действие2 ...]

  Где valueN соответствует коду возврата из функции, вызванной в
  модуль, для которого определена линия.
  ...
 

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

5
ответ дан 3 December 2019 в 03:17

Теги

Похожие вопросы