sexta-feira, 9 de julho de 2010

Troca de senha de múltiplos Usuários com SAMBA e shell script e teste com SMBCLIENT

Como no exemplo anterior a lista de usuarios saem de uma  tabela Mysql , onde tenho os logins e senhas. A partir dela gero um arquivo csv (userstrocasenha.txt) e um script em shell p/ fazer a tarefa (troca_senha.sh) como descrito abaixo : 

Exemplo feito em 

Linux pdc-sp 2.6.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686 GNU/Linux

Samba : 
pdc-sp:~/scripts# smbd -V
Version 3.0.24
 

OBS 1: Para aumentar a segurança do sistema os existem usuários locais do linux p/ os Homedirs que nao não podem logar na máquina e em qq outro serviço exceto o Samba que funciona como PDC. 


O arquivo de senhas do SAMBA fica em /etc/samba/smbpasswd.db
 
O texto q estiver dessa maneira é o q foi digitado : 
Exemplo para a  Autenticação no SAMBA
pdc-sp:~/scripts# cat troca_senha.sh
#!/bin/sh
# modelo do arquivo user;senha
FILEIMPORT="userstrocasenha.txt"
for x in `cat $FILEIMPORT`;
do

usuario=$(echo $x | cut -d ";" -f 1)
senha=$(echo $x | cut -d ";" -f 2)
#usuario=$1
#senha=$2
#echo $usuario
echo "trocando a senha do usuario:$usuario"
#echo $senha
#(echo $senha;  echo $senha) |  smbpasswd -e $usuario -s
echo -e "$senha\n$senha" | (smbpasswd -a -s $usuario)
done

Antes de rodar o script , se quiser criar usuarios p/ testar o script , utilizo o seguinte script p/ criar usuários:

pdc-sp:~/scripts# cat adu.sh
#!/bin/sh
#script p/ adicionar usuyarios ao samba e ao linux
# Author Mario Cezzare mcezzare@gmail.com
if [ -n "$1" ]
then
usuario="$1"
#senha=$2
#echo $usuario
#echo $senha

#STEP 1
#create user at linux system with no login
/usr/sbin/useradd -m  -s /bin/false -c ntuser -G ntusers $usuario

#STEP 2
#locka a senha
passwd -l $usuario


#STEP 3
#add smb user
smbpasswd -a $usuario

#STEP 4
echo -e "$senha\n$senha" | (smbpasswd -e -s $usuario)
else
echo "Informe o Usuario"
fi


p/ ter certeza de que não existirá esse usuario 
pdc-sp:~/scripts# smbpasswd -x usertest1
Deleted user usertest1.
pdc-sp:~/scripts# userdel -r usertest1
 
Vamos criar o usuário usertest1
pdc-sp:~/scripts# sh adu.sh usertest1
Senha modificada.
New SMB password:x
Retype new SMB password:
x
Added user usertest1.
Enabled user usertest1.

Vamos testar o acesso com a senha errada 
pdc-sp:~/scripts# smbclient  -L \\localhost -U usertest1
Password: qqqq
session setup failed: NT_STATUS_LOGON_FAILURE

Vamos testar o acesso com a senha correta




pdc-sp:~/scripts# smbclient  -L \\localhost -U usertest1
Password: x
Domain=[PDCSERVER-SP] OS=[Unix] Server=[Samba 3.0.24]

    Sharename       Type      Comment
    ---------       ----      -------
    IPC$            IPC       IPC Service (pdc-sp server)
    usertest1       Disk      Home Directories
Domain=[PDCSERVER-SP] OS=[Unix] Server=[Samba 3.0.24]

    Server               Comment
    ---------            -------
    PDCSERVER-PDC-SP       pdc-sp server

    Workgroup            Master
    ---------            -------
    PDCSERVER-SP           PDCSERVER-D8DBD85


vamos trocar a senha desse usuário : 

pdc-sp:~/scripts# sh troca_senha.sh
trocando a senha do usuario:usertest1



vamos testar com senha antiga (x)

pdc-sp:~/scripts# smbclient  -L \\localhost -U usertest1
Password:x
session setup failed: NT_STATUS_LOGON_FAILURE
pdc-sp:~/scripts# 




Vamos testar o acesso com a senha alterada pelo script (xxx)

pdc-sp:~/scripts# smbclient  -L \\localhost -U usertest1
Password: xxx
Domain=[PDCSERVER-SP] OS=[Unix] Server=[Samba 3.0.24]

    Sharename       Type      Comment
    ---------       ----      -------
    IPC$            IPC       IPC Service (pdc-sp server)
    usertest1       Disk      Home Directories
Domain=[PDCSERVER-SP] OS=[Unix] Server=[Samba 3.0.24]

    Server               Comment
    ---------            -------
    PDCSERVER-PDC-SP       pdc-sp server

    Workgroup            Master
    ---------            -------
    PDCSERVER-SP           PDCSERVER-D8DBD85

vamos remover esses usuario de teste 

pdc-sp:~/scripts# smbpasswd -x usertest1
Deleted user usertest1.
pdc-sp:~/scripts# userdel -r usertest1


Essa é uma maneira rápida e simples de trocar as senhas quando o método de Autenticação é o próprio SAMBA , e os logins e senhas ficam nos arquivos /etc/samba/smbpasswd.db , que são gerenciados pelo programa smbpasswd. 


Depois desses scripts o proximo post pode ser a instação de um LDAP neh , rs .. 
[]'s

Nenhum comentário: