Red de conocimiento informático - Problemas con los teléfonos móviles - Obtener permisos públicos para el shell de la base de datos PostgreSQL

Obtener permisos públicos para el shell de la base de datos PostgreSQL

Los permisos de Pg se dividen en dos partes: una parte son los "permisos del sistema" o atributos de los usuarios de la base de datos, que se pueden otorgar a roles o usuarios (la diferencia entre los dos son los permisos de inicio de sesión) . Para los objetos de la base de datos, inicialmente sólo el propietario y el superusuario pueden hacer algo, el resto son ACL. En la página, el modelo acl está simplificado. Tanto los grupos como los roles son roles. La diferencia entre usuarios y roles es que los roles no tienen permisos de inicio de sesión.

Los roles se pueden crear y eliminar con los siguientes comandos:

Crear nombre de rol;

Eliminar nombre de rol;

Para mayor comodidad, También puede llamar a los programas createuser y dropuser directamente en el comando de shell, que proporcionan encapsulación de los comandos correspondientes.

createuser name

dropuser name

Los permisos para los objetos de la base de datos incluyen SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, REGLA, REFERENCIAS, DISPARAR, CREAR, TEMPORAL, EJECUTAR y USUARIO. EXECUTE y USAGE, etc. se definen de la siguiente manera

typedefuint32AclMode; /* Máscara de bits de bits privilegiados*/

#define ACL_INSERT (1lt; lt; 0) /* Para relaciones* /

#defineACL_SELECT (1lt;lt;1)

#defineACL_UPDATE (1lt;lt;2)

#defineACL_DELETE (1lt;lt;3)

p>

#defineACL_ TRUNCATE (1lt;lt;4)

#defineACL_REFERENCES (1lt;lt;5)

#defineACL_TRIGGER (1lt;lt ;6)

#defineACL_EXECUTE (1lt;lt;7)

#defineACL_EXECUTE (1lt;lt;7) /* para funciónlt;7)/* para función*/

#defineACL_USAGE (1lt; lt; 8) /* Para idioma, espacio de nombres, FDW y

* servidores*/

#defineACL_ CREATE (1lt; lt; 9 ) /* Para espacios de nombres y bases de datos*/

#defineACL_CREATE_TEMP (1lt;lt;10) /* Para bases de datos*/

#defineACL_CONNECT (1lt;lt;11) / * para base de datos */

#defineN_ACL_RIGHTS 12 /* 1 más el último 1lt;lt;x */

#defineACL_NO_RIGHTS 0

/* Actualmente, SELECT .FOR ACTUALIZAR/FOR SHARE requiere permisos ACTUALIZAR*/

#defineACL_SELECT_FOR_UPDATE ACL_UPDATE

Podemos usar el nombre especial PUBLIC para otorgar permisos de objetos a todos los roles en el sistema. Escribir TODOS en la declaración de permisos significa que todos los permisos aplicables al objeto se otorgan al rol de destino.

beigang=# otorgar todo el esquema csm_ca al público;

GRANT

beigang=# revocar todo el esquema csm_ca del público;

REVOKE

beigang=#

Todos los permisos para cada objeto se definen de la siguiente manera:

/*

* para cada tipo de objeto admitido Máscara de bits que define "allrights"

*/

#defineACL_ ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES)

#defineACL_ ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT |ACL_UPDATE| ACL_DUPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER)

#defineACL_ALL_RIGHTS_SEQUENCE(ACL_USAGE|ACL_SELECT|ACL_UPDATE)

#defineACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SEL ECT|ACL_UPDATE)

#defineACL_ALL_RIGHTS_DATABASE(ACL_CREATE|ACL_CREATE_TEMP|ACL_CONNECT)

#define ACL_ALL_RIGHTS_FDW (ACL_USAGE)

#defineACL_ALL_RIGHTS_FOREIGN_SERVER (ACL_USAGE)

#defineACL_ALL_RIGHTS_FUNC TION (ACL_EXECU TE)

#defineacl_all_rights_function (acl_exeCute)

#defineacl_all_rights_function (acl_execute) lenguaje (acl_usage)

#defineaCl_all_rights_largeObject (acl_select | acl_update)

Ace ( ACL_USAGE |ACL_CREATE)

#defineACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE)