GRANT
s pada objek yang berbeda terpisah. GRANT
ing pada database tidak GRANT
berhak atas skema di dalamnya. Demikian pula, GRANT
menggunakan skema tidak memberikan hak atas tabel di dalamnya.
Jika Anda memiliki hak untuk SELECT
dari tabel, tetapi tidak memiliki hak untuk melihatnya dalam skema yang memuatnya maka Anda tidak dapat mengakses tabel.
Uji hak dilakukan dengan urutan:
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.
Kebingungan Anda mungkin timbul dari kenyataan bahwa public
skema memiliki default GRANT
semua hak atas peran public
, di mana setiap pengguna / grup adalah anggotanya. Jadi setiap orang sudah menggunakan skema itu.
Frasa:
(dengan asumsi bahwa persyaratan hak istimewa objek juga terpenuhi)
Mengatakan bahwa Anda harus memiliki USAGE
skema untuk menggunakan objek di dalamnya, tetapi memiliki USAGE
skema tidak dengan sendirinya cukup untuk menggunakan objek dalam skema, Anda juga harus memiliki hak atas objek itu sendiri.
Ini seperti pohon direktori. Jika Anda membuat direktori somedir
dengan file somefile
di dalamnya kemudian mengaturnya sehingga hanya pengguna Anda sendiri yang dapat mengakses direktori atau file (mode rwx------
pada dir, mode rw-------
pada file) maka tidak ada orang lain yang dapat membuat daftar direktori untuk melihat bahwa file tersebut ada.
Jika Anda memberikan hak membaca dunia atas file (mode rw-r--r--
) tetapi tidak mengubah izin direktori, tidak ada bedanya. Tidak ada yang dapat melihat file untuk membacanya, karena mereka tidak memiliki hak untuk mencantumkan direktori.
Jika Anda malah menyetel rwx-r-xr-x
pada direktori, menyetelnya sehingga orang dapat membuat daftar dan melintasi direktori tetapi tidak mengubah izin file, orang dapat membuat daftar file tetapi tidak dapat membacanya karena mereka tidak memiliki akses ke file.
Anda perlu menyetel kedua izin agar orang benar-benar dapat melihat file tersebut.
Hal yang sama di Pg. Anda memerlukan USAGE
hak skema dan hak objek untuk melakukan tindakan pada objek, seperti SELECT
dari tabel.
(Analoginya jatuh sedikit di yang PostgreSQL tidak memiliki keamanan tingkat baris lagi, jadi pengguna masih bisa "melihat" bahwa tabel ada dalam skema oleh SELECT
ing dari pg_class
langsung. Mereka tidak bisa berinteraksi dengan cara apapun , meskipun, jadi hanya bagian "daftar" yang tidak persis sama.)
CREATE EXTENSION
. Ini kurang lebih masalah yang sama dengan file yang dibuat di Linux saat Andasu
. Akan lebih baik jika ada semacamsudo -e
pernyataan for di pqsl.