Pular para o conteúdo

Troca de senha de usuário para a senha antiga utilizando hash value no Oracle

Troca de senha de usuário Oracle utilizando hash value

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!

Bruno Reis

Bruno Reis

DBA ORACLE  na International Business Machines (IBM), fornecendo suporte para grandes clientes. Técnico em Informática pela Escola Técnica Polivalente de Americana e estudante de Ciência Computação . Mantenedor do Weblog sobre Banco de Dados Oracle e Gerenciamento de Serviços de TI: www.brunors.com

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress