Читать интересную книгу Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 151 152 153 154 155 156 157 158 159 ... 238

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

a[dd]

Добавляет пользователя в таблицу USERS:

a[dd] имя-пользователя -pw пароль [другие переключатели]

Здесь имя-пользователя- уникальное новое имя пользователя, а пароль- пароль, связанный с этим пользователем.

! ! !

ПРИМЕЧАНИЕ. Переключателем для нового пароля при добавлении пользователя или при изменении его пароля является -pw. Не путайте его с сокращенной формой переключателя пароля при соединении SYSDBA, который задается в виде -ра.

. ! .

Пример:

GSEO add mmouse -pw Veritas

Для добавления пользователя hpotter с именем Harry Potter и паролем noMuggle введите:

GSEC> add hpotter -fname Harry -lname Potter -pw noMuggle

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

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 */

CONNECT 'C:Program FilesFirebirdFirebird_1_5security.fdb'

USER 'SYSDBA' PASSWORD 'masterkey';

CREATE EXCEPTION E_NO_RIGHT 'You have no rights to modify this user.';

/* Вы не имеете прав для изменения этого пользователя */

SET TERM !!;

CREATE TRIGGER user_name_bu FOR USERS BEFORE UPDATE

AS

BEGIN

IF (NOT (USER = 'SYSDBA' OR USER = OLD.USER_NAME)) THEN

EXCEPTION E_NO_RIGHT;

END ! !

SET TERM ;!!

/** Grants. **/

GRANT UPDATE (PASSWD, GROUP_NAME, UID, GID,

FIRST_NAME, MIDDLE_NAME, LAST_NAME)

ON USERS TO PUBLIC;

Довольно неуклюже предоставлять доступ ко всем столбцам, когда вам реально нужен доступ только к PASSWD. К сожалению, это необходимо, если ваше приложение собирается использовать gsec или сервис API.

Такая модификация не устраняет проблему видимости для PUBLIC полного списка пользователей и их зашифрованных паролей. Это позволяет пользователям очень просто получить список паролей других пользователей и постараться сломать их локально посредством грубой силы[136].

1 ... 151 152 153 154 155 156 157 158 159 ... 238
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри.
Книги, аналогичгные Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри

Оставить комментарий