Персональный
сайт
Игоря
Сысоева


 
english
обо мне
 
sysoev.ru
 
nginx
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
 

Провайдим с помощью getty по-старинке

 

24.08.1999

После того, как мы настроили порты для входящих звонков, необходимо эти звонки принимать. Проще всего это делается с помощью программы getty. Для этого нужно чуть-чуть изменить файл /etc/ttys. Начнём с ttyd1:

ttyd1  "/usr/libexec/getty std.57600"  dialup  on insecure

Программы из этого файла запускаются процессом init. Он просматривает строки и, если у строки есть параметр "on", то запускает указанную в ней программу на соответствующем терминале. Если программа по каким-то причинам завершает работу, init запускает её снова. В нашем случае он будет запускать getty:

/usr/libexec/getty std.57600 ttyd1

Тип терминала — "std.57600", это терминал без бита чётности и фиксированной скоростью обмена, равной 57600. Мы увеличили скорость с 9600 на 57600. Причина, по которой мы это сделали, объясняется в статье "Протокол V.42bis и скорость порта". Кроме того, мы перевели наш терминал в ранг небезопасных — "insecure", то есть на этом терминале нельзя залогиниться под root'ом.

То же самое Вы можете сделать для остальных портов — ttyd2 и ttyd3.

После этого нужно перезапустить процесс init, который запускает программы из /etc/ttys:

kill -1 1

После того, как процесс init запустит getty, getty попытается открыть устройство /dev/ttyd0 и будет заблокирован до тех пор, пока сигнал DCD не станет активным, то есть, пока кто-либо не позвонит и модемы не установят соединения. После того, как это произойдёт, getty будет разблокирован и выведет приглашение — "login:". Когда другая сторона введёт имя, getty вызывает login и передаёт ему в качестве параметра введённое имя. После ввода пароля login проводит аутентификацию пользователя и, если имя и пароль правильные, то он вызывает шелл, указанный в /etc/master.passwd для данного пользователя. Если Вы хотите, чтобы этот пользователь мог осуществлять только PPP-соединение с Вашем компьютером, то его шеллом может быть /usr/sbin/pppd.

В Window 95 и NT ввод имени и пароля можно делать ручками в терминальном окне или же автоматизировать этот процесс, написав скрипт.

(C) Игорь Сысоев
http://sysoev.ru