Esta técnica pode ser bastante útil em várias situações nas quais precisamos acessar um determinado usuário que onde não temos conhecimento da senha e também não podemos realizar a alteração da mesma. Por exemplo:
- O colaborador saiu de ferias e somente o seu usuário tem permissão para realizar determinadas atividades.
- Quando existe a necessidade de conectar com um usuário para testar a liberação de determinadas permissões.
- Conectar com o usuário para validar determinados processos, etc.
Na versão Oracle 11g, o processo de recuperação da senha criptografada se difere um pouco da versão 10g uma vez que no 11g temos um “aprimoramento” no nível de segurança do Oracle, com a possibilidade de utilização de senhas case sensitive.
Para confirmar se a base está usando senhas com case sensitive devemos verificar o parâmetro SEC_CASE_SENSITIVE_LOGON . Este é um parâmetro dinâmico que por padrão é definido como TRUE . Para desativar o case sensitive, basta altera-lo para FALSE.
No exemplo a seguir, precisamos conectar com o owner lamim, porém não temos acesso a senha do mesmo.
Se verificarmos na coluna PASSWORD da DBA_USERS, podemos observar que diferentemente da versão 10g, na 11g essa coluna não é populada.
SQL> select username, PASSWORD from dba_users where USERNAME='LAMIM'; USERNAME PASSWORD ------------------------------ ------------------------------ LAMIM
Afim de validar o processo que estara sendo realizado, estarei demontrando a senha atual do owner LAMIM, bem como validando que a mesma está em modo case sensitive. Na primeira conexão usando a senha LamiM com L e M maiúsculo a conexão foi estabelecida com sucesso. Já na tentativa com a senha lamim toda em minúsculo não foi possível estabelecer uma conexão.
SQL> show parameter case; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sec_case_sensitive_logon boolean TRUE SQL> SQL> conn lamim/LamiM Connected. SQL> show user USER is "LAMIM" SQL> conn lamim/lamim ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE.
Para identificar a senha criptografada na versão 11g, estaremos usando as colunas SPARE4 e PASSWORD da USER$. Por isso precisamos consulta-las e armazena-las para poder voltar a senha padrão.
col spare4 for a90 SQL> select NAME, SPARE4, PASSWORD from USER$ where NAME='LAMIM'; NAME SPARE4 PASSWORD ------------------------------ -------------------------------------------------------- LAMIM S:6273B58E517EB4C3CD321DDFDFB1EDE7D107DE453B510449D9756AB6E4B3 3C3B7E8F1B042625
A senha criptografada será composta da seguinte forma ‘SPARE4;PASSWORD’. Para poder conectar com o usuário e realizar as atividades necessárias, estaremos alterando temporariamente sua senha e posteriormente estaremos voltando a senha original, usando a senha criptografada que consultamos anteriormente.
Alterando a senha do usuário para uma senha temporária para podermos realizar a conexão:
SQL> alter user LAMIM identified by teste; User altered. SQL> conn lamim/teste Connected. SQL> SQL> show user; USER is "LAMIM" SQL>
Voltando a senha original usando a senha criptografada – alter user <usuario> identified by values ‘<SPARE4;PASSWORD>';
SQL> alter user LAMIM identified by values 'S:6273B58E517EB4C3CD321DDFDFB1EDE7D107DE453B510449D9756AB6E4B3;3C3B7E8F1B042625'; User altered. SQL>
Afim de validar que realmente voltamos a senha original, estarei realizando o mesmo teste de conexão realizado no início do artigo.
SQL> conn lamim/LamiM Connected. SQL> show user; USER is "LAMIM" SQL> conn lamim/lamim ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. SQL>
É possível verificar que a senha permanece a mesma, inclusive continuando como case sensitive.
Fonte:
http://www.oracle.com/technetwork/pt/articles/database-performance/definicao-senhas-case-sensitive-11g-496237-ptb.html
http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams211.htm#REFRN10299
Comentários
Postar um comentário