Выбрать главу

Для проверки новой записи:

GSEC> display hpotter

user_name uid gid full name

HPOTTER Harry Potter

! ! !

ПРИМЕЧАНИЕ. Если вы попытаетесь ввести недопустимые символы в строке пароля, gsec просто завершит работу без выдачи сообщения.

. ! .

mo[dify]

Используется для изменения (редактирования) значения столбца в существующей записи USERS. Задайте имя пользователя, для которого требуются изменения, затем укажите один или более переключателей, определяющие изменяемые элементы, и новое значение для каждого из них.

Например, для задания идентификатора пользователя 25 для пользователя mickey, изменения имени (first name) на Michael и изменения пароля на icecream введите следующие переключатели:

GSEC> modify mickey -uid 25 -fname Michael -pw icecream

Вы не можете изменить имя пользователя. Удалите старого пользователя и добавьте нового.

de[lete]

Удаляет пользователя с указанным именем из таблицы USERS. Команда не получает никаких аргументов и переключателей.

de[lete] имя-пользователя Пример:

GSEO delete mickey

Вы можете использовать команду display, чтобы убедиться в удалении записи.

h[elp] или ?

Любой из этих переключателей позволяет отобразить общие сведения о командах gsec, переключателях и синтаксисе.

q[uit]

Завершает интерактивную сессию.

Использование gsec из командной строки

Для использования gsec из командной строки преобразуйте каждую команду gsec в командный переключатель, добавив префикс в виде знака минус (-). Переключатели остаются теми же самыми.

Например, для добавления пользователя claudio и назначения ему пароля dbkeycop в командной строке введите следующее.

В Windows:

,.\BIN> gsec -add claudio -pw dbkeycop -user SYSDBA -password masterkey

В POSIX:

bin]$ ./gsec -add claudio -pw dbkeycop -user SYSDBA -password masterkey

Для отображения содержимого таблицы USERS введите: > gsec -display и так далее.

Сообщения об ошибках gsec

В табл. 34.2 представлены сообщения об ошибках gsec.

Таблица 34.2. Сообщения об ошибках gsec

Сообщение

Причины и рекомендуемые действия

Add record error (Ошибка добавления записи)

Неверный синтаксис или вы пытаетесь добавить пользователя, который уже существует, или вы не являетесь пользователем SYSDBA. Используйте modify, если пользователь уже существует

<string> already specified (<строка> уже была задана)

Вы включили переключатель более одного раза в команду add или modify. Введите команду заново

Error in switch specifications (Ошибка в задании переключателя)

Это сообщение сопровождает другие сообщения об ошибках и указывает на то, что был использован неверный синтаксис. В этом случае просмотрите другие сообщения об ошибках

Find/delete record error (Ошибка поиска удаляемой записи)

Команда удаления не может найти указанного пользователя или вы не являетесь пользователем SYSDBA

Find/display record error (Ошибка поиска отображаемой записи)

Команда модификации не может найти указанного пользователя или вы не являетесь пользователем SYSDBA

Incompatible switches specified (Заданы несовместимые переключатели)

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

Invalid parameter, no switch defined (Неверный параметр, не задан переключатель)

Вы указали значение без аргумента

Invalid switch specified (Задан неверный переключатель)

Вы задали нераспознанный переключатель. Исправьте и вновь выполните команду

No user name specified (He задано имя пользователя)

Задавайте имя пользователя после команд или переключателей добавления, изменения или удаления

Record not found for user: <string> (He найдена запись для пользователя: <строка>)

Запись указанного пользователя не найдена. Отобразите список пользователей и вновь введите команду

Unable to open database (Невозможно открыть базу данных)

База данных безопасности не существует или не может быть локализована на сервере. Запустили ли вы gsec вне каталога Firebird? Пытаетесь ли вы получить доступ к удаленному серверу, который не был инсталлирован?

Специальная тема: настройка безопасности пользователя

Идентификация пользователя Firebird довольно проблематична. Хорошая новость: все изменится к лучшему в Firebird 2. Плохая новость: нам придется с этим жить еще некоторое время. Ivan Prenosil- эксперт, в течение длительного времени занимающийся разработкой баз данных с использованием Firebird и его предшественников - создал несколько техник для настроек безопасности баз данных. Ivan согласился поделиться с вами своими советами и скриптами в данной специальной теме.

База данных безопасности

Когда пользователь соединяется с базой данных Firebird, его пароль сравнивается с зашифрованным паролем в базе данных безопасности. В версии 1.0.x имя базы данных isc4.gdb, в версии 1.5 - security.fdb. Это обычная база данных Firebird, таблица, используемая для идентификации пользователей, USERS. Ее (упрощенная) структура выглядит следующим образом:

CREATE TABLE USERS (

USER_NAME VARCHAR(128) ,

PASSWD VARCHAR(32) ); /* V

GRANT SELECT ON USERS TO PUBLIC;

Для проверки разрешений к этой таблице существует два очевидных препятствия. Одно - ни один пользователь не может прочесть полный список пользователей и зашифрованных паролей. Другое - только пользователь SYSDBA может изменять эту таблицу - пользователи не могут изменять их собственные пароли.

При этом, если вы пользователь SYSDBA, вы можете соединиться с базой данных безопасности, как и с любой другой базой данных, и изменять ее структуру. Это означает, что вы можете ее улучшать.

! ! !

ВНИМАНИЕ! Не забудьте сделать копию базы данных безопасности перед тем, как начнете ее изменять!

. ! .

Различие версий

При идентификации пользователей в Firebird 1.0.x сервер соединяется с базой данных безопасности, отыскивает необходимую информацию, а затем отсоединяется. Между соединениями у вас могут быть "не очень хорошие отношения" с isc4.gdb.

Однако в Firebird 1.5 соединение с базой данных безопасности сохраняется, пока пользователь соединен с любой базой данных на сервере. Поэтому в версии 1.5 вы должны выполнять все изменения с копией базы данных безопасности и позже ее инсталлировать. Нужно выполнить следующие шаги.

1. Сделайте оперативную копию security.fdb с использованием gbak.

2. Восстановите ее с другим именем.

3. Запустите скрипт для копии.

4. Закройте сервер.

5. Поменяйте местами старую и новую версии security.fdb и переименуйте.

6. Запустите заново сервер.

Предоставление пользователям возможности изменять свой собственный пароль

Самым простым и наиболее известным способом изменения является предоставление следующей привилегии изменения для пользователя, не являющегося SYSDBA, GRANT UPDATE ON USERS то PUBLIC и добавление триггера, предотвращающего изменение пользователем, не являющимся SYSDBA, пароля других пользователей.

Вот скрипт:

/* Copyright Ivan Prenosil 2002-2004 */