GRANT
s在不同的物體上是分開的。在數據庫中的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
架構中有一個默認的所有角色權限public
,其中每個用戶/組的成員GRANT
事實出現的。所以每個人都已經在該模式上使用過。
的階段:
(假設該對象的所有權要求也達到了)
是說,你必須在架構內,它使用對象有USAGE
,但有模式上的USAGE
並不足以使用模式中的對象,您還必須擁有對象本身的權限。
它就像一個目錄樹。如果您創建一個目錄somedir
並在其中包含文件somefile
,那麼將其設置爲只有您自己的用戶可以訪問目錄或文件(目錄上的模式,文件上的模式rw-------
),則其他人無法列出目錄以查看該目錄該文件存在。
如果您要授予文件(模式rw-r--r--
)的全局讀取權限,但不更改目錄權限,則不會有任何區別。沒有人可以看到該文件爲了讀取它,因爲他們沒有權限列出目錄。
如果改爲設置rwx-r-xr-x
上的目錄,將它使人們可以列出並遍歷目錄,但不改變文件的權限,人們可以列表文件,但不能讀它,因爲他們會不訪問該文件。
您需要設置這兩個權限才能真正能夠查看該文件。
Pg。您需要架構USAGE
權限和對象權限才能在對象上執行操作,例如從表中獲取SELECT
。
(比喻跌倒在PostgreSQL中,絲毫沒有行級安全性還沒有,因此用戶仍然可以「看到」,該表在架構中存在的SELECT
從pg_class
荷蘭國際集團直接它們不能。與它進行交互以任何方式,雖然如此,它只是在「名單」部分是不完全一樣)
現在是非常用目錄示例清楚:)如果您使用超級用戶插入某些表或行,例如當您使用CREATE EXTE添加postGIS時,我必須說這是一個問題NSION'。這與你在'su'時在Linux上創建的文件差不多。如果在pqsl中有語句的'sudo -e',那將會很好。 –
@LucasMalor那麼,有'ALTER DEFAULT PRIVILEGES' ... –
無論如何,現在我意識到,'GRANT'不是特定於表格的聲明不是我想要的,因爲它們影響所有數據庫...:s –