GRANT
अलग-अलग वस्तुओं पर अलग-अलग हैं। GRANT
डेटाबेस पर आईएनजी GRANT
नहीं करता है स्कीमा के भीतर अधिकार। इसी तरह, GRANT
एक स्कीमा पर आईएनजी टेबल पर अधिकार प्रदान नहीं करता है।
अगर आपके पास SELECT
. के अधिकार हैं एक तालिका से, लेकिन इसे उस स्कीमा में देखने का अधिकार नहीं है जिसमें यह शामिल है तो आप तालिका तक नहीं पहुंच सकते हैं।
अधिकार परीक्षण क्रम में किए जाते हैं:
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.
आपका भ्रम इस तथ्य से उत्पन्न हो सकता है कि public
स्कीमा में एक डिफ़ॉल्ट GRANT
है भूमिका के सभी अधिकारों का public
, जिसका प्रत्येक उपयोगकर्ता/समूह सदस्य है। तो सभी के पास पहले से ही उस स्कीमा का उपयोग है।
मुहावरा:
<ब्लॉकक्वॉट>(यह मानते हुए कि वस्तुओं की अपनी विशेषाधिकार आवश्यकताएं भी पूरी होती हैं)
कह रहा है कि आपके पास USAGE
होना चाहिए इसके भीतर वस्तुओं का उपयोग करने के लिए एक स्कीमा पर, लेकिन USAGE
एक स्कीमा पर स्कीमा के भीतर वस्तुओं का उपयोग करने के लिए पर्याप्त नहीं है, आपके पास वस्तुओं पर भी अधिकार होना चाहिए।
यह एक डायरेक्टरी ट्री की तरह है। यदि आप एक निर्देशिका बनाते हैं somedir
फ़ाइल के साथ somefile
इसके भीतर फिर इसे सेट करें ताकि केवल आपका अपना उपयोगकर्ता निर्देशिका या फ़ाइल तक पहुंच सके (मोड rwx------
डीआईआर पर, मोड rw-------
फ़ाइल पर) तो कोई और यह देखने के लिए निर्देशिका को सूचीबद्ध नहीं कर सकता कि फ़ाइल मौजूद है।
यदि आप फ़ाइल पर विश्व-पढ़ने के अधिकार प्रदान करते हैं (मोड rw-r--r--
) लेकिन निर्देशिका अनुमतियों को न बदलें इससे कोई फर्क नहीं पड़ेगा। कोई भी देख नहीं देख सका फ़ाइल को पढ़ने के लिए, क्योंकि उनके पास निर्देशिका को सूचीबद्ध करने का अधिकार नहीं है।
यदि आप इसके बजाय rwx-r-xr-x
. सेट करते हैं निर्देशिका पर, इसे सेट करना ताकि लोग निर्देशिका को सूचीबद्ध और पार कर सकें लेकिन फ़ाइल अनुमतियों को नहीं बदल रहे हैं, लोग सूची कर सकते हैं फ़ाइल लेकिन पढ़ नहीं कर सका ऐसा इसलिए क्योंकि उनके पास फ़ाइल तक पहुंच नहीं होगी।
आपको दोनों को सेट करना होगा लोगों को वास्तव में फ़ाइल देखने में सक्षम होने की अनुमति।
पीजी में एक ही बात। आपको दोनों स्कीमा USAGE
की आवश्यकता है किसी ऑब्जेक्ट पर कार्रवाई करने के अधिकार और ऑब्जेक्ट अधिकार, जैसे SELECT
एक टेबल से।
(सादृश्य थोड़ा नीचे गिर जाता है कि PostgreSQL में अभी तक पंक्ति-स्तरीय सुरक्षा नहीं है, इसलिए उपयोगकर्ता अभी भी "देख" सकता है कि तालिका SELECT
द्वारा स्कीमा में मौजूद है pg_class
. से आईएनजी सीधे। वे इसके साथ किसी भी तरह से बातचीत नहीं कर सकते हैं, हालांकि, यह केवल "सूची" भाग है जो बिल्कुल समान नहीं है।)