Это не так. Когда пользователи POSIX соединяются с базой данных без передачи серверу Firebird имени пользователя и пароля, подпрограмма идентификации подставляет текущие характеристики операционной системы вместо характеристик пользователя Firebird. Если пользователь операционной системы имеет привилегии root, опасайтесь, очень опасайтесь.
Поскольку пользователи POSIX могут получить доступ к базам данных Firebird через их учетные данные операционной системы, важно определить надежные взаимосвязи между сервером и каждой клиентской рабочей станцией. Это переводится в записи в /etc/host.equiv или в другие данные, такие как файл .rhost в домашнем каталоге пользователя на сервере.
! ! !
СОВЕТ. Читатель также может поэкспериментировать с файлом /etc/gds_host.equiv - см. текст "Installing InterBase to start automatically and run as a service under Linux" (Инсталляция InterBase для автоматического запуска и выполнения в качестве сервиса под Linux) у Richard Combs на http://community.borland.eom/article/0,1410,27761,00.html.
. ! .
Переменные окружения ISC_USER и ISC_PASSWORD должны быть исключены из системы.
! ! !
ВНИМАНИЕ! Автору не известны способы определения надежной взаимосвязи между рабочей станцией Windows и сервером UNIX, но это не означает, что такое не может быть сделано.
. ! .
Утилита gsec
В Firebird существует утилита gsec в качестве интерфейса командной строки для работы с базой данных безопасности. Она имеет собственную оболочку для интерактивного использования, либо команда gsec может быть непосредственно введена в командной строке операционной системы или запущена из исполняемого скрипта (скрипта командной строки или пакетного файла).
Любой идентифицированный пользователь может запустить gsec, но только пользователь SYSDBA может изменять сведения о пользователе, хранящиеся в базе данных безопасности. Требуются имя пользователя и пароль, независимо от того, видимы ли из командной строки переменные окружения ISC_USER и ISC_PASSWORD. В POSIX, если вы подключились как root, вы можете вызывать gsec без ввода параметров -user и -password.
Запуск интерактивной сессии gsec
В командной строке в каталоге Firebird /bin введите следующее. Для POSIX:
./gsec -user sysdba -password masterkey
Для Windows:
gsec -user sysdba -password masterkey
Подсказка командной строки изменится на GSEO, указывающую, что вы запустили gsec в интерактивном режиме.
Для завершения интерактивной сессии введите QUIT.
SYSDBA может использовать gsec на клиентской машине для управления идентификацией пользователей на удаленном сервере. Синтаксис вызова в этом случае несколько отличается: он требует переключателя -database, за которым следует полный сетевой путь к базе данных безопасности. Например (это одна команда), здесь показывается, как клиент POSIX обращается к серверу Windows в версии 1.5:
./gsec -database hotchicken:с:\Program Files\Firebird\Firebird_1_5\security. fdb
-user sysdba -password masterkey
Следующий пример показывает обращение клиента Windows к серверу POSIX в версии 1.0.x:
gsec -database coolduck:/opt/firebird/isc4.gdb
-user sysdba -password masterkey
Командами интерактивной утилиты gsec являются отображение, добавление, модификация, удаление, помощь и выход. Они не чувствительны к регистру.
* add, modify и delete используются для добавления и удаления пользователей и для изменения паролей. Они требуют в качестве параметра имя пользователя (username) вместе с соответствующими переключателями и аргументами.
* display без имени пользователя отображает список всех пользователей. Пароли не показываются. Эта команда также может получать имя пользователя. В этом случае отображаются подробности этого пользователя.
* help или его алиас ? отображает текст помощи для утилиты.
* quit завершает gsec и закрывает командную строку.
В табл. 34.1 показаны столбцы таблицы USERS вместе с соответствующими переключателями gsec. Требуемыми полями при использовании gsec являются только
USER NAME и PASSWD.
Таблица 34.1. Столбцы таблицы USERS и режимы gsec
Столбец |
Описание |
Режим gsec |
Аргумент |
USER_NAME |
Имя пользователя, распознаваемое идентификацией пользователя на сервере, gsec требует его в качестве параметра для интерактивных команд добавления, изменения и удаления и для соответствующих переключателей командной строки -a[dd], mo[dify] и-d[elete] |
username параметр |
|
SYS_USER_NAME |
Не используется |
||
GROUP_NAME |
Не используется |
||
UID |
Для некоторых платформ POSIX идентификатор пользователя UNIX. Не требуется |
-uid |
integer |
GID |
Для некоторых платформ POSIX идентификатор группы UNIX. Не требуется |
-gid |
integer |
PASSWD |
Текущий пароль для этого пользователя. Требуется |
-pw |
string(10) |
PRIVILEGE |
Не используется |
||
COMMENT |
Не используется |
||
FIRST_NAME |
Имя пользователя. Не требуется |
-fname |
string(31) |
MIDDLE_NAME |
Второе имя пользователя. Не требуется |
-mname |
string(31) |
LAST_NAME |
Фамилия пользователя. Не требуется |
-Iname |
string(31) |
FULL_NAME |
Нет |
||
Также при запуске gsec с удаленной рабочей станции: |
|||
Сервер и путь к файлу базы данных безопасности |
-database |
Путь и имя файла |
Отображает основные столбцы таблицы USERS базы данных безопасности. Пароли никогда не показываются.
user_name uid gid full name SYSDBA
MICKEY 123 345 Mickey Mouse
D_DUCK 124 345 Donald Duck
JULIUS 125 345 J. Caesar
Для отображения той же информации из одной строки таблицы USERS введите:
GSEC> display username
Например:
GSEC> display julius user_name uid gid full name
JULIUS 125 345 J. Caesar
Добавляет пользователя в таблицу USERS:
a[dd] имя-пользователя -pw пароль [другие переключатели]
Здесь имя-пользователя- уникальное новое имя пользователя, а пароль- пароль, связанный с этим пользователем.
! ! !
ПРИМЕЧАНИЕ. Переключателем для нового пароля при добавлении пользователя или при изменении его пароля является -pw. Не путайте его с сокращенной формой переключателя пароля при соединении SYSDBA, который задается в виде -ра.
. ! .
Пример:
GSEO add mmouse -pw Veritas
Для добавления пользователя hpotter с именем Harry Potter и паролем noMuggle введите:
GSEC> add hpotter -fname Harry -lname Potter -pw noMuggle