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.

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.