problemas con supersusuario

From: Rensi Arteaga Copari <rarteaga(at)ende(dot)bo>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: problemas con supersusuario
Date: 2010-03-12 19:28:35
Message-ID: 4B9A95E3.5010607@ende.bo
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola amigos,

Tengo una base de datos que ha sido desarrollado por varios
programadores , todos registrados como supersusurios
y ahora que tengo la base datos en explotación, por seguridad estos
desarrolladores ya no deben ser supersusurios,
y les quites este privilegios

ALTER ROLE "vsoliz" NOSUPERUSER;
... etc

Pero después de quitar algunos supersusuarios,
cuando otros usuarios y yo (que soy superusuario todavia) accedemos a
la base de datos
me sale un error

#42501 - permiso denegado para la relación vad_partida_detalle

Pense que esto podría ser debido a que los usuarios desarrolladores
son dueños de varias funciones, vistas y tablas
y cree una función para asignar como dueño de todo los objetos al
usuario "postgres" (esto en en base a una que encontré por la lista)
pero el problemas persiste y ya no se por donde más buscar el problemas
(a demas que me parece muy raro que a un superusuario le salga permiso
denegado)

PARA ASIGNAR COMO DUEÑO AL p_user DE TODAS LAS VISTA Y TABLAS EN
EL p_esquema
--------------------------------------------------------------

DECLARE
objeto record;
x varchar;
BEGIN
FOR objeto IN
( SELECT viewname as d FROM pg_views WHERE
schemaname=p_esquema
UNION
SELECT tablename as d FROM pg_tables WHERE
schemaname=p_esquema
UNION
SELECT relname as d FROM pg_statio_all_sequences
WHERE schemaname=p_esquema)
LOOP

-- RAISE NOTICE 'Asignando % como dueño % en
el esquema %', p_user,? objeto.d, p_esquema;
x='ALTER TABLE "'||p_esquema||'"."'|| objeto.d ||'"
OWNER TO '||p_user;
RAISE NOTICE '%',x;
EXECUTE (x);

END LOOP;
END;

------------------------------------------------

PARA ASIGNAR COMO DUEÑO AL p_user DE TODASFUNCIONES en el p_esquema

-----------------------------------

DECLARE
objeto record;
tipos_objeto record;

x varchar;
tipos varchar;
tam integer;
contador integer;
cuenta_funciones integer;
tipo_dato varchar;
BEGIN

-- Consulta los datos de la función

cuenta_funciones:=0;

FOR objeto IN
(

SELECT p.proname AS name,
p.oid,
p.proargtypes AS args,
p.prorettype AS rettype,
n.nspname,
proargnames,
p.proargmodes,
p.proallargtypes,
p.pronargs
FROM pg_proc p
INNER JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = p_esquema
)
LOOP
-- Arma los atributos de la función

tipos:='(';
contador=1;

tam=objeto.pronargs;

WHILE contador < tam or contador = tam LOOP

SELECT
typname
into
tipo_dato
FROM pg_type t
WHERE t.oid=objeto.args[contador
-1];

IF (contador <>tam)THEN
tipos =
tipos||objeto.proargnames[contador]||' '||tipo_dato ||', ';
ELSE
tipos =
tipos||objeto.proargnames[contador]||' '||tipo_dato;
END IF;

contador = contador +1;
END LOOP;
tipos = tipos||')';

x=' ALTER FUNCTION
"'||p_esquema||'"."'||objeto.name||'"'||tipos||'
OWNER TO '||p_user;

RAISE NOTICE 'OBJETO % CONTADOR % ,
%',objeto.name,contador,x;

-- Executa la funcion de asignacion de privilegios

EXECUTE (x);

cuenta_funciones:=cuenta_funciones+1;
END LOOP;

RAISE NOTICE '% FUNCIONES ASIGNADAS',cuenta_funciones;
END;

---------------------------------------------------------------

--
EMPRESA NACIONAL DE ELECTRICIDAD
www.ende.bo
Tel.: (591-4) 4520253 - 4520228
Fax: (591-4) 4520318
---------------------------------------------------------------------------------
Este mensaje ha sido analizado automaticamente por el MailScanner de ENDE
y no han sido detectados virus ni otros contenidos peligrosos.

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2010-03-12 19:34:14 Re: AYUDA!! carpeta /tmp
Previous Message Miguel Angel Hernandez Moreno 2010-03-12 19:25:04 AYUDA!! carpeta /tmp