Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права доступа / 2 сообщений из 2, страница 1 из 1
03.04.2005, 23:33
    #32995411
Arkady Sempliyaroff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
Возможно, вопрос чайниковский, но все же.
Имею некую таблицу tbl_nail. Хочу сделать так, чтобы все пользователи НЕ могли просто так вставлять записи в эту таблицу, а должны были бы для этого использовать функцию new_nail.
Делаю следующее от имени владельца базы по имени vasya:

revoke INSERT on tbl_nail from public ;
grant EXECUTE on function new_nail to public ;

Теперь захожу как petya и говорю:

select new_nail ;

И получаю в ответ:

ERROR: доступ запрещен для связи tbl_nail

То есть оно требует наличия привилегии INSERT, даже если вставка выполняется не прямо INSERTом, а изнутри функции.

Это я что-то недокрутил, или это такая фича у PostgreSQL?
Если это фича, то как мне все-таки добиться своего?
...
Рейтинг: 0 / 0
04.04.2005, 00:55
    #32995432
Arkady Sempliyaroff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права доступа
Разобрался сам.
Нужно было создавать функцию с опцией SECURITY DEFINER, тогда функция будет работать с правами владельца функции.
По умолчанию функция создается с опцией SECURITY INVOKER и, соответственно, работает с правами вызывающего пользователя.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права доступа / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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