sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #25728
Re: Apache sp��l
On Thu, 03 Aug 2000, you wrote:
> Anders M wrote:
> > Men hvordan kan man gøre sådan
> > er der på startsiden er et link, når man trykker på det kommer boksen op
> > med brugernavn og password og alt efter hvilket navn og password man
> > skriver kommer man ind på en forskellig side?
>
> RewriteEngine on
> RewriteRule ^$ /%{REMOTE_USER}/ [R]
>
> Hvis nu brugeren "bent" logger ind, vil han blive sendt til /bent/
Der er flere måder at lave autorisation på.
Det nemmeste er apaches basic authorification, som laves ved at lægge en
.htaccess fil i det bibliotek der skal beskyttes.
Det kan kombineres med ovenstående, som hører til i apache.conf.
Eksempel på .htaccess:
AuthUserFile /home/domain/public_html/beskyttet/.passwd
AuthGroupFile /home/domain/public_html/beskyttet/.group
AuthName Administration
AuthType Basic
<Limit GET POST>
require group users
</Limit>
Som det ses, kaldes også på en brugerfil, .group, og en passwordfil, .password
.group:
administrators: preben
users: bent, preben, trine
.password:
bent:po2vWSQrn3tDI
prebentaRtvfniDKJUw
trine:omiHZbuvYTXFw
gruppe- og password filerne bør faktisk ikke ligge i samme bibliotek, de
kunne f.eks med fordel gemmes _under_ offentligt område, dvs utilgængeligt
for webserveren.
Nedenstående script laver et password, som manuelt kan kopieres ind i
passwordfilen:
#!/usr/bin/perl -w
# create a password suitable for a .passwd file for httpd
use strict;
use CGI;
use Cwd;
use CGI::Carp qw/fatalsToBrowser/;
my $q = new CGI;
print $q->header, $q->start_html(-title=>'Password generator');
print "<h1>Kryptering af passwords til beskyttede mapper</h1>",
"<p>Indtast password ENS i begge felter og afsend. Det krypterede
password vises nedenfor og kan kopieres til den relevante password fil.";
print $q->startform,
$q->textfield(-name=>'p1'),
"<br>",
$q->textfield(-name=>'p2'),
"<br>",
$q->submit, $q->endform;
print "<hr>";
if ($q->param('p1') && ($q->param('p1') eq $q->param('p2'))) {
print crypt($q->param('p1'),$q->param('p1'));
} elsif ($q->param('p1')) {
print "<p>Du har ikke indtastet samme ord i de to felter - prøv
igen.";
} else {
print "Samme password skrives i begge felter, inden formen afsendes";
}
print "<hr>", "pwd: ", cwd(), $q->end_html;
En anden måde er at lave en form for CGI program, der henter/gemmer
brugernavn/password i en database, men så skal du til at programmere, det
bedste er perl eller evt php, sammen med mysql, som er stabil og noget
hurtigere end både postgresql og diverse kommercielle produkter.
-anders
Follow ups
References