|
In sommige gevallen zou u wellicht als een bepaalde
user willen inloggen om bijvoorbeeld een grant van een
bepaald privilege te doen op een object van die user.
Maar u weet zijn/haar password niet. Of u wilt in een
script een groep users wijzigen, maar wilt niet alle
passwords van die gebruikers in het script opnemen.
Er bestaat een ongedocumenteerde feature, 'identified
by values', in het 'alter user' commando dat hiervoor
gebruikt kan worden. De gecodeerde user-passwords staan
in de dba_users tabel en deze kunnen gebruikt worden
om een script met alter user commando's te genereren
dat gewijzigde passwords weer terug wijzigt naar het
origineel.
Oracle meldt hierover:
'Oracle provides an undocumented 'identified by values'
clause in the 'alter user' command that can be used
for this purpose. Since the dba'users table contains
the encoded password for each user, this value can be
used to generate an 'alter user' command to reset the
user's password back to its original value. Then, from
user system or another DBA user, you can alter the user's
password to a known value (such as 'whatever'), log
into the user's account using 'connect userid/whatever',
make the changes that are needed, connect back to the
system account, and run the generated 'alter user' command
to put the original password back.'
Dit is de SQL om een script te genereren dat de passwords
weer terug wijzigt naar de originele waarde:
SPOOL herstelpw.sql
SELECT 'alter user ' || username || ' identified by
values ''' || password || ''';' FROM dba'users; SPOOL
off
Hieronder staat hoe u een script kunt genereren om de
passwords voor alle users te wijzigen naar een voor
de DBA bekende waarde (bijvoorbeeld Centor):
SPOOL zetpw.sql
SELECT 'alter user ' || username || ' identified by
Centor;'
FROM dba_users; SPOOL off
Dus nu kunt u herstelpw.sql aanmaken, zetpw.sql draaien,
uw wijzigingen uitvoeren en vervolgens herstelpw.sql
draaien om de boel weer te herstellen.
Onnodig te zeggen dat gedurende dit proces de betreffende
user(s) geen toegang tot de database heeft (hebben).
Voor de veiligheid verdient het wellicht aanbeveling
om het aanmaken van herstelpw.sql onderdeel te maken
van zetpw.sql.

|