Дек 25 2008

Скрипт для замены htpasswd

Если вы пользуетесь webсервером отличным от Apache, у вас может возникнуть сложности с созданием файла паролей для авторизации. По крайней мере, я так и не смог найти альтернативу apacheвскому htpasswd. В портах конечно есть утилита makepasswd в /usr/ports/security/makepasswd, при указании ключа -crypt выдается пара из сгенерированного пароля и получившегося хеша пригодного для применения в файле паролей вебсервера. Выглядит это так:

makepasswd -crypt
fvXHtpi2   $1$Hl$nXxd85G5/x0ObQdGazuCw/


Но если вам не подходит случайный пароль, то и makepasswd не подходит. Немного покопавшись в интернете я написал на perl такой скрипт:

#!/usr/bin/perl -wl
use strict;
use Crypt::PasswdMD5 qw(unix_md5_crypt);
my @salt = ( '.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z' );
my $password = shift || die "usage: htpass.pl password";
my $encrypted = unix_md5_crypt( $password, gensalt(8) );
print "Crypted pass $password:$encrypted";
 
sub gensalt {
  my $count = shift;
  my $salt;
  for (1..$count) {
    $salt .= (@salt)[rand @salt];
    }
 
    return $salt;
}

Для своей работы он требует модуль Crypt::PasswdMD5, он есть в портах, его надо будет установить:

cd /usr/ports/security/p5-Crypt-PasswdMD5
make install clean

Пользоваться скриптом не сложно:

./htpass.pl qwerty

В командной строке передаем пароль на выходе получаем строку пригодную для использования в файле паролей вебсервера. У меня получилось такое:

Crypted pass qwerty:$1$4KUDHVxc$GSFOEdW6iCst..7XZJ6Zd0

В файле паролей укзывается пара имяпользователя:зашифрованный пароль. То есть для логина hilik с паролем qwerty строка будет выглядеть так:

hilik:$1$4KUDHVxc$GSFOEdW6iCst..7XZJ6Zd0

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть