Ver Mensaje Individual
  #67 (permalink)  
Antiguo 02/02/2006, 10:47
Avatar de mauriciolangea
mauriciolangea
 
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 11 meses
Puntos: 0
Interbase

Tema : Interbase / Firebird

Pregunta : ¿Como permito que los usuarios puedan modificar su propia contraseña?

Respuesta

La forma más fácil es hacer un GRANT UPDATE ON USERS TO PUBLIC, y agregar un TRIGGER que prevenga que los usuarios, con excepción de SYSDBA de modificar la contraseña de alguién más

Este es el script :

/*
Base de datos de seguridad (isc4.gdb) - version A
-permite a los usuario cambiar su propia contraseña,
-permite a SYSDBA agregar, cambiar, borrar cualquier usuario/contraseña.

Escrito por: Ivan Prenosil, 2001
*/



CONNECT 'C:\Archivos de programa\Borland\InterBase\isc4.gdb'
USER 'SYSDBA'
PASSWORD 'masterkey';


CREATE EXCEPTION E_NO_RIGHT
'No tiene provilegios para modificar éste usuario.';

SET TERM !!;
CREATE TRIGGER user_name_bu
FOR USERS
BEFORE UPDATE
AS
BEGIN
IF (NOT (USER='SYSDBA' OR USER=OLD.USER_NAME))
THEN EXCEPTION E_NO_RIGHT;
END !!
SET TERM ;!!


/** Grants. **/


GRANT UPDATE(PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME)
ON USERS
TO PUBLIC;

Importante

El problema de éste procedimiento es que los usuarios con sus contraseñas quedan visibles, por lo que si alguien malintencionado podría intentar descriptar las contraseñas a fuerza bruta.