GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Troca de senha de usuário para a senha antiga utilizando hash value no Oracle 10/11g

O Oracle permite a troca de senha de um determinado usuário para a senha antiga utilizando hash value.  Esta operação é importante quando o DBA não possui o conhecimento da senha atual do usuário e é necessitado ao mesmo a senha desse usuário para se realizar uma determinada operação. No Oracle 10g para se executar essa atividade, só com a DBA_USERS jse torna possível a realização. No entanto, no Oracle 11g, para esta determinada view em questão, o campo PASSWORD que possui o valor em hash (a senha atual do usuário criptografada) retorna em branco. Com isso, no Oracle 11g, se faz necessário o uso da view SYS.USER$. No Oracle 12c, as view para gerenciamento de segurança de usuários são ALL_USERS, CDB_USERS, DBA_USERS, e USER_USERS.

Sendo assim, segue abaixo a troca de de senha para a senha antiga utilizando hash value no Oracle 10/11g utilizando o usuário Scott:

— Se efetua um select na DBA_USERS para obter informações do profile do usuário, nome, status e senha em hash (Note que o valor está em branco, isso se deve ao fato de o banco em questão ser 11g. Se o mesmo fosse 10g, o valor em questão estaria sendo retornado pelo select.)

SQL> Select USERNAME, PROFILE, PASSWORD, ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME ='SCOTT';

USERNAME                      PROFILE                       PASSWORD                ACCOUNT_STATUS
------------------------------ ------------------------------ ------------------------------ --------------------------------
SCOTT                              DEFAULT                                                                 OPEN

— Utilizando a v$version para demonstração da versão do banco:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

— Como já elucidado, o banco de dados em questão é 11g. Para isso, há a necessidade da view SYS.USER$ para obter o valor em Hash representado pelo campo PASSWORD.

SQL> SELECT NAME, PASSWORD,ASTATUS FROM SYS.USER$ WHERE NAME='SCOTT';

NAME                              PASSWORD                  ASTATUS
------------------------------ ------------------------------ ----------
SCOTT                            F894844C34402B67     0

— Efetuando conexão com o usuário Scott para demonstração da senha atual. No entanto, para o post em questào, estamos trabalhando com a hipótese do DBA não ter conhecimento da mesma. Representaçào é para questòes de comprovação da operação mais adiante:

SQL> conn scott/tiger
Connected.

— Alteração da senha do usuário Scott para brunors com o usuário Sys e, teste de conexão com a nova senha:

SQL> conn /as sysdba
Connected.

SQL> alter user scott identified by brunors;

User altered.

SQL> conn scott/brunors
Connected.

— Procedimento para voltar a senha do usuário Scott para a senha antiga via Hash:

— Alteração do profile do usuário para um profile temporário. Visto que determinados profiles podem possuir restrições que impossibilitam a troca de senha do usuário para a senha antiga:

SQL> conn /as sysdba
Connected.

SQL> CREATE PROFILE novoprofilename
LIMIT PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED;

Profile created.

SQL> alter user SCOTT profile novoprofilename;

User altered.

— Voltando a senha do usuário Scott para a senha antiga tiger (Note que o retorno da senha para a senha antiga está sendo passado via hash value):

SQL> alter user SCOTT identified by values 'F894844C34402B67';

User altered.

— Voltando o usuário Scott para seu profile (campo Profile na DBA_USERS):

SQL> alter user SCOTT profile DEFAULT;

User altered.

— Apagando o profile temporário:

SQL> drop profile novoprofilename;

Profile dropped.

— Efetuando teste de conexão com o usuário Scott com a senha antiga tiger:

SQL> conn scott/tiger
Connected.

Espero ter ajudado,
Abraços!

Share

You may also like...

Deixe um comentário

O seu endereço de e-mail não será publicado.