Cliente "automágico" Linux logando no domínio NT/Samba
Buscamos, no presente artigo, realizar a configuração de clientes Linux em domínios gerenciados por servidores Windows ou PDC Samba. Trabalhamos com o processo de automatização das configurações necessárias aos clientes por meio da utilização de programação Shell Linux. Integramos os scripts necessários à configuração dos arquivos em uma interface modo texto de gerenciamento.
[ Hits: 38.838 ]
Por: lourival araujo da silva em 03/10/2008
Primeira exibição
A função que realiza a ligação do cliente ao servidor precisa configurar os arquivos já referidos do login (/etc/pam.d/login), da escolha da base de consulta (/etc/nsswitch.conf) e de configuração do samba no cliente (/etc/samba/smb.conf). Conforme observamos anteriormente. Além de utilizar o usuário root do domínio para incluir o cliente e consultar a base. Cabe ao administrador incluir no código funções de correção de erros.
#!/bin/bash
#PROGRAMA DE ATUALIZACAO DE SENHAS - SERVIDOR DE DOMINIO $HOSTNAME
#Programa ConSamba.sh liberado,em 20Set08, sob licensa GPL
#por LOURIVAL ARAUJO DA SILVA - 5º CTA - RECIFE - BRASIL
while true; do
clear
adiciona_usuario(){
echo -n "Digite o nome do usuario a ser incluido: "
read usuario
cadastro="$(grep -i $usuario /etc/passwd|cut -d: -f1)"
if [ -z "$cadastro" ];then
echo "Usuario $usuario nao existe."
echo -n "Digite o grupo do usuario: "
read grupo
GRP=$(grep $grupo /etc/group |cut -d: -f1)
if [ ! $GRP ];then
echo "O grupo $grupo nao existe."
sleep 2
continue
fi
sudo useradd -d /home/$usuario -s /bin/bash -g $grupo -m $usuario
sudo passwd $usuario
sleep 2
fi
echo -n "Deseja incluir outro usuario ? [sim/nao] "
read resp
while [ $resp = sim ];do
echo -n "Digite o nome do novo usuario: "
read nusuario
cadastro="$(grep -i $nusuario /etc/passwd|cut -d: -f1)"
if [ -z "$cadastro" ];then
echo "Usuario $nusuario nao existe."
echo -n "Digite o grupo do novo usuario: "
read ngrupo
GRP=$(grep $ngrupo /etc/group |cut -d: -f1)
if [ ! $GRP ];then
echo "O grupo $ngrupo nao existe."
sleep 2
continue
fi
sudo useradd -d /home/$nusuario -s /bin/bash -m -g $ngrupo $nusuario
sudo passwd $nusuario
sleep 2
fi
echo -n "Deseja incluir outro usuario ? [sim/nao] "
read resp
if [ $resp = nao ]; then
echo "Adicao de usuario concluida."
fi
break
done
;;
}
bloqueia_usuario(){
echo -n "Digite o nome do usuario a ser bloqueado: "
read usuario
cadastro="$(grep -i $usuario /etc/passwd|cut -d: -f1)"
if [ -z "$cadastro" ];then
echo "Usuario $usuario nao existe."
sleep 2
continue
else
sudo passwd -l $usuario
echo "Usuario $usuario bloqueado."
sleep 2
continue
fi
}
desbloqueia_usuario(){
echo -n "Digite o nome do usuario a ser desbloqueado: "
read usuario
cadastro="$(grep -i $usuario /etc/passwd|cut -d: -f1)"
if [ -z "$cadastro" ];then
echo "Usuario $usuario nao existe."
sleep 2
continue
else
sudo passwd -u $usuario
echo "Usuario $usuario desbloqueado."
sleep 2
continue
fi
}
atualiza_senha(){
echo "Atualizacao de senha."
echo -n "Digite o nome do usuario: "
read usuario
cadastro="$(grep -i $usuario /etc/passwd|cut -d: -f1)"
if [ -z "$cadastro" ];then
echo "Usuario $usuario nao existe."
sleep 2
continue
else
sudo passwd $usuario
echo "Senha do usuario $usuario atualizada."
sleep 2
continue
fi
}
exclui_usuario(){
echo -n "Digite o nome do usuario a ser excluido: "
read usuario
cadastro="$(grep -i $usuario /etc/passwd|cut -d: -f1)"
if [ -z "$cadastro" ];then
echo "Usuario $usuario nao existe."
sleep 2
continue
else
sudo userdel -r $usuario
echo "Senha do usuario $usuario atualizada."
sleep 2
continue
fi
}
inclui_dominio(){
echo -n "Digite um nome do Dominio: "
read dominio
echo -n "Digite o nome do Servidor de Domínio: "
read servidor
echo -n "Digite o nome da Maquina a ser incluida no Dominio: "
read maquina
echo -n "Digite a conta do Administrador de Domínio (admin): "
read admin
echo "
[globals]
workgroup = $dominio
netbios name = $maquina
security = domain
encrypt passwords = yes
os level = 10
log file = /var/log/samba/log.%m
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
hosts allow = 127.0.0.0/8 $rede
obey pam restrictions = Yes
smb passwd file = /etc/samba/smbpasswd
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
[home]
comment = Directorio Pessoal
create mask = 0700
directory mask = 0700
browseable = No
[printers]
path = /tmp
browseable = No
comment = Impressoras de Rede
guest ok = No
read only = No
print ok = Yes" >>/tmp/smb.conf
sudo cp /etc/samba/smb.conf /tmp/smb.conf.old
sudo mv /tmp/smb.conf /etc/samba/smb.conf
sudo echo " ">/tmp/login
sudo echo "
#PAM - 1.0
# Arquivo gerado pelo script ConSamba.sh Versao 0.3.5 - Setembro 2008 - $(date +%H:%M:%S-%d/%m/%Y)
#/etc/pam.d/login
auth requisite pam_securetty.so
auth requisite pam_nologin.so
auth required pam_unix.so
auth required pam_cracklib.so
auth sufficient pam_winbind.so use_first_pass
auth optional pam_mount.so
account required pam_unix.so
account sufficient pam_winbind.so use_first_pass
session optional pam_mount.so
session optional pam_mkhomedir.so skel=/etc/skel umask=0022
session required pam_limits.so
session optional pam_motd.so
password required pam_unix.so
password sufficient pam_winbind.so use_first_pass" >>/tmp/login
sudo cp /etc/pam.d/login /tmp/login.old
sudo mv /tmp/login /etc/pam.d/login
sudo echo " ">/tmp/kdm
sudo echo "
#PAM - 1.0
# Arquivo gerado pelo script ConSamba.sh Versao 0.3.5 - Setembro 2008 - $(date +%H:%M:%S-%d/%m/%Y)
#/etc/pam.d/kdm
auth requisite pam_nologin.so
auth required pam_unix.so
auth required pam_cracklib.so
auth sufficient pam_winbind.so use_first_pass
auth optional pam_mount.so
account required pam_unix.so
account sufficient pam_winbind.so use_first_pass
session optional pam_mount.so
session optional pam_mkhomedir.so skel=/etc/skel umask=0022
session required pam_limits.so
session optional pam_motd.so
password required pam_unix.so
password sufficient pam_winbind.so use_first_pass" >>/tmp/kdm
cp /etc/pam.d/kdm /tmp/kdm.old
sudo mv /tmp/kdm /etc/pam.d/kdm
sudo echo " ">/tmp/nsswitch.conf
sudo echo "
# Arquivo gerado pelo script ConSamba.sh Versao 0.3.5 - Setembro 2008 - $(date +%H:%M:%S-%d/%m/%Y)
#/etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis" >>/tmp/nsswitch.conf
sudo cp /etc/nsswitch.conf /tmp/nsswitch.conf.old
sudo mv /tmp/nsswitch.conf /etc/nsswitch.conf
apt-get install libpam-modules libpam-mount libpam-cracklib winbind
net rpc join -W $dominio -S $servidor -U $admin 2>>/tmp/errodominio
wbinfo -u 2>>/tmp/errodominio
wbinfo -g 2>>/tmp/errodominio
getent passwd 2>>/tmp/errorusiarios
getent group 2>>/tmp/errousuarios
sleep 2
continue
}
sair(){
clear
exit 0
}
valor_errado(){
clear
tput cup 27 6;echo "Valor invalido. Digite um valor entre 1 e 7. "
sleep 2
continue
}
tput cup 10 6;echo "
====================================================
CADASTRO DE USUARIOS - CLIENTE PDC SAMBA/NT
VERSAO 0.2.0 - SET 2008
====================================================
CLIENTE DE DOMINIO $HOSTNAME
====================================================
1) Adicionar usuario local
2) Bloquear usuario local
3) Desbloquear usuario local
4) Atualizar senha local
5) Excluir usuario local
6) Incluir a maquina no DOMINIO
7) Sair
==================================================== "
tput cup 25 6; echo -n "Digite sua opcao [1-7]: "
read opcao
case $opcao in
1) adiciona_usuario
;;
2) bloqueia_usuario
;;
3) desbloqueia_usuario
;;
4) atualiza_senha
;;
5) exclui_usuario
;;
6) inclui_dominio
;;
7) sair
;;
*) valor_errado
;;
esac
done
Copie o
código do programa e salve sob a forma de arquivo sem formatação, utilize o vim ou o kwrite. Dê permissão de execução e execute o programa.
# vim cadastro_vol.sh
# chmod +x cadastro_vol.sh
# ./cadastro_vol.sh
Página anterior Próxima página
Páginas do artigo
1.
Criando coragem!
2.
Ajustando arquivos
3.
Entrando no Samba
4.
Organizando a casa
5. Primeira exibição
6.
Leia os logs
Outros artigos deste autor
webCalendar: a agenda e o PAM
Mudança de hábito: autenticando usuários em base de dados MySQL
Servidor Samba "Autoservice"
Configuração "automágica" de servidor Linux PDC Samba
Bom escudo não teme espada: o módulo pam_cracklib
Leitura recomendada
Malware, Vírus e Hacking. Estamos seguros usando Linux?
Snort + BarnYard2 + Snorby no Slackware 14.1
Netcat - O canivete suíco do TCP/IP
Um dia depois da inundação
Segurança em redes wireless
Comentários
Valeu Xara
Agradecemos sugestões.
Abaços,
araujo_silva
Mensagem
Valeu Xara
Agradecemos sugestões.
Abaços,
araujo_silva
Contribuir com comentário
Enviar