Alterar senha no shadow

Publicado por Fábio Berbert de Paula 27/02/2003

[ Hits: 15.257 ]

Homepage: https://fabio.automatizando.dev

Download change_passwd.pl




Script em Perl que recebe como argumentos o nome de usuário e senha, criptografa a senha e a grava no arquivo /etc/shadow. Funciona como o comando 'passwd'.

  



Esconder código-fonte

#!/usr/bin/perl

my $login = shift;
my $senha = shift;
if (!$login || !$senha) {
  print "Informe login/senha !\nUse $0 login senha\n\n";
  exit;
}

my $passwd = "/etc/shadow";
my $saida = `grep $login $passwd`;
if ($saida !~ /[A-Z]/i) {
  print "Usuário inexistente !\n";
  exit;
}

my $shadow = "";
open(R,$passwd);
while (<R>) {
  if ( $_ =~ /^$login:/ ) {
    my ($user,$pass,$resto) = split(/:/,$saida,3);
    my $newpass = crypt($senha,substr $user,0,2);
    print "crypt($senha," . substr $user,0,2 . ")\n";
    $shadow .= $user . ':' . $newpass . ':' . $resto;
  } else {
    $shadow .= $_;
  }
} # fim while
close(R);

open(W,"> $passwd");
print W $shadow;
close(W);

Scripts recomendados

Script que procura uma palavra em um arquivo.

Processa todos os SlackBuild's

Compilar e mover

Manipulação de Arquivos Orientada a Objetos

getter


  

Comentários
[1] Comentário enviado por carcarah em 07/07/2004 - 14:18h

Como fazer para a função crypt() suportar mais de 8 caracteres na senha? Pergunto isso pois tentei implementá-la em um código e percebi que ela não permite que o campo senha possua mais de 8 caracteres...

[2] Comentário enviado por h4sh em 28/07/2004 - 17:24h

Fabio;

Me inspirei no seu script e fiz uma versao adaptada a um cliente :)

http://www.vivaolinux.com.br/contribuir/scripts/verFonte.php?codigo=534&arquivo=altera_tudo.pl

Diga o que achou !
flw

[3] Comentário enviado por maucos em 11/11/2005 - 23:27h

Adaptei seu script para alterar a senha de usuários do squid via cgi, mas quando vai abrir o arquivo passwd para gravação "Permission Denied ! ".
Já até dei chmod 755 passwd, mas mesmo assim nada.
O que pode ser?

[4] Comentário enviado por lecovl em 30/05/2006 - 02:36h

Bom, fiz alguns testes com o script e a priori funcionou.
Só tem um BUG: quando ele encontra um usuário que tem parte o nome do usuário a ser localizado ele retorna este último também e vai adicionando o usuário a +

Ex:
1 linha : userteste:[AQUIASENHA]:(...)
x linha : usertestenovo:[AQUIASENHA]:(...)

SOLUÇÃO:
Na linha [[ my $saida = `grep $login $passwd`; ]] coloca dois pontos (:) após a variável $login. A linha fica assim :
[[ my $saida = `grep $login: $passwd`; ]]

[5] Comentário enviado por mendonca em 09/04/2008 - 09:27h

hello,
estou tentado alterar o previlegio de alguns usuarios apartir do shadow e
nao tenho sucesso "cd: shadow: Not a directory"

[6] Comentário enviado por felipezs em 19/06/2008 - 11:21h

na verdade o shadow é um arquivo texto, nao um diretório....
se nao me engano, fica no /etc

[7] Comentário enviado por demattos em 25/05/2010 - 08:18h

bom dia, gostei muito do script e era o que eu estava procurando , mas fiquei com um duvida em questao de seguranca, por que tive q trocar a permisao do arquivo shadow para ele alterar a senha, alguem poderia me dizer algo q possa ser feito ser esta alteracao

[8] Comentário enviado por shulander em 09/12/2011 - 18:44h

Daria pra mim deixar esse script com o root, dar chmod 777 nele e apartir de qlqr usuario adicionar outros usuarios com permição root apartir dele? Usar como uma falha na segurança ....


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts