Для проверки новой записи:
GSEC> display hpotter
user_name uid gid full name
HPOTTER Harry Potter
! ! !
ПРИМЕЧАНИЕ. Если вы попытаетесь ввести недопустимые символы в строке пароля, gsec просто завершит работу без выдачи сообщения.
. ! .
Используется для изменения (редактирования) значения столбца в существующей записи USERS. Задайте имя пользователя, для которого требуются изменения, затем укажите один или более переключателей, определяющие изменяемые элементы, и новое значение для каждого из них.
Например, для задания идентификатора пользователя 25 для пользователя mickey, изменения имени (first name) на Michael и изменения пароля на icecream введите следующие переключатели:
GSEC> modify mickey -uid 25 -fname Michael -pw icecream
Вы не можете изменить имя пользователя. Удалите старого пользователя и добавьте нового.
Удаляет пользователя с указанным именем из таблицы USERS. Команда не получает никаких аргументов и переключателей.
de[lete] имя-пользователя Пример:
GSEO delete mickey
Вы можете использовать команду display, чтобы убедиться в удалении записи.
Любой из этих переключателей позволяет отобразить общие сведения о командах gsec, переключателях и синтаксисе.
Завершает интерактивную сессию.
Использование 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 */