GRANT
s на різних об'єктах є окремими. GRANT
ING на базі даних не має 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------
у режимі dir, режим rw-------
у файлі), тоді ніхто інший не може перелічити каталог, щоб побачити, що файл існує.
Якщо ви мали б надати права на читання у всьому світі на файл (режим rw-r--r--
), але не змінювати дозволи довідок, це не мало би значення. Ніхто не міг побачити файл для того, щоб прочитати його, оскільки вони не мають права перелічити каталог.
Якщо ви замість цього встановите rwx-r-xr-x
на каталог, встановивши його так, щоб люди могли перелічувати та переходити каталог, але не змінюючи дозволи файлу, люди могли перелічити файл, але не змогли прочитати його, оскільки вони не мали б доступу до файлу.
Потрібно встановити обидва дозволи для того, щоб люди могли переглядати файл.
Те саме в Pg. Вам потрібні як USAGE
права схеми, так і права на об'єкт для виконання дії над об'єктом, наприклад SELECT
із таблиці.
(Аналогія падає вниз трохи в тому , що PostgreSQL не має захисту на рівні рядків ще, так що користувач може по- , як і раніше «бачити» , що таблиця існує в схемі по SELECT
ІНГ від pg_class
безпосередньо. Вони не можуть взаємодіяти з ним яким - небудь чином , однак, так що це просто "список", який не зовсім однаковий.)
CREATE EXTENSION
. Це більш-менш та сама проблема з файлами, створеними в Linux, поки ви знаходитесьsu
. Буде добре, якщоsudo -e
в pqsl є така собі форма для тверджень.