कब विशेषाधिकार \ l में सूचीबद्ध हैं और कब नहीं?


11

जब एक्सेस विशेषाधिकार \ l द्वारा सूचीबद्ध हैं, और वे कब नहीं हैं? अनुदान द्वारा सूचीबद्ध पहुँच विशेषाधिकार एक अनुदान के बाद बदल सकते हैं और निरस्त कर सकते हैं:

$ createuser -EP my_readonly
$ psql development
development=# \l
                                           List of databases
            Name             |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------------------------+----------+----------+-------------+-------------+-----------------------
 development                 | vagrant  | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
...
development=# grant usage on schema public to my_readonly;
development=# grant connect on database development to my_readonly;
development=# \l
                                             List of databases
            Name             |  Owner   | Encoding |   Collate   |    Ctype    |     Access privileges      
-----------------------------+----------+----------+-------------+-------------+----------------------------
 development                 | vagrant  | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/vagrant               +
                             |          |          |             |             | vagrant=CTc/vagrant       +
                             |          |          |             |             | my_readonly=c/vagrant
...
development=# revoke connect on database development from my_readonly;
REVOKE
development=# revoke usage on schema public from my_readonly;
REVOKE
development=# \l
                                           List of databases
            Name             |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------------------------+----------+----------+-------------+-------------+-----------------------
 development                 | vagrant  | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/vagrant          +
                             |          |          |             |             | vagrant=CTc/vagrant

ऐसा क्यों है? क्या राज्य बदला? मेरा मानना ​​है कि my_readonly उपयोगकर्ता को कनेक्ट करने की क्षमता इस पूरे psql सत्र के माध्यम से अपरिवर्तित थी (क्योंकि मैं अनुमान लगा रहा हूं कि PUBLIC की भूमिका विशेषाधिकारों को जोड़ती है), लेकिन स्पष्ट रूप से कुछ बदल गया: वह चीज क्या है?

साइड प्रश्न: कैसे मैं स्पष्ट रूप से postgres पूछ सकते हैं कि क्या वास्तव में सार्वजनिक करता है कनेक्ट विशेषाधिकार हैं (वे रद्द कर दिया गया हो सकता है - देखना क्यों एक नया उपयोगकर्ता किसी भी तालिका में से चयन कर सकते हैं? )?

जवाबों:


5

Psql में बैकस्लैश कमांड एक क्वेरी या क्वेरी के लिए शॉर्टकट हैं जो सिस्टम कैटलॉग के माध्यम से देखते हैं। \lआदेश में दी गई जानकारी पर लग रहा है pg_catalog.pg_database, विशेष रूप से, इस क्वेरी:

SELECT d.datname as "Name",
   pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
   pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
   d.datcollate as "Collate",
   d.datctype as "Ctype",
   pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;

जब आप कमांड लाइन पर इसे लागू करते हैं, तो आप ध्वज को psqlपास करने के लिए बैकलैश कमांड के लिए इसका उपयोग कर सकते हैं -E

यदि डेटाबेस या अन्य ऑब्जेक्ट पर अनुमतियाँ हैं, जो कि PostgreSQL उन्हें बनाता है, तो *aclकॉलम होगा NULL। यदि आप डिफॉल्ट्स को बदलते हैं, जैसा कि आपके पास है, तो ACL कॉलम आपके द्वारा चलाए गए GRANT/ और / या संबंधित REVOKEस्टेटमेंट से संबंधित होगा ।

आप अनुमतियाँ / एसीएल विशेष रूप से देख सकते हैं के माध्यम से या तो \zया\dp

यदि आप यहां पढ़ें:

http://www.postgresql.org/docs/9.4/static/sql-grant.html

यदि आप नीचे स्क्रॉल करते हैं, (या शब्द के लिए खोज psql), तो आप उस तालिका को देख सकते हैं जो आपको दिखाती है कि आप एसीएल की व्याख्या कैसे करते हैं जिसे आप \lया एसीएल कॉलम में देखते हैं ।

उदाहरण के लिए:

=Tc/vagrant

इसका अर्थ है कि PUBLIC (अंतर्निहित भूमिका जिसमें सभी भूमिकाएँ हैं) के पास अस्थायी टेबल बनाने Tऔर कनेक्ट करने की अनुमति है c, क्योंकि ACL लाइन =xxxxxPUBLIC पर लागू अनुमतियों को निरूपित करती है, जबकि rolname=xxxxउस विशिष्ट भूमिका पर लागू होती है।

Dalibo की इस प्रस्तुति को आगे भी स्पष्ट करने में मदद करनी चाहिए: PostgreSQL में प्रबंध अधिकार

उम्मीद है की वो मदद करदे। =)

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