Oracle parola süresinin dolmasını nasıl kapatabilirim?


177

Oracle'ı geliştirme için kullanıyorum. Her zaman veritabanımı yeniden oluşturmak için kullandığım bir bootstrap hesabının parolasının süresi doldu.

Bu kullanıcı (ve diğer tüm kullanıcılar) için parola geçerliliğini kalıcı olarak nasıl kapatabilirim?

Varsayılan olarak parolaların süresi dolan Oracle 11g kullanıyorum.


Ben serverfault.com bunu sormak daha iyi olabilir düşünüyorum. Bunu zorlamayacağım çünkü bunu geliştirme için kullandığınızı söylediniz ve bence hala burada birisinin bildiği ve / veya buradaki diğer kişilerin bu bilgilerden yararlanma şansı var.
Kertenkele Bill

Sanırım bunu yapacağım. Hangi site için daha uygun olduğunu tartışıyordum, çünkü temel bir veritabanı sorusu ve çok fazla DBA şey değil.
Josh Kodroff

Siteler arası sorular için dupe politikasının ne olduğundan emin değilim, ancak bağlantı
şekildedir

Yanıtlar:


313

Oracle'da belirli bir kullanıcı profili için parola geçerlilik süresi politikasını değiştirmek için öncelikle kullanıcının hangi profili kullandığını kontrol edin:

select profile from DBA_USERS where username = '<username>';

Daha sonra, hiçbir zaman kullanım süresi sona ermeyecek şekilde sınırı değiştirebilirsiniz:

alter profile <profile_name> limit password_life_time UNLIMITED;

Daha önce kullanabileceğiniz sınırı kontrol etmek isterseniz:

select resource_name,limit from dba_profiles where profile='<profile_name>';

5
Bu profili değiştirdi. Ancak, varsayılan profil oluşturulduklarında olduğu gibi parolaları sona erecek şekilde ayarlanmış kullanıcılara sahibim. Parolanın süresinin dolmaması için bu kullanıcı hesaplarını nasıl değiştirebilirim?
Jay Imerman

14
select username,expiry_date,account_status from dba_users; account_status'u görüntülemek için. süresi dolan hesaplar için şifreyi son kez bir kez sıfırlamanız gerekebilir.
Wu

6
kullanıcı aaa hesabının kilidini değiştir;
Kalpesh Soni

1
Bütünlüğü sağlamak için, başka bir profile kullanıcı değiştirmeniz gerekirse: ALTER USER Bob PROFILE MyNonExpiringProfile;.

sorgusunda "DBA_USERS üzerinden profil seçin burada kullanıcıadı = '<kullanıcıadı>';";
gaurav

90

İçin gelişme Eğer devre dışı parola ilkesi hiçbir diğer profil (varsayılan birinde yani devre dışı parolasının süresinin) kuruldu eğer:

ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;

Ardından şifreyi sıfırlayın ve kullanıcı hesabının kilidini açın. Bir daha asla sona ermemelidir:

alter user user_name identified by new_password account unlock;

40

Diğer yanıtların belirttiği gibi, kullanıcının profilini (örneğin, 'VARSAYILAN' profili) uygun şekilde değiştirmek, bir kez ayarlandıktan sonra hiçbir zaman geçerliliğini yitirmeyecek parolalara yol açacaktır.

Ancak, bir yorumcunun işaret ettiği gibi, profilin eski değerleri altında ayarlanan şifrelerin süresi geçmiş olabilir ve (profilin belirtilen yetkisiz kullanım süresinden sonraysa) hesabın kilitlenmesi.

Kilitli hesaplara sahip süresi dolmuş şifrelerin çözümü (yanıtlama yorumunda belirtildiği gibi) ALTER USER komutunun bir sürümünü kullanmaktır:

ALTER USER xyz_user ACCOUNT UNLOCK;

Ancak kilit açma komutu yalnızca hesabın gerçekten kilitli olduğu hesaplarda çalışır, ancak yetkisiz kullanım süresi olan, yani parolanın süresi dolduğu ancak hesabın henüz kilitli olmadığı hesaplar için çalışmaz. Bu hesaplar için parola ALTER USER komutunun başka bir sürümüyle sıfırlanmalıdır:

ALTER USER xyz_user IDENTIFIED BY new_password;

Aşağıda, ayrıcalıklı bir kullanıcının (ör. 'SYS' kullanıcısı) kullanıcının parolasını veritabanında depolanan mevcut karma değerine sıfırlamak için kullanabileceği küçük bir SQL * Plus betiği bulunmaktadır.

EDIT: Oracle'ın eski sürümleri parola veya parola karmasını parola sütununda, Oracle'ın daha yeni sürümleri parola karmasını yedek4 sütununda depolar. Aşağıdaki komut dosyası, parola ve yedek4 sütunlarını toplamak, ancak kullanıcının hesabını sıfırlamak için yedek4 sütununu kullanmak üzere değiştirildi; gerektiği gibi değiştirin.

REM Tell SQL*Plus to show before and after versions of variable substitutions.
SET VERIFY ON
SHOW VERIFY

REM Tell SQL*Plus to use the ampersand '&' to indicate variables in substitution/expansion.
SET DEFINE '&'
SHOW DEFINE

REM Specify in a SQL*Plus variable the account to 'reset'.
REM Note that user names are case sensitive in recent versions of Oracle.
REM DEFINE USER_NAME = 'xyz_user'

REM Show the status of the account before reset.
SELECT
  ACCOUNT_STATUS,
  TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE,
  TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
  DBA_USERS
WHERE
  USERNAME = '&USER_NAME';

REM Create SQL*Plus variable to hold the existing values of the password and spare4 columns.
DEFINE OLD_SPARE4 = ""
DEFINE OLD_PASSWORD = ""

REM Tell SQL*Plus where to store the values to be selected with SQL.
REM Note that the password hash value is stored in spare4 column in recent versions of Oracle,
REM   and in the password column in older versions of Oracle.
COLUMN SPARE4HASH NEW_VALUE OLD_SPARE4
COLUMN PWORDHASH NEW_VALUE OLD_PASSWORD

REM Select the old spare4 and password columns as delimited strings 
SELECT 
  '''' || SPARE4 || '''' AS SPARE4HASH,
  '''' || PASSWORD || '''' AS PWORDHASH
FROM 
  SYS.USER$ 
WHERE 
  NAME = '&USER_NAME';

REM Show the contents of the SQL*Plus variables
DEFINE OLD_SPARE4
DEFINE OLD_PASSWORD

REM Reset the password - Older versions of Oracle (e.g. Oracle 10g and older) 
REM ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_PASSWORD;

REM Reset the password - Newer versions of Oracle (e.g. Oracle 11g and newer) 
ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_SPARE4;

REM Show the status of the account after reset
SELECT
  ACCOUNT_STATUS,
  TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE,
  TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
  DBA_USERS
WHERE
  USERNAME = '&USER_NAME';

2
Yardım için teşekkürler. Alakalı bir cevap bulmak çok zor. Diğer tüm yanıtlar yalnızca PASSWORD_LIFE_TIME için geçerlidir.
sabertiger

SYS.USER $ .PASSWORD sütunu, parolanın yalnızca büyük / küçük harfe duyarlı olmayan (büyük harf?) Sürümünün karmasını içerir. Oracle 11'de, SEC_CASE_SENSITIVE_LOGON = FALSE sistem parametresini ayarlamadığınız sürece, SYS.USER $ .SPARE4 sütununda büyük / küçük harfe duyarlı parola karması çok daha uzun olacaktır.
Morbo

16

Parola kullanım süresinin varsayılan olarak hiçbir zaman sona ermeyeceğine inanıyorum. Ancak, geliştirici kullanıcısı için bir profil oluşturabilir ve ayarlayabilirsiniz PASSWORD_LIFE_TIME. Daha fazla bilgi için orafaq'a bakınız. Burada bir kişinin bakış açısına ve kullanımına ilişkin bir örnek görebilirsiniz .


7
Önerilen yükseltilmiş güvenlik ile yeni bir 11g kurulumunda (yükseltmenin aksine), şifrelerin 30 gün sonra varsayılan olarak sona ereceğini düşünüyorum.
Gary Myers


0

Gizlilik, bütünlük ve verilerin kullanılabilirliğine yönelik olası tehditlere yol açabileceğinden, parola kullanım süresinin kapatılması iyi bir fikir değildir.

Ancak isterseniz.

Doğru erişiminiz varsa aşağıdaki SQL'i kullanın

SELECT kullanıcı adı, account_status FROM dba_users;

Bu size böyle bir sonuç vermelidir.

   USERNAME                       ACCOUNT_STATUS
------------------------------ -----------------

SYSTEM                         OPEN
SYS                            OPEN
SDMADM                         OPEN
MARKETPLACE                    OPEN
SCHEMAOWNER                    OPEN
ANONYMOUS                      OPEN
SCHEMAOWNER2                   OPEN
SDMADM2                        OPEN
SCHEMAOWNER1                   OPEN
SDMADM1                        OPEN
HR                             EXPIRED(GRACE)

USERNAME                       ACCOUNT_STATUS
------------------------------ -----------------

APEX_PUBLIC_USER               LOCKED
APEX_040000                    LOCKED
FLOWS_FILES                    LOCKED
XS$NULL                        EXPIRED & LOCKED
OUTLN                          EXPIRED & LOCKED
XDB                            EXPIRED & LOCKED
CTXSYS                         EXPIRED & LOCKED
MDSYS                          EXPIRED & LOCKED

Artık Pedro Carriço cevaplarını kullanabilirsiniz https://stackoverflow.com/a/6777079/2432468


Üretim ortamlarında parola geçerliliğini sona erdirmenin aceleci olduğunu kabul etsem de, Geliştirme veya Test bölümünde bu parolayı kapatmak isteyebiliriz.
APC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.