[Comm] "pam_mount password:" - неаккуратненько как-то

Денис Черносов denis0.ru на gmail.com
Пн Июн 22 10:41:36 MSD 2009


20 июня 2009 г. 4:38 пользователь Dmitry V. Levin (ldv на altlinux.org) написал:
> On Fri, Jun 19, 2009 at 11:46:36AM +0500, Денис Черносов wrote:
>> День добрый всем!
>>
>> auth     optional          pam_mount.so
>> auth     sufficient        pam_tcb.so shadow fork prefix=$2a$ count=8
>> nullok use_first_pass
>> auth     requisite         pam_succeed_if.so uid >= 500 quiet
>> auth     required          pam_ldap.so use_first_pass
>>
>> В пятом бранче pam_mount, будучи поставленный первым в auth (а
>> по-другому его заставить работать у меня не получилось), меняет строку
>> запроса пароля и вместо просто "password:" пишет "pam_mount
>> password:".
>
> Не надо помещать pam_mount.so в стеке аутентификации до pam_tcb.so,
> это не правильно по сути.

Согласен, мне это тоже кажется "неправильным по сути". Но в примере
явно указано, что при аутентификации через ldap или winbind нужно
модуль pam_mount ставить впереди...
----------------------
#man pam_mount
....
       When "sufficient" is used in the second column, you must make
sure  that  pam_mount  is  added
       before  this entry. Otherwise pam_mount will not get executed
should a previous PAM module suc‐
       ceed. Also be aware of the "include" statements. These make PAM
look into the  specified  file.
       If  there  is a "sufficient" statement, then the pam_mount
entry must either be in the included
       file before the "sufficient" statement or before the "include" statement.

       If you use pam_ldap, pam_winbind, or any other authentication
services that make use  of  PAM's
       sufficient keyword, model your configuration on the following order:

              ・・・
              account sufficient  pam_ldap.so
              auth    required    pam_mount.so
              auth    sufficient  pam_ldap.so use_first_pass
              auth    required    pam_unix.so use_first_pass
              session optional    pam_mount.so
              ・・・

       This allows for:

       1.  pam_mount,  as the first "auth" module, will prompt for a
password and export it to the PAM
           system.

       2.  pam_ldap will use the password from the PAM system to try
and  authenticate  the  user.  If
           this  succedes, the user will be authenticated. If it
fails, pam_unix will try to authenti‐
           cate.
....
------------------------------


А второй вариант (см. ниже) указывается именно для таких как мы с вами :)
-----------------------------
...
       Alternatively, the following is possible (thanks to Andrew
Morgan for the hint!):

              auth [success=2 default=ignore] pam_unix2.so
              auth [success=1 default=ignore] pam_ldap.so use_first_pass
              auth requisite pam_deny.so
              auth optional pam_mount.so

       It  may  seem  odd, but the first three lines will make it so
that at least one of pam_unix2 or
       pam_ldap has to succeed. As you can see, pam_mount will be run
after  successful  authentifica‐
       tion with these subsystems.
...
-----------------------------

Причем, оба этих варианта - рабочие. А вот если попытаться без затей
поставить pam_mount после остальных модулей, то пароль запрашивается
два раза. Причем даже при перезапуске демонов (веселуха service
network restart - введи пароль...). И это не решается использованием
опции use_first_pass.

Единственное, что я не пробовал - это ставить строчку с account
впереди строчек с auth. Потому что, насколько я понимаю, от этого
ничего не изменится...

>> $ su -
>> pam_mount password:
>>
>> На 4.1 такого не наблюдалось. Зачем понадобилось "кишки светить" перед
>> юзерами и можно ли это поведение отключить по-простому?
>
> Попробуйте спросить у автора pam_mount.  Хотя я бы не стал его винить,
> ведь благодаря ему сразу видна ошибка в стеке аутентификации.

Никто его не винит. Просто см. сабж - "неаккуратненько как-то". И
хотелось бы узнать, есть ли возможность сэмулировать старое поведение.

>> auth     [success=2 default=ignore]       pam_tcb.so shadow fork prefix=$2a$ count=8 nullok
>> auth     requisite pam_succeed_if.so uid >= 500 quiet
>> auth     [success=1 default=ignore]       pam_ldap.so use_first_pass
>> auth     optional       pam_mount.so
>
> Вы неправильно списали с pam_mount(8).  Чтобы понять, в чём ошибка,
> придётся прочитать и понять pam.conf(5).

Ошибки нет. Этот вариант работает. Мой вопрос касается скорее
эстетики, чем функциональности...

> P.S. Извините, что отвечаю не на те вопросы, которые вы задаёте,
>     а на те, которые напрашиваются.  Просто я сейчас готовил сборку
>     пакета pam-1.1.0-alt1, и вы попали под горячую руку. :)

Не всегда получается задать удачный вопрос, чтобы получить полезный ответ ;)


-- 
С уважением,
Черносов Денис


Подробная информация о списке рассылки community