| From: | Jose Mercedes Venegas Acevedo <jvenegasperu(at)gmail(dot)com> |
|---|---|
| To: | Federico Pascual <federico(dot)pascual(at)gmail(dot)com> |
| Cc: | Juan José Santamaría Flecha <juanjo(dot)santamaria(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
| Subject: | Re: "Limpiar" asignación de permisos a objetos en esquema. |
| Date: | 2019-07-30 19:19:15 |
| Message-ID: | CA+KjtGfx0oLAXC8X33zVtOjdSd+cg-2=+3dDw4yVH0eDeD6EWA@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-es-ayuda |
Hola Federico
Buen dia
Que interesante este tema podrias tu tambien por favor compartir el script
de esto ultimo que mencionas " La reasingación del owner correcto y los
permisos correspondientes se hace a travez de otro script" aprovechando que
ya lo tienes resuelto seria tambien barbaro.
Atentamente
José
El mar., 30 jul. 2019 a las 11:55, Federico Pascual (<
federico(dot)pascual(at)gmail(dot)com>) escribió:
> Juan José,
> Hola. Bárbaro che, muchicimas gracias.
> Es exactamente esto lo que quiero, solo voy a exeptuar los usuarios del
> sistema (pg_signal_backend, etc.).
> Pensé por un momento que podía existir alguna alternativa del tipo "...
> from all roles" como decis, pero tu solución se ajusta a lo que queremos
> hacer. La reasingación del owner correcto y los permisos correspondientes
> se hace a travez de otro script que ya está resuelto.
>
> Saludos y muchas gracias nuevamente.
> Federico.
>
> El mar., 30 jul. 2019 a las 13:12, Juan José Santamaría Flecha (<
> juanjo(dot)santamaria(at)gmail(dot)com>) escribió:
>
>> On Tue, Jul 30, 2019 at 3:24 PM Federico Pascual
>> <federico(dot)pascual(at)gmail(dot)com> wrote:
>> >
>> > Yo quisiera algo como:
>> >
>> > revoke all privileges on all tables on schema <schema name> from all
>> fucking world;
>> >
>> > Esta es la referencia más cercana que encontré a lo que quiero:
>> >
>> http://www.postgresonline.com/journal/index.php?/archives/221-Bulk-Revoke-of-Permissions-for-Specific-GroupUser-role.html
>> >
>> > Quisiera evitar tener que exportar la db con la cláusula que evita la
>> asignación de permisos para tener que reimportarla.
>> >
>>
>> De la lógica que quieres, la única parte que no puedes hacer en una
>> única instrucción es el 'from all roles'. Tienes que iterar por cada
>> uno de los roles a los que les vas a hacer el 'revoke'. En cualquier
>> caso, te recomendaría no quitar los privilegios a los dueños del
>> esquema.
>>
>> Con SQL encadenado puedes generar las instrucciones. Y con PL/pgSQL
>> puedes automatizarlo:
>>
>> DO $$
>> DECLARE rol record;
>> BEGIN
>> FOR rol IN
>> SELECT r.rolname, nsp.nspname
>> FROM pg_roles r
>> CROSS JOIN pg_namespace nsp
>> WHERE nsp.nspowner <> r.oid AND nsp.nspname = '<schema_name>'
>> LOOP
>> RAISE NOTICE 'REVOKE ALL ON ALL TABLES IN SCHEMA % FROM %',
>> rol.nspname, rol.rolname;
>> RAISE NOTICE 'REVOKE ALL ON ALL SEQUENCES IN SCHEMA % FROM %',
>> rol.nspname, rol.rolname;
>> RAISE NOTICE 'REVOKE ALL ON ALL FUNCTIONS IN SCHEMA % FROM %',
>> rol.nspname, rol.rolname;
>> --EXECUTE 'REVOKE ALL ON ALL TABLES IN SCHEMA ' ||
>> quote_ident(rol.nspname) || ' FROM ' || quote_ident(rol.rolname);
>> --EXECUTE 'REVOKE ALL ON ALL SEQUENCES IN SCHEMA ' ||
>> quote_ident(rol.nspname) || ' FROM ' || quote_ident(rol.rolname);
>> --EXECUTE 'REVOKE ALL ON ALL FUNCTIONS IN SCHEMA ' ||
>> quote_ident(rol.nspname) || ' FROM ' || quote_ident(rol.rolname);
>> END LOOP;
>> END$$;
>>
>> Asegúrate que esta es la funcionalidad que buscas antes de quitar los
>> comentarios.
>>
>> Un saludo,
>>
>> Juan José Santamaría Flecha
>>
>
--
José Mercedes Venegas Acevedo
cel Mov RPC 964185205
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Federico Pascual | 2019-07-31 13:20:34 | Re: "Limpiar" asignación de permisos a objetos en esquema. |
| Previous Message | Federico Pascual | 2019-07-30 17:00:10 | Re: "Limpiar" asignación de permisos a objetos en esquema. |