GRANTfarklı nesnelerdeki s ayrıdır. GRANTBir veritabanına GRANTgirmek, içindeki şema üzerinde hak sağlamaz . Benzer şekilde, GRANTbir şema üzerinde çalışmak, içindeki tablolar üzerinde haklar sağlamaz.
SELECTBir 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 GRANTrolü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 USAGEbir ş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 somedirdosya somefilebulunan 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-xdizini 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 USAGEgibi 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 SELECTgelerek 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 -ePqsl'de bir tür için ifade varsa iyi olur .