pam_access.so не работает, если указан listsep

У меня возникла странная проблема с настройкой PAM при попытке ограничить вход по ssh с помощью pam_access.so с пакетом libpam-modules_1.1.8-3.6 убунту2.18.04.1.

содержимое /etc/security/access.conf

+ : root : ALL
+ : devops : ALL
#+ : computer managers : ALL
- : ALL : ALL

содержимое /etc/pam.d/sshd

требуется учетная запись pam_access.so listsep =, debug

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

из журналов отладки Похоже, что всякий раз, когда указан listsep , он не возвращает никаких ошибок, если не может найти группу пользователей в access.conf AKA pam_access.so всегда будет возвращать успех с помощью listsep.

В приведенном ниже контексте пользователь является членом «компьютерных менеджеров», но не «DevOps»

Журналы отладки с включенным listsep и только DevOps в access.conf

pam_access(sshd:account): line 1: +  :  root  :  ALL
pam_access(sshd:account): list_match: list= root , item=user
pam_access(sshd:account): user_match: tok= root , item=user
pam_access(sshd:account): string_match: tok= root , item=user
pam_access(sshd:account): user_match=0, "user"
pam_access(sshd:account): line 2: +  :  devops  :  ALL
pam_access(sshd:account): list_match: list= devops , item=user
pam_access(sshd:account): user_match: tok= devops , item=user
pam_access(sshd:account): string_match: tok= devops , item=user
pam_access(sshd:account): user_match=0, "user"
pam_access(sshd:account): line 4: -  :  ALL  :  ALL
pam_access(sshd:account): list_match: list= ALL , item=user
pam_access(sshd:account): user_match: tok= ALL , item=user
pam_access(sshd:account): string_match: tok= ALL , item=user
pam_access(sshd:account): user_match=0, "user"
Accepted password for user from IP port PORT ssh2

см. Последнюю строку журнала pam_access user_match = 0 . давайте сравним его с журналами, когда listsep не указан

pam_access(sshd:account): line 1: +  :  root  :  ALL
pam_access(sshd:account): list_match: list= root , item=user
pam_access(sshd:account): user_match: tok=root, item=user
pam_access(sshd:account): string_match: tok=root, item=user
pam_access(sshd:account): user_match=0, "user"
pam_access(sshd:account): line 2: +  :  devops  :  ALL
pam_access(sshd:account): list_match: list= devops , item=user
pam_access(sshd:account): user_match: tok=devops, item=user
pam_access(sshd:account): string_match: tok=devops, item=user
pam_access(sshd:account): user_match=0, "user"
pam_access(sshd:account): line 4: -  :  ALL  :  ALL
pam_access(sshd:account): list_match: list= ALL , item=user
pam_access(sshd:account): user_match: tok=ALL, item=user
pam_access(sshd:account): string_match: tok=ALL, item=user
pam_access(sshd:account): user_match=2, "user"
pam_access(sshd:account): list_match: list= ALL, item=user
pam_access(sshd:account): from_match: tok=ALL, item=IP
pam_access(sshd:account): string_match: tok=ALL, item=IP
pam_access(sshd:account): from_match=2, "IP"
pam_access(sshd:account): access denied for user 'user' from 'IP'

Я могу подтвердить, когда listsep =, указал, что он правильно анализирует группу «менеджеры компьютеров», но не возвращает коды ошибок.

Кто-нибудь сталкивался с этой проблемой?

Можно ли что-нибудь обойти, если имя группы содержит пробелы?

Заранее спасибо,

Бхану

1
задан 23 May 2019 в 23:29

0 ответов

Другие вопросы по тегам:

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