Как отключить pam_mount, если пароль не указан (т.е.аутентификации с помощью ssh-ключа)?

Я использую pam_mount для автоматического монтирования общих ресурсов SMB / CIFS при входе пользователя в систему, и пока это работает, но когда кто-то аутентифицируется без пароля (через ssh- key) монтировать не удается, потому что нет пароля для передачи программе монтирования. Это приведет к ошибке Permission denied и будет считаться неудачной попыткой аутентификации. Проблема в том, что учетные записи пользователей блокируются после нескольких неудачных попыток аутентификации. Поэтому, если вы используете ssh-ключ, через некоторое время вы заблокируете себя.

Есть ли способ запретить PAM что-то смонтировать, если пароль не указан?

Я обнаружил в их списке рассылки, что опция soft_try_pass должна помочь ( https://sourceforge.net/p/pam-mount/mailman/message/19574581/), но эта опция больше не доступна.

Это на Ubuntu 18.04 с libpam-mount версия 2.16-3ubuntu0.1 .

1
задан 2 December 2019 в 10:44

1 ответ

У нас была такая же проблема с нашими клиентами Debian в среде Active Directory. Чтобы указать, что процесс аутентификации прошел успешно с помощью пароля, вы можете установить переменную среды, а затем условно подключиться к этой переменной во время настройки сеанса.

Создайте модифицированную версию конфигурации монтирования pam в /usr/share/pam-configs/libpam-mount-pw-only:

Name: Mount volumes for user (pw auth only)
Default: yes
Priority: 128
Auth-Type: Additional
Auth:
        [success=ok default=2]          pam_exec.so /bin/true
        optional                        pam_env.so envfile=/etc/default/pam-authenticate
        optional                        pam_mount.so
Session-Interactive-Only: yes
Session-Type: Additional
Session:
        [success=ok default=1]          pam_exec.so quiet /usr/bin/printenv PAM_AUTHENTICATE
        optional                        pam_mount.so
Password-Type: Additional
Password:
        optional                        pam_mount.so disable_interactive

Затем создайте файл окружения echo 'PAM_AUTHENTICATE =TRUE' > /etc/default/pam-authenticate и запустите pam-auth-update, чтобы активировать измененную конфигурацию (и деактивировать исходную конфигурацию).

Если пользователь входит в систему, используя ключи ssh, вы увидите pam_exec(sshd:session): /usr/bin/printenv failed: код выхода 1 (т.е. PAM_AUTHENTICATE не установлен ) в /var/log/auth.log вместо неудачной попытки монтирования.


Примечание: sshd по-прежнему будет вызывать pam_setcred() и анализировать стек auth, если используются ключи ssh. Однако pam_exec.so будет выполняться только для pam_authenticate() (см. pam_exec — вызов внешней команды), так что здесь мы можем аутентификация на основе ключей.

Это всего лишь обходной путь. Я бы предпочел параметр pam_mount.conf.xml для конкретного тома, чтобы указать, что не следует предпринимать никаких попыток монтировать том без пароля.

1
ответ дан 24 May 2020 в 16:30

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

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