Документация Firebird → Утилиты Firebird → Утилита 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 перейдет в интерактивный режим, и скрипт прервет выполнение, ожидая клавиатурного ввода пользователя. Путь решения данной проблемы был описан выше.
Документация Firebird → Утилиты Firebird → Утилита GSEC → Особенности работы с GSEC |