Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Права доступа / 14 сообщений из 14, страница 1 из 1
28.02.2003, 14:23
    #32112757
gray_k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
У меня в базе все таблицы созданы SYSDBA(masterkey).
Как мне перевести всю базу на другого пользователя, чтобы SYSDBA никаких прав не имел, а у нового пользователя были все права.
...
Рейтинг: 0 / 0
28.02.2003, 14:53
    #32112779
av
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
03.03.2003, 11:25
    #32113478
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
ОЧЕНЬ не рекомендую изменять системные таблицы!!! Можно получить кучу сюрпризов!!! Их можно только читать!!! Все остальное можно делать только стандартными командами. И например данная задача решается инструкцией Grant
...
Рейтинг: 0 / 0
03.03.2003, 11:43
    #32113496
av
av
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
привет!

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

что касается изменения данных, то конечно, а вот изменеие структуры таблиц, бэкап/рэстор, останов/запуск/рестасрт базы.., если не трудно, продемонстируйте, пожалуйста, как Grant решит данные задачи
...
Рейтинг: 0 / 0
03.03.2003, 11:44
    #32113498
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
Была задача изменять структуру? Насколько я понял, нужно изменить права и все
...
Рейтинг: 0 / 0
03.03.2003, 11:48
    #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
03.03.2003, 12:11
    #32113525
av
av
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
под всеми правами я понял наличие у пользователя прав на изменения данных, структуры таблиц, бэкап/рэстор, останов/запуск/рестасрт базы и прочие права овнера базы. права на изменения данных можно присвоить грантом. а вот для присвоения остальных прав в ИБ нет никаких стандартных средст и возможностей. поетому и приходистя самому руками править системные таблицы. если кто-то знает иной способ, было бы интересно выслушать
...
Рейтинг: 0 / 0
03.03.2003, 13:37
    #32113616
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
Насколько я знаю, изменение структуры таблицы осуществляется правом REFERENCES, резервирование и восстановление это обычные операции чтения/записи
...
Рейтинг: 0 / 0
03.03.2003, 13:59
    #32113632
av
av
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
REFERENCES дает право ссылаться во внешнем клуче на другую таблицу. оно никаких прав на изменение структуры не дает.

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

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

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

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

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

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

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

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

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


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