[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