Опубликован: 12.11.2008 | Доступ: свободный | Студентов: 3585 / 355 | Оценка: 4.31 / 4.35 | Длительность: 19:07:00
Лекция 4:

Управление портами

4.3.2.3. ttymon и средство доступа к сервису

Средство доступа к сервису (SAF) обеспечивает общий интерфейс, которому должны подчиняться все мониторы портов. ttymon - это монитор порта под управлением контроллера SAF - контроллера доступа к сервису. (Смотрите "Обзор средства доступа к сервису, "Управление мониторами порта" и "Управление сервисом", где описываются средство доступа к сервису, управляющие файлы, которые он поддерживает, а также команды, используемые для управления мониторами портов и сервисом.)

В листинге 4.3 показано как вызывается сервис, который может быть и сервисом login, с помощью ttymon.

Вызов сервиса TTY 			

                init
                 |
                 |
                sac
                 |
	             |
	          ttymon
                 |
       ----------------------
       |         |          |
   service    service    service
		
 		-------- forked & exec'ed
Листинг 4.3.

Вызовы мониторов портов ttymon могут быть многочисленными, каждый из которых идентифицируется с помощью уникального pmtag. Каждый из этих мониторов портов могут управлять несколькими портами, получающих запросы на соединение.

Любой порт имеет один и только один сервис, связанный с ним. Каждый порт и связанный с ним сервис, идентифицируется тегом сервиса - svctag. Теги сервиса для каждого данного монитора порта - уникальны. Когда контроллер доступа к сервису запускает монитор порта, монитор порта считывает свой управляющий файл, который содержит информацию о том какими портами управлять и какой сервис (то есть процесс) связан с каждым портом.

4.3.2.4. Конфигурация ttymon по умолчанию

Некоторые мониторы портов ttymon могут устанавливаться автоматически, когда система переходит на многопользовательский уровень. Чтобы выяснить, была ли конфигурация системы создана автоматически, введите команду

sacadm -l

после того как система будет в многопользовательском режиме. Чтобы просмотреть список всего сервиса, доступного под управлением мониторов портов ttymon, введите команду

pmadm -l -t ttymon

Модуль линейной дисциплины - ldterm - может быть и не указан в сервисе с автоматически связанной конфигурацией. Вместо этого он может быть определен в управляющем файле autopush ("автоматического проталкивания") и "проталкиваться" при помощи средства "автопроталкивания" (см. autopush (1М) ). Autopush "проталкивает" ранее указанные модули в требуемый STREAM каждый раз, когда устройство открыто.

Сервис не определяется для консоли и портов contty под управлением любого из мониторов ttymon. Вместо этого в файле /sbin/inittab есть строка для каждого сервиса. Эти строки содержат обращения к ttymon в режиме "express". (См. "f3ttymon Express").

4.3.2.5. Команда ttyadm

Средство доступа к сервису требует, чтобы каждый тип монитора порта обеспечивал какую-то команду администратора. Эта команда должна форматировать информацию, получаемую из параметров командной строки, в таком виде, чтобы ее можно было включать в управляющие файлы для этого типа монитора порта.

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 для включения его в управляющий файл монитора порта.

4.3.2.6. Просмотр информации с помощью команд

Команда 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 ).

4.3.2.7. Доступ к портам TTY

Чтобы выяснить, к каким портам имеют доступ пользователи, сначала идентифицируйте все разрешенные мониторы портов 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, к которым есть доступ.