Управляющая модель средства доступа к сервису (SAF) является иерархической. Наивысший уровень связан с администрированием мониторами портов. Нижний уровень связан с администрированием сервиса. На уровне администрирования мониторами портов, мониторы портов можно добавлять, удалять, запускать, разрешать или запрещать. К другим функциям, выполняемым на этом уровне, относятся запрос информации о состоянии монитора порта, замена файла конфигурации системы, инсталяция или замена файла конфигурации монитора порта и запрос о том, что монитор порта считал свой управляющий файл.
В этом разделе описывается, как управлять монитором порта. Управление можно осуществлять, используя доступ к множеству меню System Administration (Администрирование системы), или прямо, используя множество команд ttymon.
После выбора ports из меню "Администрирование системы" и Port Monitor Management (Управление мониторами портов) из меню "Ports", вы получите следующий экран:
------------------------------------------------------------ Port Monitor Management ------------------------------------------------ add - Add a Port Monitor disable - Disable a Port Monitor enable - Enable a Port Monitor list - List Port Monitor Information modify - Modify a Port Monitor remove - Remove a Port Monitor start - Start a Port Monitor stop - Stop a Port Monitor ------------------------------------------------------------Далее описана каждая из этих функций.
Эта функция используется администратором системы или тем пакетом, который устанавливается для создания новых экземпляров монитора порта. Это задание создает монитор порта, оно создает поддерживаемую структуру каталогов в /etc/saf и /var/saf для нового монитора порта pmtaf и управляющего файла монитора порта. Оно также добавляет элемент для нового монитора порта к управляющему файлу SAC.
Вас попросят заполнить нижепреведенную форму, чтобы добавить новый монитор порта:
------------------------------------------------------------ Add a Port Monitor ------------------------------------------------ Port monitor tag: Port monitor type: Command to start the port monitor Version number: Start port monitor immediately? Yes Start state: ENABLED Restart count:0 (Optional fields) File name of the port monitor configuration script: Comments: Fill in the form and then press SAVE ------------------------------------------------------------
tag - это уникальный буквенный идентификатор, который идентифицирует конкретный монитор.
type - это вид монитора; например, "listen".
Command - это полное имя команды, которая запускает монитор порта.
Version number относится к номеру версии файла базы данных мониторов портов.
и Start state, и Start immediately fields переключаются с помощью клавиши CHOICE; их значения по умолчанию (ENABLED и Yes) заранее устанавливаются в форму.
Restart count - это число раз, которое монитор порта будет перезапускаться в случае отказа до тех пор, пока не будет помещен в состояние отказа.
optional fields позволяют указывать действия монитора в командном файле и обеспечивать комментарий, относящийся к конкретному монитору.
SAC может настраивать среду каждой сервисной программы, которую он запускает, интерпретируя командный файл конфигурации сервиса при наличии такового, непосредственно перед запуском этой сервисной программы. Также возможно настраивать среду монитора порта ttymon. Командные файлы конфигурации мониторов портов являются необязательными и устанавливаются выбором опции "configuration script" (командный файл конфигурации) при добавлении нового монитора.
Модификации среды, сделанные с помощью файла конфигурации мониторов порта, наследуются монитором порта и всеми сервисными программами, которые он вызывает.
Монитор порта должен уметь ограничивать доступ к системе, не прибегая к помощи сервиса, который все еще выполняется. Чтобы сделать это, монитор порта должен поддерживать два внутренних состояния: enabled и disabled. Монитор порта запускается в том состоянии, которое указывается переменной среды ISTATE, обеспечиваемой SAC.
Разрешение или запрещение монитора порта влияет на все порты, за которые ответственен этот монитор. Если монитор отвечает только за один порт, влиянию будет подвергаться только этот порт. Если монитор порта отвечает за многочисленные порты, влиянию подвергнутся все эти порты.
Разрешение и запрещение - это динамическая операция: она заставляет монитор порта изменить свое внутреннее состояние. Это действие не распостраняется на новые вызовы монитора порта.
В то же время, разрешение и запрещение - это и статичная опрация: она вызывает изменение в управляющем файле. Действие этого изменения распостраняется и на новые вызовы монитора порта.
Это меню предоставляет список тех мониторов портов, которые разрешаются и позволяют выбирать те, которые следует запретить. SAC посылает сообщение о запрещении в монитор порта.
Эта функция предоставляет вам список мониторов, запрещенных в текущий момент, и позволяет выбрать те, которые должны быть разрешены. SAC посылает сообщение о разрешении в монитор порта. Если монитор порта в состоянии ENABLED, это значит, что он прогоняется в текущий момент и ждет соединения.
Это меню позволяет выбирать монитор порта и выводить на экран его информацию.
Эта функция позволяет вам выбрать один из мониторов портов. Когда вы сделаете выбор, отобразится экран "add" с заполненными текущими значениями, и вам можно модифицировать любое поле в форме.
В этом задании отображается список мониторов портов и вам предоставляется возможность выбрать и удалить один или несколько мониторов из списка. Результат этой операции - удаление элемента монитора порта из управляющего файла SAC и повторное считывание SAC файла. Если удаленный монитор порта не прогоняется, никаких дальнейших действий не предпринимается. Если удаленный монитор порта прогоняется, то контроллер доступа к сервису посылает ему SIGTERM, чтобы указать, что он должен завершится. Обратите внимание, что структура каталога этого монитора порта остается нетронутой, но больше к ней не ссылаются.
Если вы делаете выбор не запускать монитор сразу же, вы можете запустить его, выбрав эту опцию меню, или можете использовать команду sacadm, описанную ниже.
Эта функция позволяет останавливать монитор порта, который находится в действии в текущий момент.
Монитор порта ttymon, вызывается с помощью контроллера доступа к сервису (SAC). Он запускается с помощью init, когда система вводит многопользовательский режим. После этого одной из функций SAC является запуск всех тех мониторов портов, конфигурации которых вы создали.
Начиная с UNIX System V, Версия 4, ttymon выполняет функции, которые в предыдущих версиях выполняли getty и uugetty. Так же как getty и uugetty, ttymon устанавливает режимы терминала и скорости линий для порта, к которому подсоединяется пользователь, обеспечивая связь с сервисом, относящимся к этому порту.
ttymon отличается от getty и uugetty по нескольким важным пунктам:
У ttymon есть три основные функции:
Каждый экземпляр ttymon имеет свой собственный управляющий файл, который указывает порты монитора и сервис, относящийся к каждому порту. Этот файл содержит поле ttylabel, которое относится к определению скорости и TTY в файле /etc/ttydefs. Смотрите ttyadm (1М), чтобы получить описание конкретной информации о ttymon, которая содержится в управляющем файле ttymon.
После запуска монитора порта ttymon, он инициирует все порты, указанные в его управляющем файле, переправляет указанные модули STREAMS в порты, устанавливает значения скорости и исходной termio (7), а также пишет подсказки в порт. Затем он ждет ввода пользователя.
Запрос на соединение бывает успешным, когда по крайней мере один символ, отличный от break-символа, за которым следует символ новой строки будет получен из порта. Если сервис, который должен быть вызван, это сервис login, то символу новой строки будет предшествовать имя регистрации пользователя. Символ новой строки не будет распознан, если скорость линии порта и устройства, подсоединенного к порту, будут совпадать.
Если на терминале будет распечатана несчитываемая подсказка, пользователь посылает BREAK, чтобы указать, что скорости линий порта и устройства не совместимы. Каждое появление разъединения (break) приводит к тому, что ttymon перейдет к следующему ttylabel в /etc/ttydefs, поднастраивая свои значения termio(7) и выдавая подсказку.
При успешном завершении выполнения запроса на соединение, ttymon интерпретирует командный файл конфигурации сервиса, если таковой существует. Затем он вызывает сервис, относящийся к порту. Этот сервис может быть любым сервисом, конфигурацию которого вы создаете. Типичным примером служит login.
Монитор ttymon не имеет взаимосвязи с портами TTY, когда они подсоединяются к сервису. После завершения выполнения сервиса в порте, ttymon возвращает порт в его исходное состояние.
Автонастройка скорости позволяет системе утанавливать скорость линии заданного порта TTY в соответствии со скоростью линии того средства, которое подсоединено к этому порту, без вмешательства пользователя. Каждый раз, когда добавляется сервис, управление которого осуществляется с помощью монитора ttymon, должно быть обеспечено ttylabel (см. "Добавление сервиса").
Если это ttylabel указывает на элемент в файле /etc/ttydefs, который имеет A в поле автонастройки скорости, то ttymon попытается определить требуемую скорость линии прежде чем распечатать подсказку.
После получения обнаружения несущей в один из портов TTY, но до начала распечатки подсказки, ttymon выполняет следующее:
Средство доступа к сервису (SAF) обеспечивает общий интерфейс, которому должны подчиняться все мониторы портов. ttymon - это монитор порта под управлением контроллера SAF - контроллера доступа к сервису. (Смотрите "Обзор средства доступа к сервису, "Управление мониторами порта" и "Управление сервисом", где описываются средство доступа к сервису, управляющие файлы, которые он поддерживает, а также команды, используемые для управления мониторами портов и сервисом.)
На рис. 3 показано как вызывается сервис, который может быть и сервисом login, с помощью ttymon.
Вызов сервиса TTY
init | | sac | | ttymon | ---------------------- | | | service service service -------- forked & exec'ed
Рис. 3
Вызовы мониторов портов ttymon могут быть многочисленными, каждый из которых идентифицируется с помощью уникального pmtag. Каждый из этих мониторов портов могут управлять несколькими портами, получающих запросы на соединение.
Любой порт имеет один и только один сервис, связанный с ним. Каждый порт и связанный с ним сервис, идентифицируется тегом сервиса - svctag. Теги сервиса для каждого данного монитора порта - уникальны. Когда контроллер доступа к сервису запускает монитор порта, монитор порта считывает свой управляющий файл, который содержит информацию о том какими портами управлять и какой сервис (то есть процесс) связан с каждым портом.
Некоторые мониторы портов ttymon могут устанавливаться автоматически, когда система переходит на многопользовательский уровень. Чтобы выяснить, была ли конфигурация системы создана автоматически, введите команду
sacadm -lпосле того как система будет в многопользовательском режиме. Чтобы просмотреть список всего сервиса, доступного под управлением мониторов портов ttymon, введите команду
pmadm -l -t ttymon
Модуль линейной дисциплины - ldterm - может быть и не указан в сервисе с автоматически связанной конфигурацией. Вместо этого он может быть определен в управляющем файле autopush ("автоматического проталкивания") и "проталкиваться" при помощи средства "автопроталкивания" (см. autopush (1М)). Autopush "проталкивает" ранее указанные модули в требуемый STREAM каждый раз, когда устройство открыто.
Сервис не определяется для консоли и портов contty под управлением любого из мониторов ttymon. Вместо этого в файле /sbin/inittab есть строка для каждого сервиса. Эти строки содержат обращения к ttymon в режиме "express". (См. "f3ttymon Express").
Средство доступа к сервису требует, чтобы каждый тип монитора порта обеспечивал какую-то команду администратора. Эта команда должна форматировать информацию, получаемую из параметров командной строки, в таком виде, чтобы ее можно было включать в управляющие файлы для этого типа монитора порта.
ttyadm является командой администратора монитора ttymon. Команда ttyadm форматирует информацию на основе параметров, по которым она вызывается, и записывает эту информацию в стандартный вивод.
Примечание. Управляющий файл монитора порта обновляется с помощью команд администратора контроллера доступа к сервису sacadm и pmadm. ttyadm обеспечивает средство представления данных конкретного монитора порта (то есть ttymon - specific) этим командам. Командная строка sacadm использует ttyadm только с параметром -V. ttyadm -V сообщает SAC номер версии используемой команды ttymon.
ttyadm - это один из аргументов, которые pmadm использует с параметром -a, чтобы сформатировать информацию для включения в управляющий файл ttymon. ttyadm представляет эту информацию (в виде стандартного вывода) pmadm, который помещает ее в файл. Использование ttyadm описывается ниже под заголовком "Добавление Монитора порта ttymon". Информация pmspecific в управляющем файле монитора порта будет различной для различных типов мониторов.
ttyadm также включается в командную строку sacadm, когда монитор порта добавляется к системе. Она используется, чтобы обеспечить номер версии ttymon для включения его в управляющий файл монитора порта.
Команда sacadm имеет следующий формат:
sacadm -l [-p pmtag | -t type]
Команда sacadm только с параметром -l просматривает все мониторы портов, определенные для системы в текущий момент, без заголовков. Далее приводится пример ее вывода: swt 2
Пример.
starlan:listen:dx:5:NOTRUNNING:/usr/lib/saf/listen -m slan# starlan ttymon1:ttymon: :0:ENABLED :/usr/lib/saf/ttymon # ttymon2:ttymon: :0:ENABLED :/usr/lib/saf/ttymon #
sacadm можно также использовать для просмотра одного монитора порта (-p) или только мониторов портов одного из типов (-t).
Чтобы выяснить, к каким портам имеют доступ пользователи, сначала идентифицируйте все разрешенные мониторы портов ttymon, используя команду:
sacadm -l -t ttymon #sacadm -1 -t ttymon PMTAG PMTYPE FLGS RCNT STATUS COMAND # ttymon1 ttymon - 0 ENABLED /usr/lib/saf/ttymon # ttymon3 ttymon d 0 DISABLED /usr/lib/saf/ttymon #
В данном списке монитор порта ttymon1 - разрешен. Это значит, что он принимает сервисные запросы для всего своего сервиса, который разрешен.
Чтобы определить какие сервисные программы разрешены, используйте
pmadm -l -p ttymon1
Она просматривает все сервисы TTY с созданной конфигурацией для монитора порта ttymon1.
#pmadm -l -p ttymon1 PMTAG PMTYPE SVCTAG FLGS ID <PMSPECIFIC> ttymon1 ttymon 11 u root /dev/term/11 - - /usr/bin/login - 9600 - login: - # ttymon1 ttymon 12 ux root /dev/term/12 - - /usr/bin/login - 9600 - login: - # ttymon1 ttymon 13 u root /dev/term/13 - - /usr/bin/login - 9600 - login: - # ttymon1 ttymon 14 ux root /dev/term/14 - - /usr/bin/login - 9600 - login: - #
Разрешенный сервис - тот, который не имеет X в колонке FLGS. Порты, соответствующие этому сервису (/dev/term/11 и /dev/term/13), являются доступными для пользователя.
Примечание. В версии 4.0 UNIX System V команда who -l просматривает все функционирующие мониторы портов, а не порты TTY с доступом. Выполняйте процедуру, описанную выше, чтобы обнаружить порты TTY, к которым есть доступ.
Формат команды, которая добавляет монитор порта ttymon следующий:
sacadm -a -p pmtag -t type -c cmd -v version -n [ -f dx ] [-n count] [-y comment] [ -z script ]
Эта команда добавляет строку в управляющий файл SAC.
Командный файл конфигурации мониторов портов можно определить, используя команду с параметрами -g и -z.
Командные файлы конфигурации обычно для базовых операций не требуются.
Формат команды, удаляющей монитор порта следующий:
sacadm -r -p pmtag
Чтобы внести изменения в элемент монитора порта, всегда удаляйте элемент, а затем добавляйте новый, используя команду sacadm. Не редактируйте управляющий файл SAC.
Командные файлы конфигурации системы и мониторов портов управляются с помощью sacadm; командные файлы конфигурации сервиса управляются с помощью pmadm и описаны под заголовком "Управление сервисом". Файлы конфигураций системы и мониторов портов позволяют модифицировать среду системы и среду мониторов. Они написаны на интерпретируемом языке, описанном на странице руководства doconfig (3N) и в "Руководстве программиста: сетевые интерфейсы". Примеры командных файлов приводятся ниже.
Командный файл конфигурации системы _sysconfig интерпретируется после запуска SAC. Командный файл конфигурации монитора порта интерпретируется SAC непосредственно перед тем, как SAC запускает этот монитор порта.
Файлы конфигураций системы и мониторов портов может распечатать любой пользователь системы. Но только администратор системы выполнить их инсталяцию или удаление.
sacadm -G[ -z script]
Командный файл конфигурации системы /etc/saf/_sysconfig настраивает среду для всего сервиса системы. Когда он запускается, контроллер доступа к сервису интерпретирует файл конфигурации системы, используя библиотечную функцию doconfig. Файл _sysconfig по умолчанию, содержащий только строку комментария, является частью поставляемой системы.
Параметр -G используется для распечатки или замены командного файла конфигурации системы. Сам параметр -G распечатывает файл конфигурации системы. В сочетании с -z параметр -G заменяет /etc/saf/_sysconfig на содержимое файла script. Другие сочетания параметров с -G являются не действительными.
На рис. 4 файл _sysconfig устанавливает переменную зоны времени -TZ.
Пример файла конфигурации системы
assign TZ-EST5EDT # set TZ runwait echo SAC is starting > /dev/console
Рис. 4
Примечание. Параметр -z также используется с параметром -a для указания содержимого файла конфигурации мониторов портов при создании монитора порта.
sacadm -g -p pmtag [-z script]
Командный файл конфигурации мониторов портов /etc/saf/pmtag/_config настраивает среду для сервиса, имеющегося в наличии, с помощью специальной совокупности точек доступа, за которую отвечает монитор порта pmtag. Когда SAC запустит монитор порта, при существовании командного файла конфигурации мониторов портов он интерпретируется с помощью библиотечной функции doconfig (3N).
Параметр -g используется для распечатки, инсталяции или замены командного файла конфигурации мониторов портов. Параметр -g требует наличия параметра -p. Только с параметром -p параметр -g распечатывает командный файл конфигурации мониторов портов pmtag. Параметр -g с параметрами -p и -z осуществляют инсталяцию файла script, также как файл конфигурации мониторов портов для монитора порта pmtag, или, если существует /etc/saf/pmtag/_config, он заменяет _config на содержимое script. Другие сочетания параметров с -g - недействительны.
На рис. 5 в гипотетическом файле _config команда /usr/bin/daemon предположительно запускает процесс daemon, который создает и сохраняет мультиплексор STREAMS. После инсталяции этого командного файла конфигурации команда может выполняться как раз перед запуском монитора порта, которому она требуется.
Пример файла конфигурации монитора порта
run /usr/bin/daemon # build a STREAMS multiplexor. runwait echo SPMTAG is starting > /dev/console
sacadm -x[-p pmtag]
Когда изменения внесены в управляющий файл SAC, SAC необходимо уведомить об изменении. Когда изменения внесены в управляющие файлы монитора порта, этот порт монитора необходимо об этом уведомить. Когда для внесения изменений используется sacadm и pmadm, уведомление происходит автоматически. Если вы редактируете файлы прямо, SAC и мониторы портов не уведомляются. sacadm следует вызывать с параметром -x, чтобы уведомить SAC или мониторы портов об изменениях.
sacadm с параметром -x просит SAC обновить свою внутреннюю копию информации в управляющем файле SAC. sacadm с параметрами -x и -p заставляет SAC послать сообщение в указанный монитор порта.
Администраторам системы рекомендуется не редактировать эти файлы прямо.
Синтаксис команд | Описание |
---|---|
sacadm -a -p pmtag -t type -c"cmd" -v ver[-f dx][-n count]\ [-y"comment"][-z script] | Добавляет элемент монитора порта в управляющий файл |
sacadm -l[-p pmtag|-t type] | Распечатывает информацию о состоянии монитора порта |
sacadm -L[-p pmtag|-t type] | Распечатывает информацию о состоянии монитора порта в сжатой форме |
sacadm -G[-z script] | Распечатывает или заменяет файл конфигурации системы /etc/saf/_sysconfig |
sacadm -g -p pmtag[-z script] | Распечатывает или заменяет файл конфигурации мониторов портов /etc/saf/pmtag/_config |
sacadm -e -p pmtag | Разрешает монитор порта pmtag |
sacadm -d -p pmtag | Запрещает монитор порта pmtag |
sacadm -s -p pmtag | Запускает монитор порта pmtag |
sacadm -k -p pmtag | Останавливает монитор порта pmtag |
sacadm -r -p pmtag | Удаляет элемент для монитора порта pmtag из управляющего файла SAC |
Назад | Содержание | Вперед