PostgreSQL - "सार्वजनिक" भूमिका कौन या क्या है?


11

मैं देख रहा था information_schema.role_table_grantsजब मैंने कॉलम publicमें देखा था grantee, तब मैंने चेक किया था information_schema.enabled_rolesलेकिन यह role_nameमौजूद नहीं है।

=> publicभूमिका कौन या क्या है ?

जवाबों:


9

मैनुअल से सही:

PUBLIC शब्द मुख्य संकेत देता है कि विशेषाधिकार सभी भूमिकाओं को दिए जाने हैं, जिनमें वे भी शामिल हैं जिन्हें बाद में बनाया जा सकता है। सार्वजनिक रूप से एक परिभाषित परिभाषित समूह के रूप में सोचा जा सकता है जिसमें हमेशा सभी भूमिकाएं शामिल होती हैं। किसी विशेष भूमिका में विशेषाधिकारों की राशि सीधे दी जाएगी, विशेष रूप से किसी भी भूमिका के लिए दी गई विशेषाधिकार विशेष रूप से, और सार्वजनिक रूप से प्रदत्त विशेषाधिकार हैं।


7

जबकि यह सच है यह पूरी तस्वीर नहीं है। सार्वजनिक एक अंतर्निहित भूमिका के रूप में भी काम करती है जो अन्य भूमिकाएं हैं और इसकी अपनी अनुमतियाँ हमेशा प्रतिबिंबित नहीं होती हैं और रिपोर्ट करती हैं कि विरासत में मिली हैं।

डिफ़ॉल्ट रूप से यह सार्वजनिक स्कीमा पर अनुमति प्रदान करता है। जब आप यह केवल पढ़ने के लिए केवल उपयोगकर्ता परिणाम बनाने के लिए अन्य सभी सही कदम नहीं निकालते हैं, तो उपयोगकर्ता को सार्वजनिक स्कीमा में नई वस्तुएं बनाने में सक्षम होना चाहिए और फिर स्वामित्व के कारण उनमें डेटा डाल दिया जाएगा। इसे रोकने के लिए

REVOKE ALL ON SCHEMA public FROM PUBLIC;

इसी तरह यह डेटाबेस स्तर पर भी उपयोग को हटाने की अनुमति देता है

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

यहाँ अच्छा लेख: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.