Apache HTTP Sunucusu Sürüm 2.4

Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.4 > Programlar

# htdbm - DBM parola veritabanlarını yönetir

`htdbm`, `mod_authn_dbm` üzerinden HTTP kullanıcılarının temel kimlik doğrulaması için kullanıcı isimlerinin ve parolalarının saklanmasında kullanılacak DBM dosyalarını yönetmek için kullanılır. DBM dosyaları hakkında daha ayrıntılı bilgi edinmek için `dbmmanage` sayfasına bakınız.

### Ayrıca bakınız:

- `httpd`
- `dbmmanage`
- `mod_authn_dbm`

## Kullanım

`htdbm [ -TVTtürü ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C bedel ] [ -t ] [ -v ] parola-dosyası kullanıcı`

`htdbm -b [ -TVTtürü ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C bedel ] [ -t ] [ -v ] parola-dosyası kullanıcı parola`

`htdbm -n [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C bedel ] [ -t ] [ -v ] kullanıcı`

`htdbm -nb [ -c ] [ -m | -B | -d | -s | -p ] [ -C bedel ] [ -t ] [ -v ] kullanıcı parola`

`htdbm -v [ -TVTtürü ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C bedel ] [ -t ] [ -v ] parola-dosyası kullanıcı`

`htdbm -vb [ -TVTtürü ] [ -c ] [ -m | -B -d | -s | -p ] [ -C bedel ] [ -t ] [ -v ] parola-dosyası kullanıcı parola`

`htdbm -x [ -TVTtürü ] parola-dosyası kullanıcı`

`htdbm -l [ -TVTtürü ]`

## Seçenekler

`-b`
  Betik kipi; parola için istek yapmak yerine parola komut satırından verilir. Parola komut satırında görünür olacağından çok dikkatli kullanmak gerekir. Betik kullanımı için `-i` seçeneğine bakınız.
`-i`
  Parolayı doğrulamaksızın standart girdiden okur (betik kullanımı için).
`-c`
  `parola-dosyası` oluşturur. Dosya mevcutsa, dosya silinip yeniden yazılır. Bu seçenek `-n` seçeneği ile birlikte kullanılamaz.
`-n`
  Sonuçları veritabanında güncellemek yerine standart çıktıya gönderir. `parola-dosyası` belirtilmediğinden, bu seçenek komut satırı sözdizimini değiştirir. Bu seçenek `-c` seçeneği ile birlikte kullanılamaz.
`-m`
  Parolalar için MD5 şifrelemesi kullanılır. Windows ve Netware için bu öntanımlıdır.
`-B`
  Parolalar için bcrypt şifrelemesi kullanılır. Şu an için çok güvenli kabul edilmektedir.
`-C bedel`
  Bu seçenek sadece `-B` (bcrypt şifrelemesi) seçeneği ile birlikte kullanılabilir. Bcrypt algoritmasına hesaplama süresini belirtir (daha yüksek değerler daha güvenlidir, öntanımlı 5, geçerli değerler: 4 - 31).
`-d`
  Parolaları şifrelemek için `crypt()` kullanılır. Windows, ve Netware dışında öntanımlıdır. `htdbm` tarafından tüm platformlarda destekleniyor olsa da Windows ve Netware üzerinde `httpd` sunucusu tarafından desteklenmez. Bu algoritma günümüz standartlarında güvenilmez kabul edilmektedir.
`-s`
  Parolalar için SHA şifrelemesi kullanılır. LDAP Dizin değişim biçemini (ldif) kullanarak Netscape sunucularına/sunucularından göçü kolaylaştırır. Bu algoritma günümüz standartlarında güvenilmez kabul edilmektedir.
`-p`
  Düz metin parolalar kullanılır. `htdbm` tarafından tüm platformlarda destekleniyor olsa da Windows, Netware ve TPF üzerinde `httpd` sunucusu tarafından sadece düz metin parolalar kabul edilir.
`-l`
  Veritabanındaki kullanıcıları açıklamalarıyla birlikte standart çıktıya gönderir.
`-v`
  Kullanıcı adını ve parolasını doğrular. Program belirtilen parolanın geçerli olup olmadığını belirten bir ileti basar. Eğer parola geçersizse program hata kodu 3 ile çıkar.
`-x`
  Kullanıcıyı siler. Kullanıcı belirtilen DBM dosyasında mevcutsa silinir.
`-t`
  Son değiştirgenin bir açıklama olarak yorumlanmasını sağlar. Bu seçenek kullanıldığında komut satırının sonuna fazladan bir dizge eklenebilir. Bu dizge, veritabanında belirtilen kullanıcının "Comment" alanında saklanır.
`parola-dosyası`
  DBM dosyasının ismi. Genellikle, `.db`, `.pag` veya `.dir` eklentisi olmaksızın belirtilir. `-c` seçeneği ile birlikte verilmişse ve DBM dosyası mevcut değilse dosya oluşturulur, mevcutsa dosya güncellenir.
`kullanıcı`
  `parola-dosyası`'nda oluşturulacak veya güncellenecek kullanıcı ismi. `kullanıcı` bu dosyada mevcut değilse yeni bir girdi eklenir. Girdi mevcutsa parolası değiştirilir.
`parola`
  Şifrelenip DBM dosyasında saklanacak düz metin parola. Sadece `-b` seçeneği ile kullanılır.
`-T VTtürü`
  DBM dosyasının türü; SDBM, GDBM, DB, veya "default" olabilir.

## Hatalar

Birden fazla DBM dosya biçemi vardır ve büyük bir olasılıkla da sisteminizde bu birden fazla biçemle ilgili kütüphaneler vardır. SDBM, NDBM, GNU'nun GDBM projesi ve Berkeley/Sleepycat DB 2/3/4 bunların başlıcalarıdır. Ne yazık ki, bu kütüphanelerin her birinin dosya biçimleri farklıdır. Bu bakımdan, `dosyaismi` dosyasında kullanılan dosya biçeminin `htdbm` tarafından kullanılanla aynı biçemde olduğundan emin olmalısınız. `htdbm` hangi tür DBM dosyasına baktığını saptayacak yeterliliğe sahip değildir. Yanlış biçemli bir dosya belirtirseniz hiçbir şey dönmeyebileceği gibi, başka isimde bir DBM dosyasının oluşturulması veya daha da kötüsü üzerine yazmaya çalışıyorsanız DBM dosyasının bozulması bile olasıdır.

Unix sistemlerinde, kullanılan DBM dosyasının biçemini öğrenmek için `file` programı kullanılabilir.

## Çıkış Durumu

`htdbm`, kullanıcı ismi ve parolasını DBM dosyasına başarıyla eklemiş veya güncellemişse `0`, dosyalara erişirken bir sorun çıkmışsa `1`, komut satırında bir sözdizimi hatası varsa `2`, parola etkileşimli alınmış fakat girdi ile eşleşme sağlanamamışsa `3`, işlem kesintiye uğramışsa `4`, bir değer çok uzunsa `5` (kullanıcı, parola, dosya ismi veya açıklama), kullanıcı ismi kuraldışı karakter içeriyorsa (Kısıtlamalar bölümüne bakınız) `6` ve dosya geçerli bir DBM parola dosyası değilse `7` değeriyle döner.

## Örnekler

`htdbm /usr/local/etc/apache/.htdbm-users jsmith`

`jsmith` kullanıcısı için parolayı ekler veya değiştirir. Parolayı vermesi için kullanıcıya parola isteği yapılır. Windows üzerinde çalıştırılırsa parola Apache MD5 algoritması ile şifrelenir, aksi takdirde sistemin `crypt()` yordamı kullanılır. Dosya mevcut değilse `htdbm` beklenen hiçbir işlemi yapmadan bir hata vererek çıkar.

`htdbm -c /home/doe/public_html/.htdbm jane`

Yeni bir dosya oluşturur ve kullanıcı `jane` için kaydı bir girdi olarak bu dosyaya yazar. Dosya mevcutsa fakat okunamıyor veya yazılamıyorsa dosyada bir değişiklik yapılmaz ve `htdbm` bir ileti gösterip bir hata durumu ile çıkar.

`htdbm -mb /usr/web/.htdbm-all jones Pwd4Steve`

Komut satırından verilen parolayı (`Pwd4Steve`) MD5 algoritmasıyla şifreler ve bunu belirtilen dosyada saklar.

## Güvenlik Değerlendirmeleri

`htdbm` tarafından yönetilen parola dosyalarına sunucunun URI uzayından erişilememelidir; yani dosya bir tarayıcı ile okunabilecek bir yerde bulunmamalıdır.

Komut satırında parolanın şifrelenmemiş olarak görünmesi sebebiyle `-b` seçeneğinin kullanımından kaçınılmasını öneriyoruz.

`crypt()` algoritması kullanılırken, parolayı şekillendirmek için parolanın ilk 8 baytının kullanılacağına dikkat ediniz. Eğer parola 8 bayttan uzunsa kalanlar bir uyarı verilmeksizin iptal edilir.

SHA şifreleme biçeminde tuz kullanılmaz; yani, bir parolanın sadece bir şifreli gösterimi olabilir. `crypt()` ve MD5 biçemleri parolanın önüne rasgele üretilmiş bir tuz dizgesi eklediklerinden sözlük saldırılarına karşı daha dayanıklıdır.

SHA ve `crypt()` biçimleri günümüz standartlarında güvenilmez kabul edilmektedir.

## Kısıtlamalar

Windows platformunda, `htdbm` ile şifrelenen parolalar `255` karakterden daha uzun olamaz. 255 karakterden sonrası kırpılır.

`htdbm` tarafından kullanılan MD5 algoritması Apache yazılımına özeldir; bu algoritma ile şifrelenen parolalar başka HTTP sunucularında kullanılamayabilir.

Kullanıcı isimleri `255` bayttan uzun olamaz ve iki nokta imi (`:`) içeremez.