[Pgsql-ayuda] script GRANT para una lista de usuarios

Antonio Castro acastro@ciberdroide.com
Tue, 16 Sep 2003 19:33:19 +0200 (CEST)


On Mon, 15 Sep 2003, Alvaro Herrera wrote:

> Sandrigo,
>
> Si tienes un archivo con un usario por linea llamado usuarios y otro
> archivo con una tabla por linea llamado tablas, puedes hacer
>
> for usuario in `cat usuarios`; do
> =09for tabla in `cat tablas`; do
> =09=09echo "grant select on $tabla to $usuario" >> grants
> =09done
> done
>
> Eso te va a generar un archivo llamado grants con una linea de grant
> select a cada usuario en cada tabla.  Sazonando con la imaginacion
> suficiente deberias poder resolver tu problema facilmente.

Bueno sacar la lista de objetos de una BD se puede hacer combinando
la salida de psql. Espero no equivocarme. Compruebalo antes.


LST_ALL_OBJ=3D`psql -U postgres $DB -t -c '\d' |  sed 's/^ *//' | cut -d ' =
' -f 1`



Esto aplicado a lo que propone Alvaro quedar=EDa algo as=ED:

for OBJ in $LST_ALL_OBJ
do
=09for usuario in `cat usuarios`
=09do
=09=09echo "grant select on $OBJ to $usuario" >> grants
=09done
done

Yo recurro a cosas parecidas con frecuencia. Usar la salida de psql
puede resultar dependiente de la version de postgres, pero todo lo
que sea salirse de SQL puro puede presentar el mismo problema.


--=20
Un saludo
Antonio Castro

       /\     /\   Ciberdroide Inform=E1tica
         \\W//  << http://www.ciberdroide.com >>
        _|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . acastro@ciberdroide.com   |
+()()()---------()()()--------------------+