callback − перезвонить пользователю, позволяя войти в систему
callback [−x<уровень_отладки>] [−V] [−l<модемные_линии>] [−m<строка_инициализации>] [−s<скорость>] [−d] [−S] [номер_телефона] ...
Вызвать заданный номер телефона (если он не задан в командной строке, запросить у пользователя), и если СОЕДИНЕНИЕ установлено, передать управление mgetty(8), представив пользователю приглашение ко вводу имени для входа в систему.
callback используется для следующих целей:
* безопасность: позволяет быть уверенным, что ваши пользователи те, за кого они себя выдают, поскольку звонят с хорошо известного номера телефона.
* экономия расходов: позволяет вашей компании перезвонить вам.
callback может быть вызван непосредственно из командной строки (для этого нужны права администратора системы, в противном случае callback не сможет передать сигнал mgetty), или из файла "login.config" принадлежащего mgetty. Смотри образец файла login.config, поставляемый с mgetty.
−x <уровень_отладки>
Используйте заданные уровни подробности для журналирования: 0 − обозначает полное молчание, 5 − очень подробно.
−V |
Напечатать номер версии и завершить работу. |
||
−d |
Не переходить в фоновый режим. Это полезно для отладки. |
−l <модемные_линии>
Использовать указанные модемные линии. Несколько линий разделяются знаком ":", как в sendfax(8). Пример: callback −l tty1a:tty2a
−m <строка_инициализации>
Установить строку инициализации модема (как обычно: ожидать отправить ожидать …). С её помощью можно делать практически всё, до тех пор, пока модем продолжает отвечать на команды (то есть, здесь не должно быть команды ATQ1) и переключить модем в режим данных (AT+FCLASS=0), если он используется в режиме данных/факса.
−s <скорость>
Скорость передачи в битах, которая должна использоваться соединением машина−модем. Скорее всего вы захотите установить её с помощью опции "speed <nnnn>" в файле "callback.config".
−S |
Использовать для обратного звонка ту линию, откуда был запущен callback. callback может использовать несколько модемных линий, а с помощью этой опции вы можете заставить его использовать тот модем, с которого поступил звонок. |
При запуске callback прочитает все свои настройки из файла, который обычно называется /etc/mgetty/callback.config. Смотри документацию в mgetty.info для уточнения деталей.
В большинстве случаев callback не выводит каких либо ошибок в консоль, потому что он должен немедленно отключиться от терминала, в случае если кто−то захочет, чтобы ему перезвонили по модемной линии, с которой поступил звонок. Таким образом, нет сообщений для вывода…
В результате этого, все ошибки callback журналируются в файл протокола (количество сообщений регулируется опцией "−x"), в том числе о причинах, по которым вызов не был выполнен или о том, что именно не удалось.
Только два сообщения могут выводиться на стандартный вывод и они самоочевидны: вызов от пользователя, не являющегося root, и неправильная опция.
Как это работает?
Это немного сложнее, из за способа управления init(8) файлом utmp(5). Вы не можете воспользоваться любой программой, которая запросит у пользователя входное имя и запустит используемую пользователем оболочку ("login shell"), это не сработает (по той же причине mgetty(8) запускается из /etc/inittab).
mgetty должна запросить у пользователя входное имя. Но я не хочу помещать весь код для дозвона в mgetty, раздувая её ещё больше.
Способ достичь этого состоит в следующем: callback звонит через модемное устройство. Он должен работать только с таким модемным устройством, за которым наблюдает mgetty (!). Когда соединение установлено (CONNECT), callback отправляет mgetty сигнал SIGUSR1, который, в свою очередь, отправит тот же сигнал назад, сообщая "я получил твой сигнал". Тогда callback завершает работу и mgetty подбирает установленное подключение, запрашивает у пользователя входное имя и выполняет системный вызов fork, запуская /bin/login.
Вывод: callback не будет работать с версиями mgetty до 4 февраля 1996 года (в которых нет поддержки этого сигнала), и если у вас это не работает, пожалуйста вышлите мне ОБА файла журналов mgetty и callback, в противном случае неисправность очень трудно найти.
callback содержит экспериментальный код, на данный момент не очень стабильный.
callback callback довольно плохо обрабатывает повторные попытки.
callback должен запускаться с правами root.
Большая часть документации заключается в чтении исходного текста.
mgetty(8), ct(1)
callback Copyright (C) 1993−1996 Герт Дёринг (Gert Doering), <gert@greenie.muc.de>.
Перевод выполнен на сайте коллективных переводов http://translated.by. Авторы перевода: Олег Безначев aka saturn721, Владимир Ступин <vladimir@stupin.su>.