Pam: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 4: Строка 4:
 
=Linix PAM=
 
=Linix PAM=
 
Это статья про полную <s>хуйню</s> ерунду - от руководства поставлена задача: заводить пользователя вида user@domain.tld на линукс-боксах. Из ограничений - такой пользователь нужен только один в системе.
 
Это статья про полную <s>хуйню</s> ерунду - от руководства поставлена задача: заводить пользователя вида user@domain.tld на линукс-боксах. Из ограничений - такой пользователь нужен только один в системе.
  +
<BR>
 
В линуксе нельзя завести пользователя с символом "@" в имени стандартными средствами (--force варианты я не расматриваю). Потому для хранения пользователей нужно использовать какое-то внешнее хранилище.
  +
<BR>
  +
Все написаное относится к CentOS 6.5 - меня интересовала именно эта система и со всякими вашими убунтами я не тестировал :)
 
==Решение==
  +
===Краткое описание сложностей===
 
<BR>
 
<BR>
 
Первое что пришло в голову - использовать PAM и не заморачиваться с хранением пользователя вообще.
 
Первое что пришло в голову - использовать PAM и не заморачиваться с хранением пользователя вообще.
Сделать что то вроде
+
Сделать что то вроде такого в /etc/pam.d.sshd
 
<PRE>
 
<PRE>
 
auth sufficient pam_exec.so debug expose_authtok log=/root/pam_exec_debug.log /root/pam_exec.sh
 
auth sufficient pam_exec.so debug expose_authtok log=/root/pam_exec_debug.log /root/pam_exec.sh
 
</PRE>
 
</PRE>
  +
Естественно /root/pam_exec.sh для моего пользователя (или для теста - всегда) возвращает "успех".
 
  +
<BR><B>Это не сработало</B>
==Решение==
 
  +
<BR>Т.е. на уровне PAM это конечно же работает- но ssh слишком умный <S>как утка</S> и имеет дополнительную проверку - вызывая системную ф-ю которая ничего не знает про PAM (а использует дедовские методы - /etc/passwd ... ) и не пускает с ошибкой:
В линуксе нельзя завести пользователя с символом "@" в имени стандартными средствами (--force варианты я не расматриваю). Потому для хранения пользователей нужно использовать какое-то внешнее хранилище.
 
  +
<PRE>
  +
</PRE>
 
<BR>
 
<BR>
 
Тут возможно несколько вариантов
 
Тут возможно несколько вариантов

Версия 23:37, 5 марта 2015


Linix PAM

Это статья про полную хуйню ерунду - от руководства поставлена задача: заводить пользователя вида user@domain.tld на линукс-боксах. Из ограничений - такой пользователь нужен только один в системе.
В линуксе нельзя завести пользователя с символом "@" в имени стандартными средствами (--force варианты я не расматриваю). Потому для хранения пользователей нужно использовать какое-то внешнее хранилище.
Все написаное относится к CentOS 6.5 - меня интересовала именно эта система и со всякими вашими убунтами я не тестировал :)

Решение

Краткое описание сложностей


Первое что пришло в голову - использовать PAM и не заморачиваться с хранением пользователя вообще. Сделать что то вроде такого в /etc/pam.d.sshd

auth       sufficient   pam_exec.so debug  expose_authtok  log=/root/pam_exec_debug.log /root/pam_exec.sh

Естественно /root/pam_exec.sh для моего пользователя (или для теста - всегда) возвращает "успех".
Это не сработало
Т.е. на уровне PAM это конечно же работает- но ssh слишком умный как утка и имеет дополнительную проверку - вызывая системную ф-ю которая ничего не знает про PAM (а использует дедовские методы - /etc/passwd ... ) и не пускает с ошибкой:



Тут возможно несколько вариантов

  • LDAP
  • NIS
  • DB

Я остановлюсь

Links