C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Права доступа
full_lamer
Отправлено: 08.05.2004, 21:32


Машинист паровоза

Группа: Участник
Сообщений: 225



Можно ли запретить SYSDBA в IB6.5 доступ к чему либо?
olegenty
Отправлено: 11.05.2004, 07:24


Ветеран

Группа: Модератор
Сообщений: 2412



можно
full_lamer
Отправлено: 11.05.2004, 07:53


Машинист паровоза

Группа: Участник
Сообщений: 225



как?
Admin
Отправлено: 11.05.2004, 08:37


Владимир

Группа: Администратор
Сообщений: 1190



Измените ему пароль со стандартного masterkey,
создайте нового пользователя и дайте ему нужные права.
Под этим именем пусть и подключается к БД.

В IBExpert это делается достаточно просто (визуально)
в Инструменты->Менеджер прав и Менеджер пользователей.

Кроме того, вы можете создать Роли и назначить доступ
на уровне ролей.
full_lamer
Отправлено: 11.05.2004, 08:54


Машинист паровоза

Группа: Участник
Сообщений: 225



Спасибо за идею! Сам не догадался... просто я хотел вообще запретить sysdba доступ к моим таблицам.... скоко возился не получилось... — я так понимаю sysdba в IB царь и бог! Кстати, когда-нибудь в IB будет возможность хранить пароли непосредствено в самой БД? А то как то не стирильно получается... взял Бд пошел на другую машинку и получил к ней доступ... sad.gif
olegenty
Отправлено: 11.05.2004, 09:51


Ветеран

Группа: Модератор
Сообщений: 2412



можешь пользователя SYSDBA вообще из базы удалить, а его права передать одному тебе известному логину. осторожней только делай подобные вещи, и логин альтернативный с паролем на болванку нареж, чтоб не искать, когда забудешь...
full_lamer
Отправлено: 11.05.2004, 10:17


Машинист паровоза

Группа: Участник
Сообщений: 225



Помоему не получится, покрайней мере в IBConsole нельзя... и в IBExperte тоже нельзя....
Deem
Отправлено: 12.05.2004, 13:36


Мастер участка

Группа: Участник
Сообщений: 327



Просто если посмотреть в ситемные таблицы, увидишь, что хозяин всех объектов базы(особенно системных) — это SYSDBA. На этом основано его могущество. smile.gif
Его можно удалить. Но если никто больше не имеет подобных прав, можно потерять контроль над базой.
Правда, всегда можно подсунуть серверу IB другую базу isc4.gdb с новым SYSDBA. И снова станешь хозяином. Это — самая большая хрень IB, FireBird и Juffy(тоже вроде) .
full_lamer
Отправлено: 12.05.2004, 17:04


Машинист паровоза

Группа: Участник
Сообщений: 225



А как это можно сделать? Я правда еще не эксперементировал, просто времени нет — надо проект заказчикам показывать, а их не сильно волнуют внутренние алгоритмы: поэтому сижу шлифую интерфейс....
Deem
Отправлено: 25.05.2004, 11:29


Мастер участка

Группа: Участник
Сообщений: 327



Ну, например, открыть с правами SYSDBA базу ISC4.GDB (SECURITY.FDB) как обычную базу и удалить из таблицы USERS запись с пользователем SYSDBA. Я не пробовал, но догадываюсь, что SYSDBA в пользовательскую базу не войдет (а может и ошибаюсь). Но скорее всего он — простой пользователь, т.к. прописан всетаки с остальными. Поэтому — убиваемый. Но до этого (убивания) надо пойти по системным таблицам пользовательской базы и заменить где можно OWNER — а объектов на не-SYSDBA. SYSDBA я кажись убивал то ли из IBConsole, то ли запросом из базы ISC4.GDB. Потом долго совесть мучила (OWNER остался-то SYSDBA) smile.gif
full_lamer
Отправлено: 25.05.2004, 11:47


Машинист паровоза

Группа: Участник
Сообщений: 225



Нет оказывается можно просто запретить права доступа SYSDBA, я правда не понял как, но факт есть факт — пытаюсь я законектиться к базе — а она мне гоовори, что доступ закрыт... Так что можно...
Я пытался создавать нового пользователя давать ему неограниченные права и запрещать сисдба доступ к чему либо, вместе с сисдба доступ запрещается и моим пользователям wink.gif

кстати есть такие SQL коды:
" ... with grant option"
и
" ... with admin option"
я не могу понять как использовать второй и что он конкретно делает?
olegenty
Отправлено: 25.05.2004, 13:35


Ветеран

Группа: Модератор
Сообщений: 2412



QUOTE

The role can be granted WITH ADMIN OPTION, which allows users to grant the role to others, just as the WITH GRANT OPTION allows users to grant privileges to others.

грантить можно две вещи:
1. роли пользователям
2. права доступа на объекты пользователям

так вот AO — это право грантить роли пользователям, а GO — только привилегии доступа на объекты.

для удаления SYSDBA надо просто
1 Как и сказал Deem — сменить owner. Но, как я понимаю, можно и проще: owner отдать некоей роли, тогда SYSDBA — не критичен...
2 Убить SYSDBA
3 Но помнить при этом, кто есть owner, и это должен быть ТЫ

Вернуться в Работа с базами данных в C++Builder