powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
12 сообщений из 12, страница 1 из 1
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508825
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Почему перестал работать в gsec ключик -display (и команда в интерактиве тоже) ?
Проверьте у себя кто-нить: скачайте снапшот, но НЕ делайте прописку юзеров. Вместо этого - скопируйте сразу пустую security3.fdb в отдельный файл, например, в security3.000
А затем запустите в $FIREBIRD_HOME вот этот батник:
filgsec.bat
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
@echo off
chcp 1251
cls
call :getfbport 
set /a fbport=%errorlevel%
@rem result: fbport =  assigned in firebird.conf, probably NOT equal to 3050

@rem --------- restore empty security3.fdb -------

@echo on
if exist security3.fdb del security3.fdb 
@if exist security3.fdb goto errsec
copy security3.000 security3.fdb

@rem result: empty security3.fdb restored, so isql localhost:employee -user ... -pas ... 
@rem leads to: -Install incomplete, please read chapter "Initializing security database"

@rem ------- add few users via gsec ------
@rem also works: gsec -add u30a -pw u30a
gsec -database security3.fdb -add u30a -pw u30a -fname ozzy -lname osbourne
gsec -database security3.fdb -add u30b -pw u30b -fname ian -lname gillan
gsec -database security3.fdb -add u30c -pw u30c -fname robert -lname plant
gsec -database security3.fdb -add sysdba -pw masterke

@echo check list of users in security3.fdb:
@echo ------- begin of users list -------
@ gsec -database security3.fdb -display 
@echo ------- end of users list ---------
@rem ------- create script and run isql to check that all OK -------
@echo.
@echo #############################################
@echo Next isql will be called. Check that firebird
@echo if running as service or application!
@echo #############################################
@pause

@echo show version;>tmpfbconnect.sql
@echo set list on;set echo on;>>tmpfbconnect.sql
@echo select current_user,current_role,d.* from mon$database d;>>tmpfbconnect.sql
@echo ===========================================
@echo trying to connect using port =^>%fbport%^<:
@echo ===========================================
isql localhost/%fbport%:employee -user u30a -pas u30a -i tmpfbconnect.sql

@rem =========================================================================
@rem NB: firebird process keeps open file security3.fdb ~65 seconds after that
@rem =========================================================================

@rem gsec -database security3.fdb -delete u30a
@rem gsec -database security3.fdb -delete u30b
@rem gsec -database security3.fdb -delete u30c

@del tmpfbconnect.sql 2>nul
@goto eof

:getfbport
  setlocal
  set fbport=3050
  findstr /i /b /c:remoteserviceport firebird.conf > tmpfbconnect.sql
  if errorlevel 1 exit /b %fbport%
  for /f "tokens=2 delims=^=" %%i in (tmpfbconnect.sql) do set fbport=%%i
  del tmpfbconnect.sql 2>nul
exit /b %fbport%

:errsec
@echo off
@rem cls
echo.
echo ERROR: could not erase file security3.fdb!
echo It is possible that this file keeps open less that 65 seconds after last connect.
echo Please wait about 1 minute and repeat after that time.
echo.
pause
:eof
chcp 866

Этот батник:
0) читает firebird.conf и определяет номер порта (если он закомментарен, будет 3050) - см вызов "call :getfbport" ;
1) пытается обнулить security3.fdb по созданной копии (security3.000); если не получается - предупреждает об этом с объяснением причины (ФБ держит sec3.fdb около 60 сек с момента последнего коннекта);
2) вызывает gsec с добавлением трёх обычных юзеров (u30a, u30b, u30c) и еще с добавлением sysdba;
3) вызывает показ списка юзеров: gsec -database security3.fdb -display;
4) делает паузу и предупреждает, что далее надо запустить firebird как службу или как приложение;
5) формирует скрипт-времянку для показа версии ФБ и запускает isql с натравливанием на этот скрипт.

Ну так вот: пункт "3" - не работает.
ЧЯДНТ ?

Вот вывод батника:
batch output
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
'_Єгй п ЄR¤Rў п бва -Ёж : 1251

G:\1INSTALL\FIREBIRD\FB30>if exist security3.fdb del security3.fdb  

G:\1INSTALL\FIREBIRD\FB30>copy security3.000 security3.fdb 
Скопировано файлов:         1.

G:\1INSTALL\FIREBIRD\FB30>gsec -database security3.fdb -add u30a -pw u30a -fname ozzy -lname osbourne 

G:\1INSTALL\FIREBIRD\FB30>gsec -database security3.fdb -add u30b -pw u30b -fname ian -lname gillan 

G:\1INSTALL\FIREBIRD\FB30>gsec -database security3.fdb -add u30c -pw u30c -fname robert -lname plant 

G:\1INSTALL\FIREBIRD\FB30>gsec -database security3.fdb -add sysdba -pw masterke 
check list of users in security3.fdb:
 ------- begin of users list ------- 
 /*почему тут пусто ?*/ 
 ------- end of users list --------- 

#############################################
Next isql will be called. Check that firebird
if running as service or application!
#############################################

Для продолжения нажмите любую клавишу . . . 
===========================================
trying to connect using port =>3050<:
===========================================

G:\1INSTALL\FIREBIRD\FB30>isql localhost/3050:employee -user u30a -pas u30a -i tmpfbconnect.sql 
ISQL Version: WI-T3.0.0.30802 Firebird 3.0 Alpha 1
Server version:
Firebird/Windows/Intel/i386 (access method), version "WI-T3.0.0.30802 Firebird 3.0 Alpha 1"
Firebird/Windows/Intel/i386 (remote server), version "WI-T3.0.0.30802 Firebird 3.0 Alpha 1/tcp (tlprg)/P13:C"
Firebird/Windows/Intel/i386 (remote interface), version "WI-T3.0.0.30802 Firebird 3.0 Alpha 1/tcp (tlprg)/P13:C"
on disk structure version 12.0
select current_user,current_role,d.* from mon$database d;

USER                            U30A
ROLE                            NONE
MON$DATABASE_NAME               G:\1INSTALL\FIREBIRD\FB30\examples\empbuild\employee.fdb
MON$PAGE_SIZE                   4096
MON$ODS_MAJOR                   12
MON$ODS_MINOR                   0
MON$OLDEST_TRANSACTION          172
MON$OLDEST_ACTIVE               289
MON$OLDEST_SNAPSHOT             289
MON$NEXT_TRANSACTION            291
MON$PAGE_BUFFERS                2048
MON$SQL_DIALECT                 3
MON$SHUTDOWN_MODE               0
MON$SWEEP_INTERVAL              20000
MON$READ_ONLY                   0
MON$FORCED_WRITES               0
MON$RESERVE_SPACE               1
MON$CREATION_DATE               2013-12-20 00:48:29.9560
MON$PAGES                       141748
MON$STAT_ID                     1
MON$BACKUP_STATE                0
MON$CRYPT_PAGE                  0
MON$OWNER                       FBADMIN                                                                                      

G:\1INSTALL\FIREBIRD\FB30>chcp 866 
'_Єгй п ЄR¤Rў п бва -Ёж : 866


PS. До кучи здесь же задам еще два вопросика.
1. Что это за новый владелец у employee: FBADMIN - ? Он должен быть в списке database-юзеров ?
2. Каким ключем остановить firebird, запущенный как приложение (firebird.exe -a) ?
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508830
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидПочему перестал работать в gsec ключик -display (и команда в интерактиве тоже) ?
ты ему user/password указывать не пробовал?

Таблоид1. Что это за новый владелец у employee: FBADMIN - ? Он должен быть в списке database-юзеров ?
это возможно косяк. База employee создается через embedded-доступ, так что владельцем становится текущий системный юзер.

Таблоид2. Каким ключем остановить firebird, запущенный как приложение (firebird.exe -a) ?
никаким, только программно или через трей/TM
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508835
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидПочему перестал работать в gsec ключик -display (и команда в интерактиве тоже) ?ты ему user/password указывать не пробовал?Взлетело, псип!

А почему, кстати, добавлять юзеров (-add) можно при работающем ФБ, а вот показать их список - уже нельзя, надо останавливать ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
G:\1INSTALL\FIREBIRD\FB30>gsec -display -user sysdba -pas masterkey
unable to open database
I/O error during "CreateFile (open)" operation for file "G:\1INSTALL\FIREBIRD\FB30\/securi
ty3.fdb"
Error while trying to open file
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.

-- останавливаем ФБ. Иначе не вылезут.
-- пробуем снова:
G:\1INSTALL\FIREBIRD\FB30>gsec -display -user sysdba -pas masterkey
     user name                    uid   gid admin     full name
------------------------------------------------------------------------------------------
------
U30A                                0     0           ozzy  osbourne
U30B                                0     0           ian  gillan
U30C                                0     0           robert  plant
SYSDBA                              0     0
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508844
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, и еще. мелочь, но:

Код: plaintext
1.
2.
3.
4.
G:\1INSTALL\FIREBIRD\FB30>gsec -delete u30b
The user name specified was  not found  in the security database

G:\1INSTALL\FIREBIRD\FB30>gsec -delete u30b -user sysdba -pas masterke
-- ок --

Выделенная фраза сбивает с толку. Юзер `u30b` в этой базе _был_.
Лучше прямо сказать понятное всем: "dlya prosmotra ili edita nado ukazat: -user sysdba -pas masterke" :)
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508849
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВыделенная фраза сбивает с толку. Юзер `u30b` в этой базе _был_.
но он был невидим/недоступен (и потому не найден) для текущего юзера
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508850
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, на десерт: когда процесс ФБ держит открытым файл sec3.fdb, то вызов gsec -display или gsec -del приведёт к полному ступору этого gsec'a.

Он *не* будет реагировать ни на Упр-Це, ни на Упр-Брк. Более того, gsec будет плавать в свой нирване еще и после того, как ФБ закроет sec3.fdb (около 65 сек с момента последней регистрации юзера)
Реагирует он при этом только на срубание через task manager.
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508851
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидВыделенная фраза сбивает с толку. Юзер `u30b` в этой базе _был_.
но он был невидим/недоступен (и потому не найден) для текущего юзерано я не указал текущего юзера, вообще! И раз это требуется (де-факто, а не формально), то почему бы не завопить об этом ?
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508859
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидно я не указал текущего юзера, вообще!
при embedded-доступе это не обязательно, текущим юзером ФБ будет текущий юзер ОС. Не надо на все смотреть исключительно со своего огорода.
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508889
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидно я не указал текущего юзера, вообще!
при embedded-доступе это не обязательно, текущим юзером ФБ будет текущий юзер ОС. Не надо на все смотреть исключительно со своего огорода.А этот текущий юзер ОС - должен/может ли видеть других database-юзеров в sec3.fdb ?
Вот я ввожу команды:
Код: plaintext
1.
2.
3.
4.
5.
gsec -database security3.fdb -add u30a -pw u30a -fname ozzy -lname osbourne
gsec -database security3.fdb -add u30b -pw u30b -fname ian -lname gillan
gsec -database security3.fdb -add u30c -pw u30c -fname robert -lname plant
gsec -database security3.fdb -add sysdba -pw masterke
@rem me as Windows user:
 gsec -database security3.fdb -add Zotov -pw 123 -admin yes 

И далее хочу посмотреть список юзеров, который виден sysdba vs тот список, который виден мною в embedded и non-embedded режиме:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@echo check list of users in security3.fdb:
@echo.
@echo var-1:
@echo ------- begin of users list -------
@gsec -database security3.fdb -display -user sysdba -pas masterke
@echo ------- end of users list ---------
@echo.
@echo.
@echo var-2:
@echo ------- begin of users list -------
@gsec -database security3.fdb -display
@echo ------- end of users list ---------
@echo.
@echo var-3:
@echo ------- begin of users list -------
@gsec -database security3.fdb -display -user Zotov -pas 123
@echo ------- end of users list ---------

И вижу в итоге в вариантах 2 и 3... фигу, только себя:
output
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
check list of users in security3.fdb:

var-1:
------- begin of users list -------
     user name                    uid   gid admin     full name
--------------------------------------------------------------------
U30A                                0     0           ozzy  osbourne
U30B                                0     0           ian  gillan
U30C                                0     0           robert  plant
SYSDBA                              0     0
ZOTOV                               0     0
------- end of users list ---------


var-2:
------- begin of users list -------
     user name                    uid   gid admin     full name
--------------------------------------------------------------------
ZOTOV                               0     0
------- end of users list ---------

var-3:
------- begin of users list -------
     user name                    uid   gid admin     full name
--------------------------------------------------------------------
ZOTOV                               0     0
------- end of users list ---------


PS. Полный текст батника для проверки:
filgsec.bat, v. 2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
@echo off
chcp 1251
cls
call :getfbport 
set /a fbport=%errorlevel%
@rem result: fbport =  assigned in firebird.conf, probably NOT 3050

@rem --------- restore empty security3.fdb and add few users via gsec -------

@echo on
if exist security3.fdb del security3.fdb 
@if exist security3.fdb goto errsec

copy security3.000 security3.fdb
set isc_user=
set isc_password=

@rem also works: gsec -add u30a -pw u30a
gsec -database security3.fdb -add u30a -pw u30a -fname ozzy -lname osbourne
gsec -database security3.fdb -add u30b -pw u30b -fname ian -lname gillan
gsec -database security3.fdb -add u30c -pw u30c -fname robert -lname plant
gsec -database security3.fdb -add sysdba -pw masterke
@rem gsec -database security3.fdb -add Zotov -pw temp%random% -admin yes
gsec -database security3.fdb -add Zotov -pw 123 -admin yes
@rem hangs! do NOT: gsec -database security3.fdb -mapping set 

@echo check list of users in security3.fdb:
@echo.
@echo var-1:
@echo ------- begin of users list -------
@gsec -database security3.fdb -display -user sysdba -pas masterke
@echo ------- end of users list ---------
@echo.
@echo.
@echo var-2:
@echo ------- begin of users list -------
@gsec -database security3.fdb -display
@echo ------- end of users list ---------
@echo.
@echo var-3:
@echo ------- begin of users list -------
@gsec -database security3.fdb -display -user Zotov -pas 123
@echo ------- end of users list ---------

@echo.
@echo #############################################
@echo Next isql will be called. Check that firebird
@echo if running as service or application!
@echo #############################################
@pause
@rem exit

@rem ------- create script and run isql to check that all OK -------
@echo show version;>tmpfbconnect.sql
@echo set list on;set echo on;>>tmpfbconnect.sql
@echo select current_user,current_role,d.* from mon$database d;>>tmpfbconnect.sql
@echo ===========================================
@echo trying to connect using port =^>%fbport%^<:
@echo ===========================================
isql localhost/%fbport%:employee -user u30a -pas u30a -i tmpfbconnect.sql

@rem =========================================================================
@rem NB: firebird process keeps open file security3.fdb ~65 seconds after that
@rem =========================================================================

@echo ##################################################
@echo Next gset -delete non-sysdba users will be called. 
@echo Check that firebird is +++NOT+++ running!
@echo ##################################################
ping -n 65 127.0.0.1 > nul
@rem @pause
gsec -database security3.fdb -delete u30a -user sysdba -pas masterke
gsec -database security3.fdb -delete u30b -user sysdba -pas masterke
gsec -database security3.fdb -delete u30c -user sysdba -pas masterke

@echo Remained users in security3.fdb:
@gsec -database security3.fdb -display -user sysdba -pas masterke

@del tmpfbconnect.sql 2>nul
@goto eof

:getfbport
  setlocal
  set fbport=3050
  findstr /i /b /c:remoteserviceport firebird.conf > tmpfbconnect.sql
  if errorlevel 1 exit /b %fbport%
  for /f "tokens=2 delims=^=" %%i in (tmpfbconnect.sql) do set fbport=%%i
  del tmpfbconnect.sql 2>nul
exit /b %fbport%

:errsec
@echo off
@rem cls
echo.
echo ERROR: could not erase file security3.fdb!
echo It is possible that this file keeps open less that 65 seconds after last connect.
echo Please wait about 1 minute and repeat after that time.
echo.
pause
:eof
chcp 866
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508891
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

вроде говорили что функционал передачи админских прав пока отключен в тройке
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508897
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, спрошу у Алекса.
...
Рейтинг: 0 / 0
WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
    #38508918
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидно я не указал текущего юзера, вообще!
при embedded-доступе это не обязательно, текущим юзером ФБ будет текущий юзер ОС. Не надо на все смотреть исключительно со своего огорода.
А это поведение возможно отключить в конфиге? Чтобы embedded вообще не трогал пользователей винды, никогда... А то я вижу потенциальные проблемы при использовании такой БД на другом компьютере.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / WI-T3.0.0.30802: gsec -display выводит пустоту (после норм. добавления трёх юзеров). Why?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]