Документация FirebirdУтилиты FirebirdУтилита GSEC → Особенности работы с GSEC
Firebird home Firebird home Пред.: Удаленный запуск GSECНачало: Документация FirebirdУровень выше: Утилита GSECСлед.: Утилита GSPLIT

Особенности работы с GSEC

Обычные и привилегированные пользователи
Отличия интерактивного и пакетного режимов
Коды завершения в пакетном режиме
Ошибки в пакетном режиме переводят GSEC в интерактивный режим

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

Обычные и привилегированные пользователи

Вносить изменения в базу данных безопасности может только пользователь sysdba. Обычный пользователь может запустить GSEC только для просмотра информации. Начиная с СУБД Firebird 2 пользователь может изменить любую информацию о себе. Вот пример того, что происходит, когда обычный пользователь пытается добавить нового пользователя в базу данных безопасности:

C:\>gsec -user norman -password norman
GSEC> add myuser -pw mypassword
add record error
no permission for insert/write access to TABLE USERS

Обычный пользователь может только просматривать информацию в базе данных. Причем до вресии 2 СУБД Firebird он имеет возможность просмотреть список всех пользователей, зарегистрированных в базе данных безопасности (см. ниже), а в СУБД Firebird 2 он увидит только самого себя.

C:\>gsec -user norman -password norman -display
     user name                      uid   gid     full name
------------------------------------------------------------------------
SYSDBA                              0     0
NORMAN                              0     0      Norman  Dunbar
EPOCMAN                             0     0      Benoit Gilles Mascia

Отличия интерактивного и пакетного режимов

Команды GSEC применимы к обоим режимам, но при работе в пакетном режиме вы должны использовать для них префикс "знак минус" (-), иначе получите нижеследующее сообщение об ошибке:

C:\>gsec -user sysdba -password masterkey display
invalid parameter, no switch defined
error in switch specifications
GSEC>

Заметьте. что GSEC оставляет вас в интерактивном режиме в случае возникновения ошибки. Чтобы этого избежать, достаточно поставить минус перед командой display:

C:\>gsec -user sysdba -password masterkey -display
     user name                      uid   gid     full name
------------------------------------------------------------------------
SYSDBA                              0     0
NORMAN                              0     0      Norman  Dunbar
EPOCMAN                             0     0      Benoit Gilles Mascia

Теперь GSEC выполняет то, что от него требуют - отображает список пользователей, и завершает работу.

Внимание

Переменные окружения операционной системы ISC_USER и ISC_PASSWORD позволят запустить GSEC без использования опций командной строки -user и -password. Однако помните, что оставлять правильные значения в этих переменных на длительное время небезопасно.

Внимание

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

Коды завершения в пакетном режиме

Запуская утилиту GSEC в ОС windows, вы можете проанализировать код завершения через значение переменной %ERRORLEVEL% и определить, удачно завершилась GSEC или возникла ошибка при выполнении требуемой задачи.

В случае с ОС Unix любой разновидности код завершения можно оценить по значению переменной $?.

К сожалению, до СУБД Firebird 2 утилита GSEC всегда завершается с нулевым кодом, что делает невозможным перехватить ошибку ее выполнения в пакетном режиме.

Ошибки в пакетном режиме переводят GSEC в интерактивный режим

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

Пред.: Удаленный запуск GSECНачало: Документация FirebirdУровень выше: Утилита GSECСлед.: Утилита GSPLIT
Документация FirebirdУтилиты FirebirdУтилита GSEC → Особенности работы с GSEC