[Comm] Re: [JT] Re: PAM & logins

Dmytro O. Redchuk =?iso-8859-1?q?dor_=CE=C1_ldc=2Enet?=
Вт Июн 14 09:55:59 MSD 2005


On Mon, Jun 13, 2005 at 08:21:53PM +0300, Michael Shigorin wrote:
> On Mon, Jun 13, 2005 at 07:15:12PM +0300, Dmytro O. Redchuk wrote:
> > On Mon, Jun 13, 2005 at 05:03:12PM +0300, Dmytro O. Redchuk wrote:
> > >    Поэтому вопрос -- где бы почитать, как этим рулить через
> > >    /etc/security/access.conf?
> > >    (Нормально ли, что у /etc/pam.d/login -- такие права доступа?)
> >    Пардон...  Всё -- как обычно в *NIXах:
> >    	всё очень просто, особенно если знаешь *как*. (с)
> 
> . o O ( и когда эти загадочные люди научатся рассказывать... )
Напишу.

Да чего там :-)

ЗАДАЧА
   Нужно разрешать вход в систему определённым пользователям только с
   консоли.

ПОЛУНАМЁКИ
   Есть, кстати, /etc/securetty -- в этом файле можно перечислить
   терминалы ("виртуальные" и "реальные"), с которых можно логиниться
   рутУ. Просто перечислить, по одному на строке, например:
     # оттак:
     tty1
     tty6
   (root сможет входить только с этих двух).

   Но интересно, что может PAM в этом смысле. Поскольку упомянутого явно
   мало.

РЕШЕНИЕ
   Конфигурация описывается в файле /etc/security/access.conf, но нужно
   ещё догадаться, что модуль называется (как это ни печально, я не сразу
   это понял) pam_access.so.

   Чтобы ограничить вход в систему пользователям, скажем, fox и root
   только с... (а вот тут уже вопрос... См. секцию ВОПРОСЫ) с локальных
   терминалов, нужно в файле /etc/security/access.conf написать:
      # можно_или_нет : кому : откуда
      #
      # нельзя : руту и фоксу : отовсюду, кроме _локальных_
      -:root fox:ALL EXCEPT LOCAL

   По умолчанию за последней строчкой следует глобальное разрешение,
   поэтому глобальные запрещения -- если нужно -- следует указывать
   руками, самостоятельно. Нам это не нужно в этом примере -- мы уже почти
   добились желаемого.

   *Почти* -- потому, что нужно прописать pam_access.so:
      # в файле /etc/pam.d/login:
      account	required	pam_access.so

   *Почти* -- потому, что (это ещё один момент, до которого мне нужно было
   допереть:o) есть ещё файл /etc/pam.d/sshd, в котором прописаны
   разрешения/запрещения входа в систему через ssh. Там тоже нужно
   прописать такое же "account required ...". После этого попытки войти
   через ssh будут отбиты:
      Read from remote host 10.0.10.170: Connection reset by peer
      Connection to 10.0.10.170 closed.
   (в логе будет:)
      Jun 14 07:51:52 asterisk sshd[1185]: Accepted publickey for fox from 172.16.0.70 port 32918 ssh2
      Jun 14 07:51:52 asterisk pam_access[1184]: access denied for user `fox' from `172.16.0.70'
      Jun 14 07:51:52 asterisk sshd[1184]: PAM rejected by account configuration[6]: Permission denied
      
   но локально мы входить сможем.

ВОПРОСЫ
   Этого я пока не понял:
   Разные доки и объяснялки говорят, что в поле "откуда" можно перечислять
   терминалы:
      -:fox:ALL EXCEPT tty1 tty2
   но реально я не могу войти в систему с такой записью. Вообще не
   получилось добиться результата с какими-либо tty# в этом поле.

   Другие объяснялки говорят, что "под линуксом, дескать" LOCAL -- это и
   есть терминалы tty#, но, честно говоря, трудно верить на слово
   страничке "из гугла". Что по этому поводу ALT?..

И ЧТО ХАРАКТЕРНО
   Такое использование pam_access.so "работает" с "типами" account и
   password, но не работает с типами auth и session. Я слишком мало знаю
   про PAM, чтобы это как-то осмыслить :-)

> 
> -- 
>  ---- WBR, Michael Shigorin <mike на altlinux.ru>
>   ------ Linux.Kiev http://www.linux.kiev.ua/

-- 
  _,-=._              /|_/|
  `-.}   `=._,.-=-._.,  @ @._,
     `._ _,-.   )      _,.-'
        `    G.m-"^m`m'        Dmytro O. Redchuk




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