Скрипт для замены 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 |