powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Права доступа
14 сообщений из 14, страница 1 из 1
Права доступа
    #32112757
gray_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в базе все таблицы созданы SYSDBA(masterkey).
Как мне перевести всю базу на другого пользователя, чтобы SYSDBA никаких прав не имел, а у нового пользователя были все права.
...
Рейтинг: 0 / 0
Права доступа
    #32112779
av
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

У SYSDBA права отнять нельзя.

Чтобы перевести базу на другого пользователя:
1. присоединись под SYSDBA;

2. на этом шаге новому пользователю присваеваешь привилеги на чужие обьекты. выполни
Код: plaintext
1.
2.
3.
4.
5.
6.
INSERT INTO RDB$USER_PRIVILEGES 
SELECT 'NEW_USER', 'NEW_USER', RDB$PRIVILEGE, RDB$GRANT_OPTION, 
RDB$RELATION_NAME, RDB$FIELD_NAME, RDB$USER_TYPE, 
RDB$OBJECT_TYPE
FROM RDB$USER_PRIVILEGES WHERE RDB$USER='OLD_USER' AND RDB$GRANTOR='OLD_USER';
COMMIT;

NEW_USER - пользователь, на которого переводишь базу
OLD_USER - пользователь, которому в данный момент принадлежат таблицы, процедуры, представления, короче ето тот, кто их создал. выполняе6 ето для всех OLD_USER.

3. делаешь нового пользователя владельцем обьктов других пользователей
Код: plaintext
1.
2.
3.
UPDATE RDB$PROCEDURES SET RDB$OWNER_NAME='NEW_USER' WHERE RDB$OWNER_NAME='OLD_USER';
UPDATE RDB$ROLES SET RDB$OWNER_NAME='NEW_USER' WHERE RDB$OWNER_NAME='OLD_USER';
COMMIT;


делаешь нового пользователя владельцем базы
Код: plaintext
1.
2.
UPDATE RDB$RELATIONS SET RDB$OWNER_NAME='NEW_USER' WHERE RDB$OWNER_NAME='OLD_USER';
COMMIT;


4. сделай бэкап/рэстор базы, при этом подключайся под NEW_USER
...
Рейтинг: 0 / 0
Права доступа
    #32113478
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОЧЕНЬ не рекомендую изменять системные таблицы!!! Можно получить кучу сюрпризов!!! Их можно только читать!!! Все остальное можно делать только стандартными командами. И например данная задача решается инструкцией Grant
...
Рейтинг: 0 / 0
Права доступа
    #32113496
av
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет!

Код: plaintext
1.
И например данная задача решается инструкцией Grant

что касается изменения данных, то конечно, а вот изменеие структуры таблиц, бэкап/рэстор, останов/запуск/рестасрт базы.., если не трудно, продемонстируйте, пожалуйста, как Grant решит данные задачи
...
Рейтинг: 0 / 0
Права доступа
    #32113498
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была задача изменять структуру? Насколько я понял, нужно изменить права и все
...
Рейтинг: 0 / 0
Права доступа
    #32113504
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, на всякий случай приведу выдержку из хелпа


Assigns privileges to users for specified database objects. Available in SQL, DSQL, and isql.

GRANT <privileges> ON [TABLE] {tablename | viewname}
TO {<object> | <userlist> | GROUP UNIX_group}
| EXECUTE ON PROCEDURE procname TO {<object> | <userlist>}
| <role_granted> TO {PUBLIC | <role_grantee_list>};
<privileges> = {ALL [PRIVILEGES] | <privilege_list>}

<privilege_list> = SELECT
| DELETE
| INSERT
| UPDATE [(col [, col …])]
| REFERENCES [(col [, col …])]

[, <privilege_list> …]
<object> = PROCEDURE procname
| TRIGGER trigname
| VIEW viewname
| PUBLIC
[, <object> …]
<userlist> = [USER] username
| rolename
| Unix_user}
[, <userlist> …]
[WITH GRANT OPTION]
<role_granted> = rolename [, rolename …]

<role_grantee_list> = [USER] username [, [USER] username …]
[WITH ADMIN OPTION]
...
Рейтинг: 0 / 0
Права доступа
    #32113525
av
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
под всеми правами я понял наличие у пользователя прав на изменения данных, структуры таблиц, бэкап/рэстор, останов/запуск/рестасрт базы и прочие права овнера базы. права на изменения данных можно присвоить грантом. а вот для присвоения остальных прав в ИБ нет никаких стандартных средст и возможностей. поетому и приходистя самому руками править системные таблицы. если кто-то знает иной способ, было бы интересно выслушать
...
Рейтинг: 0 / 0
Права доступа
    #32113616
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я знаю, изменение структуры таблицы осуществляется правом REFERENCES, резервирование и восстановление это обычные операции чтения/записи
...
Рейтинг: 0 / 0
Права доступа
    #32113632
av
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
REFERENCES дает право ссылаться во внешнем клуче на другую таблицу. оно никаких прав на изменение структуры не дает.

Код: plaintext
1.
резервирование и восстановление это обычные операции чтения/записи 

может быть. но эти обычные операции чтения/записи доступны не всем пользователям, а только овнеру базы и SYSDBA
...
Рейтинг: 0 / 0
Права доступа
    #32113987
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таком случае пересоздаешь базу под нужным пользователем и копируешь туда данные например IBPump'ом
...
Рейтинг: 0 / 0
Права доступа
    #32113996
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В таком случае пересоздаешь базу под нужным пользователем и копируешь
>туда данные например IBPump'ом

это полный геммор... Достаточно сделать backup и RESTORE под новым пользователем, так как пользователь, сделавший ресторе автоматические становится ее владельцем...

P.S.
А sysdba в любом случае будет иметь все права, такая у него судьба.
...
Рейтинг: 0 / 0
Права доступа
    #32114115
gray_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну всё-таки задача решаема или нет? Что SYSDBA всегда будет иметь все права ИМХО бред. О какой тогда безопасности может идти речь, если любой, прочитав книжку, сможет делать с базой всё что угодно. Надо именно УДАЛИТЬ SYSDBA, а владельцем с полными правами сделать другого пользователя и с ДРУГИМ ПАРОЛЕМ. Как это сделать с помощью GRANT я не знаю. Если кто решал такую задачу или знает как её решать, подскажите плиз. Пока ответ я вижу только в изменении системных таблиц, но этот шаг мне не очень нравится. Приемлимо также создать новую базу, являющейся отражением старой и сделать репликацию. ТОлько это геморройно. Кстати никто не знает средств для репликации Interbase или надо для каждой базы писать своё приложение?
...
Рейтинг: 0 / 0
Права доступа
    #32114135
AndreyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так попробуй удалить SYSDBA. Увидишь что у тебя получится.

>О какой тогда безопасности может идти речь, если любой,
>прочитав книжку, сможет делать с базой всё что угодно
Вот мне интересно, а что ты сделаешь с помощью SYSDBA если небудеш знать его пароль?

Или мысль о смене пароля для SYSDBA не посещала твою светлую голову?
...
Рейтинг: 0 / 0
Права доступа
    #32114153
av
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Код: plaintext
1.
2.
Достаточно сделать backup и RESTORE под новым пользователем, так как пользователь, 
сделавший ресторе автоматические становится ее владельцем

Но обьекты базы все равно останутся у старого пользователя и новый, под которым сделан backup, не сможет менят их структуру

Вся проблема в том, что в концепции Interbase нет понятия системной привилегии (привилегии на alter, drop, create, backup, restore, shutdown и прочее, в духе ORACLE). Ну а уж если нет в концепции, что можно говорить о реализации. В Interbase
- у SYSDBA все права на все,
- у овнера базы (фактически это овнер системниых таблиц) права на backup, restore, shutdown прочие действия с базой,
- у овнера обьектов права на изменения структуры этих обьектов.
грант дает привилегии на изменение только ДАННЫХ.
по причине отсутствия понятия системной привилегии, попытки присвоить или отбрать права на выполнение вышеупомянутых действий, кроме изменения данных, будут связаны с гемором
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Права доступа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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