GRANT
s en diferentes objetos están separados. GRANT
ing en una base de datos no tiene GRANT
derechos sobre el esquema dentro. De manera similar, usar GRANT
un esquema no otorga derechos sobre las tablas que contiene.
Si tiene derechos para SELECT
acceder a una tabla, pero no el derecho para verla en el esquema que la contiene, no podrá acceder a la tabla.
Las pruebas de derechos se realizan en orden:
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.
Su confusión puede surgir del hecho de que el public
esquema tiene un valor predeterminado GRANT
de todos los derechos sobre el rol public
, del cual todos los usuarios / grupos son miembros. Entonces, todos ya tienen uso en ese esquema.
La frase:
(suponiendo que también se cumplan los requisitos de privilegios propios de los objetos)
Está diciendo que debe tener USAGE
un esquema para usar objetos dentro de él, pero tener USAGE
un esquema no es suficiente por sí mismo para usar los objetos dentro del esquema, también debe tener derechos sobre los objetos en sí.
Es como un árbol de directorios. Si crea un directorio somedir
con un archivo somefile
dentro de él, configúrelo para que solo su propio usuario pueda acceder al directorio o al archivo (modo rwx------
en el directorio, modo rw-------
en el archivo), entonces nadie más puede listar el directorio para ver que el archivo existe.
Si concediera derechos de lectura mundial sobre el archivo (modo rw-r--r--
) pero no cambiara los permisos del directorio, no habría ninguna diferencia. Nadie pudo ver el archivo para leerlo, porque no tiene los derechos para listar el directorio.
Si, en cambio, establece rwx-r-xr-x
el directorio, configurándolo para que las personas puedan enumerar y recorrer el directorio pero sin cambiar los permisos del archivo, las personas podrían enumerar el archivo pero no podrían leerlo porque no tendrían acceso al archivo.
Debe establecer ambos permisos para que las personas puedan ver el archivo.
Lo mismo en la pág. Necesita tanto USAGE
derechos de esquema como derechos de objeto para realizar una acción en un objeto, como SELECT
desde una tabla.
(La analogía cae un poco en el sentido de que PostgreSQL aún no tiene seguridad a nivel de fila, por lo que el usuario aún puede "ver" que la tabla existe en el esquema al SELECT
ingresar pg_class
directamente. No pueden interactuar con ella de ninguna manera , sin embargo, es solo la parte de la "lista" la que no es exactamente la misma).
CREATE EXTENSION
. Es más o menos el mismo problema con los archivos creados en Linux mientras estássu
. Sería bueno si hay una especie desudo -e
declaraciones for en pqsl.