GRANT
farklı nesnelerdeki s ayrıdır. GRANT
Bir veritabanına GRANT
girmek, içindeki şema üzerinde hak sağlamaz . Benzer şekilde, GRANT
bir şema üzerinde çalışmak, içindeki tablolar üzerinde haklar sağlamaz.
SELECT
Bir tablodan için haklarınız varsa , ancak onu içeren şemada görme hakkınız yoksa, tabloya erişemezsiniz.
Hak testleri şu sırayla yapılır:
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.
Karışıklıklarınız, public
şemanın, her kullanıcının / grubun üyesi olduğu GRANT
rolün tüm haklarına varsayılan olarak sahip olmasından kaynaklanabilir public
. Yani herkesin bu şemada zaten kullanımı var.
İfade:
(nesnelerin kendi ayrıcalık gereksinimlerinin de karşılandığı varsayılarak)
Bu USAGE
, içindeki nesneleri kullanmak için bir şemaya sahip olmanız gerektiğini , ancak USAGE
bir şemaya sahip olmanızın, şema içindeki nesneleri kullanmak için tek başına yeterli olmadığını, nesnelerin kendileri üzerinde de haklara sahip olmanız gerektiğini söylüyor.
Bir dizin ağacı gibidir. İçinde somedir
dosya somefile
bulunan bir dizin oluşturursanız, dizine veya dosyaya yalnızca kendi kullanıcınız erişebilecek şekilde ayarlayın (dizindeki rwx------
mod rw-------
, dosyadaki mod ), daha sonra hiç kimse dosyanın var olduğunu görmek için dizini listeleyemez.
Dosya (mod rw-r--r--
) üzerinde dünya çapında okuma hakları verirseniz, ancak dizin izinlerini değiştirmezseniz, bu hiçbir fark yaratmaz. Dosyayı okumak için kimse göremedi çünkü dizini listeleme haklarına sahip değiller.
Bunun yerine rwx-r-xr-x
dizini ayarlarsanız , insanların dizini listeleyebilecekleri ve dizini gezebilecekleri şekilde ayarlarsanız , ancak dosya izinlerini değiştirmezseniz, insanlar dosyayı listeleyebilir , ancak dosyaya erişemeyecekleri için okuyamazlar .
İnsanların dosyayı gerçekten görüntüleyebilmesi için her iki izni de ayarlamanız gerekir .
Sf. Tablodaki USAGE
gibi bir nesne üzerinde bir eylem gerçekleştirmek için hem şema haklarına hem de nesne haklarına ihtiyacınız vardır SELECT
.
(PostgreSQL'in henüz satır düzeyinde güvenliğe sahip olmadığı benzetmesi biraz azalır, bu nedenle kullanıcı, tablonun şemada var olduğunu doğrudan içinden SELECT
gelerek hala "görebilir" pg_class
. Hiçbir şekilde etkileşime giremezler. Ancak, tam olarak aynı olmayan sadece "liste" kısmıdır.)
CREATE EXTENSION
. Sizken Linux'ta oluşturulan dosyalarla aşağı yukarı aynı sorunsu
.sudo -e
Pqsl'de bir tür için ifade varsa iyi olur .