Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Oracle: Quitar la caducidad de las contraseñas en Oracle 11g para todos los usuarios
Bases de Datos


Mostramos en este tutorial cómo cambiar la configuración del perfil de usuarios de Oracle 11g para que las contraseñas nunca caduquen. Mostramos cómo generar un script para cambiar las contraseñas de todos los usuarios de un servidor de base de datos Oracle 11g de forma automática.



 

Cambiar la caducidad de las contraseñas a ilimitada, quitar caducidad, mostrar caducidad actual en Oracle 11g

Mostrar configuración del perfil de Oracle 11g, mostrar días de caducidad de contraseñas

En el motor de base de datos Oracle, a partir de la versión 11g, se estableció una política de caducidades de contraseñas. Desde esta versión, si no se especifica lo contrario, las contraseñas de todos los usuarios de Oracle (incluidos el SYS y el SYSTEM) caducarán transcurridos 180 días.

Para consultar los días de caducidad de contraseñas actuales en Oracle 11g, accediendo con SQLPlus, podemos ejecutar la consulta:

Select * from DBA_PROFILES where RESOURCE_NAME like 'PASSWORD_LIFE_TIME';

Nos devolverá algo así:

PROFILE RESOURCE_NAME RESOURCE LIMIT
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180

Si la contraseña de un usuario Oracle 11g está próxima a expirar mostrará el mensaje de error:

UDI-28002: operation generated ORACLE error 28002
ORA-28002: la contraseña vencerá en XXX días

Quitar la política de caducidad de contraseñas de Oracle 11g

Aunque por seguridad no es recomendable, Oracle 11g permite deshabilitar el modo de caducidad de contraseñas y dejarlo como las versiones anteriores, a ilimitado. Si nuestra organización no puede aplicar la política de caducidades de contraseñas de Oracle 11g (cada 180 días por defecto), podemos eliminar esta política y establecer las contraseñas de forma ilimitada. Para ello, desde la herramienta SQLPlus, ejecutaremos el siguiente comando:

alter profile DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Si se ha ejecutado correctamente nos devolverá el mensaje:

Perfil modificado.

Ahora podemos volver a ejecutar el comando anterior para mostrar la configuración del perfil, tras el cambio de configuración nos debe devolver el siguiente resultado:

PROFILE RESOURCE_NAME RESOURCE LIMIT
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED

A partir de ahora, cualquier usuario que se cree nuevo en Oracle 11g ya no tendrá caducidad en la contraseña. Pero es importante tener en cuenta que a los usuarios ya creados se les seguirá aplicando la política anterior de caducidad, hasta que cambien la contraseña una vez más. Para solucionar este problema mostramos a continuación cómo generar un script que establecerá la misma contraseña que actualmente tiene cada usuario a él mismo, de forma que se le aplicará la nueva política de caducidad de contraseñas a ilimitada.

Generar script para establecer la misma contraseña a todos los usuarios de Oracle 11g para deshabilitar su caducidad

Como ya hemos comentado, aunque se aplique la política de caducidad de contraseñas ilimitada, esta política se aplicará a los nuevos usuarios y a los existentes que cambien la contraseña una vez aplicada dicha política. Por lo tanto, para los usuarios actuales, hasta que no se les cambie la contraseña, nos podemos encontrar con el error:

UDI-28002: operation generated ORACLE error 28002
ORA-28002: la contraseña vencerá en XXX días

ORA-28002: the password will expire within XXX days

Y si la contraseña ha expirado nos podemos encontrar con el error:

ORA-28001: la contraseña ha expirado
ORA-28001: the password has expired

Si no tenemos muchos usuarios en Oracle 11g, podemos cambiar su contraseña (estableciendo incluso la misma que tuvieran) con el comando:

alter user SYSTEM identified by contraseña;

Si tenemos muchos usuarios y queremos establecerles la misma contraseña que tengan para deshabiltar la opción de caducidad de contraseña podemos hacer lo siguiente:

1. En primer lugar, desde SQLPLus, ejecutaremos los siguientes comandos para desactivar el mostrar encabezados y activar la salida a fichero, de esta forma guardaremos el resultado de la siguiente select en un fichero de script:

set heading off

set feedback off

spool script_cambio_password.sql

2. A continuación, siguiendo en SQLPLus, ejecutaremos la siguiente consulta SQL para generar las consultas ALTER USER necesarias para cada usuario de nuestra base de datos Oracle 11g:

SELECT 'alter user ' || u.NAME || ' identified by values ''' || u.PASSWORD || ''';' FROM SYS.USER$ u;

La consulta anterior nos devolverá algo como lo siguiente guardándolo en el fichero script_cambio_password.sql:

alter user SYS identified by values 'AADDFSSSXXXSDDD';
alter user SYSTEM identified by values 'AADDFDSS3X4X5D66';
alter user FACTURACION identified by values 'ABBDFDSSXDXSD3D';
...

Generará una línea por cada usuario de la base de datos Oracle 11g para poder cambiarle la contraseña a la misma que tenía, de esta forma se activará el nuevo perfil de caducidad ilimitada.

3. Desactivaremos la salida a fichero con:

spool off

4. Ahora ejecutaremos el script generado con:

@script_cambio_password.sql

De esta forma se regenerarán las contraseñas para todos los usuarios de forma automática y se activará el perfil de caducidad de contraseña ilimitada.

 

Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.

Artículo en inglés.


Anuncios


Enviado el Miércoles, 27 mayo a las 23:46:32 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A