powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поломка базы
32 сообщений из 32, показаны все 2 страниц
Поломка базы
    #39901755
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

FB 2.5.8

Привезли базу. При коннекте не под SYSDBA и попытке запроса из RDB$DATABASE ругается, что нет грантов.
Код: powershell
1.
2.
3.
SQL> select * from RDB$DATABASE;
Statement failed, SQLSTATE = 28000
no permission for read/select access to TABLE RDB$DATABASE


В чем причина поломки?
Это как-нибудь вылечить можно?

С уважением, Polesov.
...
Рейтинг: 0 / 0
Поломка базы
    #39901758
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это надо именно лечить? может кто сознательно гранты отобрал?
По идее после б/р гранты на системные таблицы должны стать дефолтными.
б/р проходит без ошибок?
...
Рейтинг: 0 / 0
Поломка базы
    #39901759
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

мне кажется это не поломка. Кто-то нарочно такую типа "защиту" поставил.
попробуй

Код: sql
1.
GRANT SELECT ON RDB$DATABASE TO PUBLIC;
...
Рейтинг: 0 / 0
Поломка базы
    #39901761
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky
Это надо именно лечить? может кто сознательно гранты отобрал?
По идее после б/р гранты на системные таблицы должны стать дефолтными.
б/р проходит без ошибок?


Утверждается, что гранты специально никто не отбирал.
За идею про б/р спасибо, щас проверю.
...
Рейтинг: 0 / 0
Поломка базы
    #39901764
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Создал пустую БД, запрос ничего не вернул
Код: sql
1.
2.
3.
select *
  from RDB$USER_PRIVILEGES p
 where p.RDB$RELATION_NAME = 'RDB$DATABASE'


Дал гранты
Код: sql
1.
grant all on RDB$DATABASE to public;


Запрос из RDB$USER_PRIVILEGES вернул 5 записей (внизу кусок выборки)
Код: sql
1.
2.
3.
4.
5.
PUBLIC	SYSDBA	S	0	RDB$DATABASE
PUBLIC	SYSDBA	I	0	RDB$DATABASE
PUBLIC	SYSDBA	U	0	RDB$DATABASE
PUBLIC	SYSDBA	D	0	RDB$DATABASE
PUBLIC	SYSDBA	R	0	RDB$DATABASE


Мне кажется, давать гранты на системные таблицы неправильно.
...
Рейтинг: 0 / 0
Поломка базы
    #39901793
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, б/р помог. Осталась не выяснена причина поломки.
...
Рейтинг: 0 / 0
Поломка базы
    #39901796
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пионЭры приходили?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901833
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

пионЭры приходили?

Сие не ведомо. Но выяснилось, что слетели гранты на все системные таблицы.
...
Рейтинг: 0 / 0
Поломка базы
    #39901836
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 13:44, Polesov пишет:
>
> Сие не ведомо. Но выяснилось, что слетели гранты на все системные таблицы.

они не слетели.
они ПОЯВИЛИСЬ.
и отнюдь не из воздуха.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901852
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

они не слетели.
они ПОЯВИЛИСЬ.
и отнюдь не из воздуха.

Не понял глубины мысли.
...
Рейтинг: 0 / 0
Поломка базы
    #39901859
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovНе понял глубины мысли.

Раскрой глаза, напряги мозг:
https://www.sql.ru/forum/actualthread.aspx?tid=1319380
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901863
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.12.2019 14:10, Polesov пишет:
>
> Не понял глубины мысли.

выполни свой запрос к RDB$USER_PRIVILEGES
на "поломатой" базе и на нормальной.
сравни.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901879
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Раскрой глаза, напряги мозг:
https://www.sql.ru/forum/actualthread.aspx?tid=1319380

Это не тот случай. В обоих случаях гарантированно FB одной и той же версии.
...
Рейтинг: 0 / 0
Поломка базы
    #39901884
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovПривезли базу.
PolesovВ обоих случаях гарантированно FB одной и той же версии.

"Люди лгут." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39901888
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

выполни свой запрос к RDB$USER_PRIVILEGES
на "поломатой" базе и на нормальной.
сравни.


Там около 44 тысяч записей - замумукаешься сравнивать.

На вновь созданной базе запрос
Код: sql
1.
2.
3.
select *
  from RDB$USER_PRIVILEGES p
 where p.RDB$RELATION_NAME starting with 'RDB$'


Возвращает полный доступ SYSDBA к таблицам RDB$ROLES, RDB$PAGES и RDB$FORMATS

В "поломатой" БД то же самое + зачем-то грант на роль RDB$ADMIN
...
Рейтинг: 0 / 0
Поломка базы
    #39901889
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov
В общем, б/р помог. Осталась не выяснена причина поломки.

Заодно объясни, что если уж
Polesov
Привезли базу

- то база должна быть в форме бэкапа.
...
Рейтинг: 0 / 0
Поломка базы
    #39901891
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

PolesovПривезли базу.

PolesovВ обоих случаях гарантированно FB одной и той же версии.

"Люди лгут." (с)


Могу точно сказать, что БД создавалась на последнем июньском релизе FB, а эксплуатировалась на предпоследнем снапшоте.
Но, думаю, это ни при чем.
...
Рейтинг: 0 / 0
Поломка базы
    #39901893
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё, нет, базу привезли в виде базы.
...
Рейтинг: 0 / 0
Поломка базы
    #39901896
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov
ёёёёё, нет, базу привезли в виде базы.

А я что сказал?
...
Рейтинг: 0 / 0
Поломка базы
    #39901900
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov
Это не тот случай
Ты проверил наличие непустого RDB$SECURITY_CLASS в RDB$DATABASE ?
...
Рейтинг: 0 / 0
Поломка базы
    #39901902
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
Polesov
ёёёёё, нет, базу привезли в виде базы.

А я что сказал?


ёёёёё
база должна быть в форме бэкапа
...
Рейтинг: 0 / 0
Поломка базы
    #39901906
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Polesov
Это не тот случай
Ты проверил наличие непустого RDB$SECURITY_CLASS в
RDB$DATABASE ?

Сейчас там null
...
Рейтинг: 0 / 0
Поломка базы
    #39901941
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я разве спрашивал про "сейчас" ?
...
Рейтинг: 0 / 0
Поломка базы
    #39901950
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, он там и был - его никто не менял.
...
Рейтинг: 0 / 0
Поломка базы
    #39903515
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Апну тему.

Проблема проявлялась в том, что на системные таблицы слетели PUBLIC гранты
на SELECT, т.е. при подключении не под SYSDBA запрос вызывал ошибку:
Код: sql
1.
2.
3.
SQL> select * from RDB$DATABASE;
Statement failed, SQLSTATE = 28000
no permission for read/select access to TABLE RDB$DATABASE


Просмотр в IBExpert значений поля RDB$ACL в таблице RDB$SECURITY_CLASSES
показал, что есть значения, в которых отсутствует " all users: (*.*), privileges: (R) "

Для RDB$SECURITY_CLASS = 'SQL$1' значение поля RDB$ACL выглядит так
Код: powershell
1.
2.
3.
ACL version 1
	person: SYSDBA, privileges: (PCDWR)
	all users: (*.*), privileges: (R)



После выполнения запроса
Код: sql
1.
2.
3.
4.
5.
update RDB$SECURITY_CLASSES
   set RDB$ACL = ( select RDB$ACL
                     from RDB$SECURITY_CLASSES
                    where RDB$SECURITY_CLASS = 'SQL$1' )
 where RDB$SECURITY_CLASS <> 'SQL$1'

выяснилось, что гранты восстановились.

P.S. Все операции проводились на локальной копии базы.

Понятно, что лечить базу таким образом нельзя.

Каким образом связаны значения RDB$ACL в RDB$SECURITY_CLASSES и гранты на системные таблицы?
Какие действия могут привести к модификации значения RDB$ACL, в результате чего слетают гранты?
...
Рейтинг: 0 / 0
Поломка базы
    #39903525
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5.9

Создал пустую базу и убрал гранты на RDB$DATABASE
Код: sql
1.
2.
3.
4.
5.
SQL> connect TEST user SYSDBA password masterkey;
Database:  TEST, User: SYSDBA
SQL> revoke all on RDB$DATABASE from public;
Warning: Select on RDB$DATABASE is not granted to PUBLIC.
-Warning: Insert on RDB$DATABASE is not granted to PUBLIC.


Получается, с помощью revoke грант убрать нельзя, т.к. его не было (в таблице RDB$USER_PRIVILEGES)?

Подключился под пользователем TEST, грант остался
Код: sql
1.
2.
3.
4.
5.
6.
7.
SQL> connect TEST user TEST password test;
Database:  TEST, User: TEST
SQL> select count(*) from RDB$DATABASE;

       COUNT
============
           1


Получается, revoke не отменяет гранты на селект к системным таблицам?
...
Рейтинг: 0 / 0
Поломка базы
    #39903529
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovСоздал пустую базу и убрал гранты на RDB$DATABASE

А они были? Эти гранты только в тройке появились.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39903537
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

если я не ошибаюсь раньше был такой трюк сначала дать гранты, а потом их отобрать.
Но отбирается при этом значительно больше, чем было изначально. ACL косвенно вычищались.
В любом случае манипуляция с грантами на RDB$DATABASE была сделана умышленно.

Dimitry Sibiryakov,

в тройке public гранты появились только для генераторов, и то после б/р с 2.5. Если сиквенс создаётся с нуля, то никаких PUBLIC грантов нету.
...
Рейтинг: 0 / 0
Поломка базы
    #39903540
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

PolesovСоздал пустую базу и убрал гранты на RDB$DATABASE

А они были? Эти гранты только в тройке появились.

Неверно выразился - создал пустую базу и попытался убрать гранты на RDB$DATABASE.
Сразу после создания БД в RDB$USER_PRIVILEGES прописаны гранты на 3 системные таблицы:
RDB$ROLES, RDB$PAGES и RDB$FORMATS - полные для OWNER-а и SELECT для public.

Грант на таблицу RDB$DATABASE никак не прописан.
...
Рейтинг: 0 / 0
Поломка базы
    #39903577
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
16.12.2019 15:24, Симонов Денис пишет:
> если я не ошибаюсь раньше был такой трюк сначала дать гранты, а потом их отобрать.

раньше раньшего (С) было так ( касаемо системных объектов ):
- пока никакие гранты не дадены, действует PUBLIC.
- как только ты даёшь права кому-то конкретно , то всё, считай что PUBLIC-у сделали REVOKE.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поломка базы
    #39903617
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

раньше раньшего (С) было так ( касаемо системных объектов ):
- пока никакие гранты не дадены, действует PUBLIC.
- как только ты даёшь права кому-то конкретно , то всё, считай что PUBLIC-у сделали REVOKE.


Понятно. Осталось выяснить, кто теребил гранты на системные таблицы.
...
Рейтинг: 0 / 0
Поломка базы
    #39903640
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис

В любом случае манипуляция с грантами на RDB$DATABASE была сделана умышленно.


Ты оказался прав - только не умышленно, а по незнанию.
Были даны полные гранты на системные таблицы для пользовательских ролей.
После этого "всё, считай что PUBLIC-у сделали REVOKE" (c) Мимопроходящий
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поломка базы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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