_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Dmitry Kravtsov 2:5020/400 27 Apr 98 13:42:52
Subj : Re: Как запретить логиниться определенному юзеру по двум портам?
________________________________________________________________________________
From: Dmitry Kravtsov <kravtsov@falt.deep.ru>
Maxim Timofeyev wrote:
> MT>> Собственно %subj%! Порты - ttyS* (другими словами - модемы).
> MT>> И интересует не вообще отключить эту возможность, а только для
> определенных
> MT>> юзеров.
> MT>> Да... Совсем забыл - юзера звонят по ppp с pap'ом...
> IS> Поставь им вместо шелла что нибудь другое. Hапример /bin/true.
> IS> Или /bin/passwd. Это если я тебя правильно понял.
> ИМХО ты меня неправильно понял... Когда юзвер заходит по PAP'у, то
> mgetty подставляет ему то, что в конфиге на /AutoPPP/ прописано, т.е.
> pppd!
Точно! Причем программа, которая указана в /AutoPPP/ (pppd) совершенно
не знает, кот там "пришел". Она просто запускается от root-а. А уже сам
pppd должен провести каким-то образом авторизацию.
> В результате в /etc/passwd ИМХО он только проверяет наличие или
> отсутствие такого юзера. Так что подстановка пользователю
> вместо shell'а чего-то типа /dev/null не даст никакого результата!
> Хотя я только что придумал - убрать соотв. строку из pap-secrets и * в
> /etc/passwd... ;)
Hекрасиво... Я, например, пропатчил pppd, чтобы он в скрипты ip-up и
ip-down передавал еще один параметр -- имя авторизованного юзера. А
дальше - просто пишеш в /etc/ppp/ip-up что-то типа
==========
if [ $6 = юзер-одиночка ]
then
if [ такой юзер уже залогинен дважды(для этого можно использовать
`who`) ]
then
exec kill `cat /var/run/$1.pid`
fi
fi
==========
А можно еще так (если авторизация через shadow):
===== ip-up =====
if [ $6 = юзер-одиночка ]
then
passwd -l $6
fi
===== ip-down ====
if [ $6 = юзер-одиночка ]
then
passwd -u $6
fi