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
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
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
#!/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
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
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.
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
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
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#
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
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
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