GRANT
s на разных объектах разделены. GRANT
Работа с базой данных не имеет GRANT
прав на схему внутри. Аналогично,GRANT
использование схемы не дает прав на таблицы внутри.
Если у вас есть права SELECT
доступа к таблице, но нет права видеть ее в схеме, которая ее содержит, вы не можете получить доступ к таблице.
Проверка прав проводится в следующем порядке:
Do you have `USAGE` on the schema?
No: Reject access.
Yes: Do you also have the appropriate rights on the table?
No: Reject access.
Yes: Check column privileges.
Ваше замешательство может возникнуть из-за того, что public
схема по умолчанию GRANT
имеет все права на роль public
, членом которой является каждый пользователь / группа. Таким образом, каждый уже использует эту схему.
Фраза:
(при условии, что собственные требования к привилегиям объектов также выполнены)
Говорит, что у вас должна быть USAGE
схема, чтобы использовать объекты внутри нее, но наличие USAGE
схемы само по себе недостаточно для использования объектов в схеме, вы также должны иметь права на сами объекты.
Это похоже на дерево каталогов. Если вы создаете каталог somedir
с файлом somefile
в нем, а затем установите его так, чтобы только ваш собственный пользователь мог получить доступ к каталогу или файлу (режим в каталоге rwx------
, режим rw-------
в файле), тогда никто другой не сможет перечислить каталог, чтобы убедиться, что файл существует.
Если бы вы предоставили права на чтение файла (режим rw-r--r--
), но не изменили права доступа к каталогу, это не имело бы никакого значения. Никто не мог увидеть файл, чтобы прочитать его, потому что у них нет прав на просмотр каталога.
Если вы вместо этого установите rwx-r-xr-x
каталог, установив его так, чтобы люди могли перечислять и перемещаться по каталогу, но не изменяя права доступа к файлу, люди могли перечислить файл, но не могли прочитать его потому что у них не было бы доступа к файлу.
Вам необходимо установить оба разрешения, чтобы люди действительно могли просматривать файл.
То же самое на стр. Вам нужны как USAGE
права схемы, так и права объекта, чтобы выполнить действие над объектом, например SELECT
над таблицей.
(Аналогия падает вниз немного в том , что PostgreSQL не имеет защиты на уровне строк еще, так что пользователь может по- прежнему «видеть» , что таблица существует в схеме по SELECT
ИНГ от pg_class
непосредственно. Они не могут взаимодействовать с ним каким - либо образом хотя, значит, это не совсем то же самое "список".)
CREATE EXTENSION
. Это более или менее та же проблема с файлами, созданными в Linux, пока выsu
. Будет хорошо, еслиsudo -e
в pqsl будет что-то вроде операторов for.