Apache HTTP Sunucusu Sürüm 2.4

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

# htpasswd - Temel kimlik doğrulama dosyalarını yönetir

`htpasswd`, HTTP kullanıcılarının temel kimlik doğrulaması için kullanıcı isimlerinin ve parolalarının saklanmasında kullanılacak düz metin dosyalarını oluşturmak ve güncellemek için kullanılır. `htpasswd`, güncelleme sırasında yazmak veya okumak için bir dosyaya erişemezse beklenen hiçbir işlemi yapmaz ve hata vererek çıkar.

Apache HTTP sunucusunun mevcut özkaynaklarının kullanımı sadece `htpasswd` tarafından oluşturulan dosyalarda listelenmiş kullanıcılara tahsis edilebilir. `htpasswd` sadece düz metin dosyalarda saklanmış kullanıcı isimlerini ve parolalarını yönetirse de, diğer veri saklama türleri için parolayı şifreleyip gösterebilir. Bir DBM veritabanı kullanmak isterseniz `dbmmanage` ve `htdbm` sayfasına bakınız.

`htpasswd`, parolaları şifrelemek için bcrypt, Apache'nin kendine özgü MD5 algoritması, SHA1 ya da sistemin `crypt()` yordamını kullanır. Bu bakımdan `htpasswd` tarafından yönetilen dosyalar farklı algoritmalarla şifrelenmiş parolalar içerebilir.

Bu kılavuz sayfası sadece komut satırı değiştirgelerini listeler. Kullanıcı kimlik doğrulamasını `httpd`'de yapılandırmak için gerekli yönergelerle ilgili ayrıntılar için Apache dağıtımının bir parçası olan ve http://httpd.apache.org/ adresinde de bulunan Apache HTTP Sunucusu Belgelerine bakınız.

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

- `httpd`
- `htdbm`
- Kaynak paketinin support/SHA1 dizinindeki betikler.

## Kullanım

`htpasswd [ -c ] [ -i ] [ -m | -B | -d | -s | -p ] [ -C bedel ] [ -D ] [ -v ] parola-dosyası kullanıcı`

`htpasswd -b [ -c ] [ -m | -B | -d | -s | -p ] [ -C bedel ] [ -D ] [ -v ] parola-dosyası kullanıcı parola`

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

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

## 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. 2.4.4 ve sonraki sürümler içindir.
`-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. Bu seçenek, Apache'nin metin veriler içermeyen veri depolarına dahil edilebilecek parolaları üretmekte yararlıdır. `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. Bu 2.2.18 sürümünden beri ö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. `htpasswd` tarafından tüm platformlarda destekleniyor olsa da Windows, Netware ve TPF üzerinde `httpd` sunucusu tarafından desteklenmez. Bu algoritma günümüz standartlarında güvenilmez kabul edilmektedir. 2.2.17 sürümüne kadar öntanımlı algoritma olarak kullanılmıştı.
`-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. `htpasswd` tarafından tüm platformlarda destekleniyor olsa da Windows, Netware ve TPF üzerinde `httpd` sunucusu tarafından sadece düz metin parolalar kabul edilir.
`-D`
  Kullanıcıyı siler. Kullanıcı belirtilen dosyada mevcutsa silinir.
`-v`
  Parolayı doğrular. Verilen parolayı belitilen htpasswd dosyasında saklanan kullanıcı parolası ile karşılaştırarak doğrulama yapar. 2.4.5 ve sonraki sürümler içindir.
`parola-dosyası`
  Kullanıcı ismini ve parolasını içeren dosyanın ismi. `-c` seçeneği verilmişse ve dosya mevcut değilse oluşturulur, dosya mevcutsa silinip yeniden oluşturulur.
`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 dosyada saklanacak düz metin parola. Sadece `-b` seçeneği ile kullanılır.

## Çıkış Durumu

`htpasswd`, 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

`htpasswd /usr/local/etc/apache/.htpasswd-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. Parola takviyeli Apache MD5 algoritması ile şifrelenir. Dosya mevcut değilse `htpasswd` beklenen hiçbir işlemi yapmadan bir hata vererek çıkar.

`htpasswd -c /home/doe/public_html/.htpasswd 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 `htpasswd` bir ileti gösterip bir hata durumu ile çıkar.

`htpasswd -db /usr/web/.htpasswd-all jones Pwd4Steve`

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

## Güvenlik Değerlendirmeleri

`htpasswd` 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.

Bu program bir setuid çalıştırılabiliri olarak güvenilir olmadığından setuid yapılmamalı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ırlar.

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

## Kısıtlamalar

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

`htpasswd` 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.