Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение прав роли на выполнение процедуры, grant execute procedure to role 
V
    Опции темы
Gluttton
Дата 26.10.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Доброго времени суток!

Firebird 2.5.

Есть БД созданная от имени SYSDBA.
В БД создана хранимая процедура (SELECT из одной таблицы).
Создается пользователь.
Создается группа.

Если я разрешаю выполнение процедуры для пользователя, то пользователь может выполнять данную процедуру (причем, без выделения прав на выборку из таблицы для процедуры).

Если я разрешаю выполнение процедуры для группы, затем включаю пользователя в эту группу, выделяю права на выборку из таблицы для процедуры, подключаюсь к БД от имени пользователя с указанием роли, то получаю сообщение сервера о том, что пользователь не имеет прав на выполнение процедуры.

Вопрос: как разрешить выполнение хранимой процедуры пользователям входящим в группу (т.е. группе)?


--------------------
Слава Україні!
PM MAIL   Вверх
Gluttton
Дата 27.10.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Проверил на тестовом примере на работе (под Windows XP) - работае корректно.
Дома буду пробовать под целевой ОС (Linux).

Скрипт (для IBExpert):
Код

CONNECT DATABASE 'D:\Temp\DB\Role.fdb'
USER 'SYSDBA' PASSWORD 'masterkey';

DROP DATABASE;

CREATE DATABASE 'D:\Temp\DB\Role.fdb'
USER 'SYSDBA' PASSWORD 'masterkey';

CONNECT DATABASE 'D:\Temp\DB\Role.fdb'
USER 'SYSDBA' PASSWORD 'masterkey';
/*----------------------------------*/
CREATE TABLE T (
    F    INT
);
/*----------------------------------*/
SET TERM ^;
CREATE PROCEDURE P (
    F    INT
)
RETURNS (
    S    INT
)
AS BEGIN
FOR SELECT SUM (T.F) AS S
FROM T
    WHERE T.F > :F
INTO
    :S
DO
    SUSPEND;
END^
SET TERM ;^
/*----------------------------------*/
DROP USER U;
CREATE USER U PASSWORD 'secret';

CREATE ROLE R;

COMMIT;
/*----------------------------------*/
--GRANT EXECUTE ON PROCEDURE P TO U;
GRANT EXECUTE ON PROCEDURE P TO R;
GRANT SELECT ON T TO PROCEDURE P;
GRANT R TO U;

COMMIT;
/*----------------------------------*/
INSERT INTO T (F) VALUES (1);
INSERT INTO T (F) VALUES (2);
INSERT INTO T (F) VALUES (3);

COMMIT;


Добавлено через 7 минут и 28 секунд
Кстати:
Цитата(Gluttton @  26.10.2010,  22:27 Найти цитируемый пост)
пользователь может выполнять данную процедуру (причем, без выделения прав на выборку из таблицы для процедуры)

Такое не прошло, пришлось разрешать процедуре чтение из таблицы.


--------------------
Слава Україні!
PM MAIL   Вверх
Gluttton
Дата 27.10.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Хм... Проверил на теством скрипте под Linux - все работает корректно:
- пользователь через роль доступ получает;
- процедура без разрешения на выборку из таблицы не выполняется.

Вывод - что то я намудрил в реальной БД.
Пойду разбираться...
Чувствую, что дело в GRANT REFERENCE.


--------------------
Слава Україні!
PM MAIL   Вверх
Gluttton
Дата 27.10.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Хм... Все работает... А вчера не работало...
С Firebird у меня уже такое второй раз.

Спасибо всем за участие, тема закрыта.

Мені дурному не скучно і самому. (с)


--------------------
Слава Україні!
PM MAIL   Вверх
Akella
Дата 28.10.2010, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.1728 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.