Страница 1 из 1

Откуда SYSDBA в БД, созданной другим пользователем?

Добавлено: 08 фев 2006, 12:32
Desdechado
FB 1.5.2 Embedded
Создаю БД от имени пользователя USER1. В бинарнике базы вижу кучу мест со строкой SYSDBA. Откуда он там взялся? И как от него избавиться?

Добавлено: 08 фев 2006, 12:53
kdv
никак не избавится. для embedded вообще нет никаких юзеров, потому что нет security.fdb. Так что "от имени USER1" ты базу создать "не можешь", потому что такого юзера нигде нет.

Добавлено: 08 фев 2006, 13:11
Merlin
kdv писал(а):никак не избавится. для embedded вообще нет никаких юзеров, потому что нет security.fdb. Так что "от имени USER1" ты базу создать "не можешь", потому что такого юзера нигде нет.
Дим, я не шибко большой знаток embedded, но берёт сомнение насчёт "не можешь". Имхо по причине отстутствия security.fdb ему просто должно быть пофиг, есть такой юзер или нет - натыкает owner в системные таблицы какого велено, ни о чём не думая, и всё. Это просто логично. А слово SYSDBA есть в любой базе, созданной от кого угодно и избавляться от него я бы не советовал :) Потому как оно присутствует в BLR системных триггеров...

Добавлено: 08 фев 2006, 13:40
Desdechado
Создать могу. И она создается. Но все-таки хотелось бы от этого SYSDBA избавиться.
Ведь если я удалю пользователя SYSDBA в неEmbedded-версии, подсуну туда эту БД, созданную в Embedded, то по идее SYSDBA не должен иметь возможности подключиться к БД.

Добавлено: 08 фев 2006, 13:50
Merlin
Чадо, или меняй ник на Ибумоски Якамуто или иди читай Operations Guide, глава Database Security, а не "по идее".

Добавлено: 08 фев 2006, 14:02
Desdechado
> меняй ник на Ибумоски Якамуто
ай, зачем такой злой?

Добавлено: 08 фев 2006, 14:21
kdv
Merlin писал(а):но берёт сомнение насчёт "не можешь"
я потому в кавычках и написал. То есть, ембеддеду покласть на юзеров. Поэтому "создаю базу от имени user1" - фикция. Где он, этот user1, у embedded-то?
Desdechado писал(а):Ведь если я удалю пользователя SYSDBA в неEmbedded-версии, подсуну туда эту БД, созданную в Embedded, то по идее SYSDBA не должен иметь возможности подключиться к БД.
натюрлих Якамуто :-) читай по губам - Embedded вообще игнорирует пользователей и права пользователей. Потому что пользователи у обычного сервера отслеживаются через security.fdb (fb1.5), isc4.gdb (ib/fb) или admin.ib (ib7.0). А у embedded этот файл где??? Где он будет пользователей хранить? В самой базе? А нету еще такого механизма в FB. Да и даже если взять IB 7.5 с EUA, то и там без центральной admin.ib это не работает. (www.ibase.ru/devinfo/ib75eua.htm

И даже если НА ОБЫЧНОМ сервере создашь БД от имени Вася, а потом перенесешь эту БД на другой сервер, то на нем SYSDBA все равно СМОЖЕТ к ней подключиться, просто потому, что для SYSDBA права в базе данных НЕ ПРОВЕРЯЮТСЯ.

Код: Выделить всё

if USER = SYSDBA then
  IgnoreRights
else
  CheckRights(USER)
.

Добавлено: 08 фев 2006, 14:41
Merlin
kdv писал(а): Embedded вообще игнорирует пользователей и права пользователей.
Косноязычен ты сегодня ;) Или Дятел на rdb$user_privileges - rdb$security_classes таки кладёт? FB-то нет. Просто пароль хоть и требует, но не проверяет.

Добавлено: 08 фев 2006, 14:49
kdv
ок, гоню. FB Embedded привилегии проверяет. Однако мои слова про вседозволенность SYSDBA остаются.

Добавлено: 26 май 2006, 15:40
alecsar
Не желаете ли продолжить тему?
Вседозволенность SYSDBA ставит под вопрос безопасность использования Firebirdа Ведь так может каждый скопировать базу данных. Установить security.fdb (свой не изменённый) и юзерить твою базу данных!!!
Никто не знает как от этого можно защититься?

Добавлено: 26 май 2006, 16:00
Dimitry Sibiryakov
Обычно в таких случаях советуют не давать возможности "каждому" скопировать твою базу данных.

Добавлено: 26 май 2006, 16:01
dimitr
от ламера защититься можно, но от хакера - без шансов. К слову, это относится к любой СУБД.

Добавлено: 27 май 2006, 22:09
kdv
Не желаете ли продолжить тему?
нет. на этом форуме данная тема обсуждалась. как и на многих других разных форумах.