[FUGSPBR] Troca de senha
Clebson Derivan
clebson em brfree.com.br
Qui Jun 28 22:30:17 BRT 2001
olha ja tinha enviado pra lista. em todo caso tai denovo.
[]'s
Clebson Derivan
> ----- Original Message -----
> From: "Roberto Salgado - LDP-Br" <roberto-ldp-br em linuxbr.com.br>
> To: <fugspbr em fugspbr.org>
> Sent: Thursday, June 28, 2001 9:20 PM
> Subject: Re: [FUGSPBR] Troca de senha
>
>
> > Oi Clebson tudo bom ?
> > vc poderia mandar esse cgi pra mim ?
> > ficaria te devendo um favorzaum ...
> > : )
> > ----- Original Message -----
> > From: "Clebson Derivan" <clebson em brfree.com.br>
> > To: <fugspbr em fugspbr.org>
> > Sent: Tuesday, June 26, 2001 8:16 PM
> > Subject: Re: [FUGSPBR] Troca de senha
> >
> >
> > tenho um pronto em perl. vc s vai ter que alterar pq ta com logo da
> > empresa. interessa ??
> >
> > ----- Original Message -----
> > From: "Thiago Pinto Damas" <thiago em vetorialnet.com.br>
> > To: <fugspbr em fugspbr.org>
> > Sent: Tuesday, June 26, 2001 8:04 PM
> > Subject: [FUGSPBR] Troca de senha
> >
> >
> > > Alguem sabe algum lugar aonda ja tenha pronto um cgi para troca de
> > > senha no free?
> > > []'s
> > >
> > > Thiago Pinto Damas - SysAdmin
> > > ----------------------------------------------------------------
> > > http://www.vetorialnet.com.br http://www.ecomp.furg.br
> > > thiago em vetorialnet.com.br thiago em ecomp.furg.br
> > >
> > > ----
> > > Para sair da lista envie um e-mail para majordomo em fugspbr.org
> > > com as palavras "unsubscribe fugspbr" no corpo da mensagem.
> > >
> >
> > ----
> > Para sair da lista envie um e-mail para majordomo em fugspbr.org
> > com as palavras "unsubscribe fugspbr" no corpo da mensagem.
> >
> >
> > ----
> > Para sair da lista envie um e-mail para majordomo em fugspbr.org
> > com as palavras "unsubscribe fugspbr" no corpo da mensagem.
> >
>
----------------------------------------------------------------------------
----
> #!/usr/bin/perl
> # Troca de senha via web.
> # by Clebson Derivan clebson em grupora.com,br
>
>
> $ENV{PATH} = '/bin:/usr/bin';
> $ENV{IFS} = '';
>
> $| = 1;
>
> use CGI qw/:standard :html3/;
>
> print header,
> start_html(-title=>'Grupo R.A. - Senha de
e-mail',-bgColor=>'#cccccc'),
>
> import_names('Q');
>
> TRY: {
> last TRY unless $Q::user;
> my ($rv,$msg) = valida_campos();
> do_error($msg),last TRY unless $rv;
>
>
> ($rv,$msg) = troca_senha($Q::user,$Q::old,$Q::new1);
> do_error($msg),last TRY unless $rv;
>
>
> print $msg;
> $OK++;
> }
>
>
> cria_tela() unless $OK;
> end_html;
>
>
> sub valida_campos {
> return (undef,'Preencha o campo user name.') unless $Q::user;
> return (undef,'Preencha o campo senha atual.') unless $Q::old;
> return (undef,'Prencha os campos para nova senha.') unless $Q::new1 &&
$Q::new2;
> return (undef,"A nova senha e a senha confirmada não coincidem.
digiti-as novamente.") unless $Q::new1 eq $Q::new2;
> # return (undef,"User name suspeito $Q::user.") unless
$Q::user=~/^\w{3,8}$/;
> return (undef,'Senha atual suspeita.') unless length($Q::old) < 30;
> return (undef,'Nova senha suspeita.') unless length($Q::new1) < 30;
> my $uid = (getpwnam($Q::user))[2];
> return (undef,"Usuario desconhecido $Q::user.") if $uid eq '';
> return (undef,"Impossivel mudar a senha do root via web.") if $uid ==
0;
> return 1;
> }
>
>
> sub troca_senha ($$$) {
> use Expect;
>
> $Expect::Log_Stdout = 0;
> # $Expect::Debug = 1;
> # $Expect::Exp_Internal = 1;
>
> my $TIMEOUT = 2;
> my $DELAY = 1;
> my $PASSWD = "/usr/bin/passwd";
> my $SU = '/bin/su';
>
> my($user,$old,$new) = @_;
>
> # essa linha muda de acordo com o sitemas operacional
> my $passwd = Expect->spawn("$SU $user -c \"$PASSWD $user\"") || return
(undef,"Impossivel executar $SU $user -c $PASSWD");
>
> my $rv = $passwd->expect($TIMEOUT,
> "Password:",
> "Sorry",
> "Unknown id: $user");
> $rv || return (undef,"Senha atual incorreta.");
> $rv == 2 && return (undef,"Senha atual incorreta.");
> $rv == 3 && return (undef,"Usuario $user desconhecido.");
>
> sleep($DELAY);
> print $passwd "$old\r";
>
> $rv = $passwd->expect($TIMEOUT,
> "Changing password for $user\r\n(current) UNIX password:","Sorry");
> $rv == 2 && return (undef,"Senha atual incorreta.");
>
> sleep($DELAY);
> print $passwd "$old\r";
>
> $rv = $passwd->expect($TIMEOUT, "Enter new UNIX password:", "Sorry.");
> $rv || return (undef,"interno: 0001, contate o administrador de
rede.");
> $rv == 2 && return (undef,"Senha atual incorreta.");
>
> sleep($DELAY);
> print $passwd "$new\r";
>
> $rv = $passwd->expect($TIMEOUT, "Retype new UNIX password:");
> $rv || return (undef,"interno: 0002, contate o administrador de
rede.");
>
> sleep($DELAY);
> print $passwd "$new\r";
>
> $rv = $passwd->expect($TIMEOUT, "passwd: password updated
successfully",
> "Bad: new and old password are too similar",
> "Bad: new password is too short",
> "Bad: new password is too simple");
>
> $rv || return (undef,"interno: 0003, contate o administrador de
rede.");
> $rv == 2 && return (undef,"A nova e a senha anterior são muito
parecidas.");
> $rv == 3 && return (undef,"A nova senha é muito pequena.");
> $rv == 4 && return (undef,"A nova senha é muito simples.");
>
> $passwd->hard_close();
> return (1,"Senha trocada com sucesso para o usuario: $Q::user.");
> }
>
>
> sub cria_tela {
> print
>
table({-height=>'100%',-width=>'100%',-cellSpacing=>0,-cellPadding=>0,-borde
r=>0,-valign=>'center'},
> TR({-align=>'center'},
> td({-aling=>'middle'},
>
table({-border=>3,-width=>'470',-bqColor=>'white',-cellSpacing=>0,-cellPaddi
ng=>0},
> TR(
> td({-bgColor=>'white'},
> table({-border=>0,-bqColor=>'white',-cellSpacing=>0,-cellP
adding=>5},
> TR(
> td({-align=>'left',-bgColor=>'#11375e',-colSpan=>2},
> font({-face=>'helvetica,arial',-color=>'white',-size=>'+1'},'Senha de
e-mail')),
> ),
> TR(
> td(img {src=>'/ralogo.gif',width=>180}),
> td({-vAlign=>'top'},
> font({-face=>'helvetica,arial', -size=>'1'}, 'Caro Usuário,<br>A
Senha para o e-mail deve ter 8 dígitos<br>Não utilize senhas fáceis, pois
isso pode comprometer sua privacidade. Não divulgue sua senha a
terceiros.'),
> table({-border=>0,-bgColor=>'white'},
> start_form,
> TR(
> TR(
> TR(
>
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Nome
Usuário')),
> td({-bqColor=>'white'},textfield(-name=>'user'))
> ),
> TR(
>
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Senha
atual')),
> td({-bqColor=>'white'},password_field(-name=>'old'))
> ),
> TR(
>
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Nova
Senha')),
> td({-bqColor=>'white'},password_field(-name=>'new1'))
> ),
> TR(
>
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Confirme
nova senha')),
> td({-bqColor=>'white'},password_field(-name=>'new2'))
> ),
> hidden(-name=>'referer',-value=>referer()),
>
TR(td({-align=>'LEFT',-COLSPAN=>2, -ALIGN=>'RIGHT',-BGCOLOR=>'white'},font({
-face=>'helvetica,arial'}, submit('Trocar')))),
>
> end_form,
>
> ),
> ),
> ),
> ),
> ),
> ),
> ),
> ),
> ),
> ),
> ),
> ),
> }
>
> sub do_error ($) {
> print "<CENTER><FONT COLOR='red' SIZE='+1' face='helvetica,arial'>";
> print b('Error: '),shift," A senha não foi modificada.";
> print "</FONT></CENTER>";
> }
>
>
>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: passwd.cgi
Tipo: application/octet-stream
Tamanho: 5858 bytes
Descrição: não disponível
URL: <http://www.fug.com.br/pipermail/freebsd/attachments/20010628/7c1faaa6/attachment.obj>
Mais detalhes sobre a lista de discussão freebsd