PostgreSQL - “KAMU” rolü kim veya ne?


11

Ben baktığım information_schema.role_table_grantsgörünce publicde granteesütununda, sonra ben de kontrol ettim information_schema.enabled_rolesama bu role_nameyok.

=> publicRol kim veya ne ?

Yanıtlar:


9

Kılavuzdan:

PUBLIC anahtar sözcüğü, daha sonra yaratılabilecek olanlar da dahil olmak üzere tüm rollere ayrıcalıkların verilmesi gerektiğini belirtir. KAMU, her zaman tüm rolleri içeren örtük olarak tanımlanmış bir grup olarak düşünülebilir. Herhangi bir özel rol, doğrudan kendisine verilen ayrıcalıkların, şu anda üyesi olduğu herhangi bir role verilen ayrıcalıkların ve KAMU'ya verilen ayrıcalıkların toplamına sahip olacaktır.


7

Bu doğru olsa da, tam resim değildir. Kamu ayrıca, diğer rollerin ait olduğu ve her zaman yansıtılmayan ve miras alındığı bildirilmeyen kendi izinlerine sahip olan örtük bir rol olarak da hareket eder.

Varsayılan olarak, genel şemada oluşturma izni verir. bunu kaldırmazsanız, salt okunur bir kullanıcı oluşturmak için diğer tüm doğru adımlar, o kullanıcının da genel şemada yeni nesneler oluşturabilmesi ve daha sonra sahiplik nedeniyle bunlara veri koymasıyla sonuçlanır. Bunu önlemek için

REVOKE ALL ON SCHEMA public FROM PUBLIC;

Benzer şekilde, kullanımı kaldırmak için veritabanı düzeyinde izin verir

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

İyi makale burada: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.