Servidor Samba "Autoservice"

Buscamos, no presente arquivo, apresentar um programa em linguagem shell script e interface em modo texto destinado a configurar um Servidor de Domínio Samba. Utilizamos os módulos do PAM para implementar uma política de acesso e exportação de compartilhamentos.

[ Hits: 32.772 ]

Por: lourival araujo da silva em 04/12/2008


Criando o perfil pdc



Algumas observações sobre a construção dos perfis podem ser feitas a partir da análise do bloco de código que implementa a função pdc:

pdc( ){
tput cup 0 19;
trap ' ' 2 3 15;
tput cup 10 12;echo "
      ####################################################################
      PROGRAMA DE CONFIGURAÇÃO DE SERVIDOR DE DOMÍNIO LINUX - Versão 0.3.7
               Autor: LOURIVAL ARAÚJO DA SILVA - 5º  CTA - RECIFE - PE
          Liberado sob GPL em 02 de novembro de 2008
      ####################################################################

      1 -  Criar o DOMÍNIO (PDC Samba)
      2 -  Criar Grupos no Servidor de Domínio
      3 -  Incluir usuário nos Grupos do Domínio
      4 -  Excluir usuário do Domínio
      5 -  Bloquear senha de usuário do Domínio
      6 -  Desbloquear senha de Usuário do Domínio
      7 -  Adicionar maquina ao Domínio
      8 -  Excluir maquina do Domínio
      9 -  Sair do programa de configuração

      ####################################################################
      ####################################################################

"
echo -n "      Digite a opção de configuração desejada: "
read opcao
   case $opcao in
   1) cria_dominio
;;
   2) cria_grupo
;;
   3) inclui_usuario
;;
   4) exclui_usuario
;;
   5) bloqueia_usuario
;;
   6) desbloqueia_usuario
;;
   7) adiciona_maquina
;;
  
   8) exclui_maquina
;;
  
   9)  clear;
       continue;
;;
   *) valor_invalido;
;;
   esac
}

As funções de adição, exclusão e bloqueio de usuários formam o núcleo comum aos diversos perfis, enquanto a função de criação de domínio constitui o diferencial, pois implementa as configurações de compartilhamento necessárias ao Servidor de Domínio no arquivo smb.conf. E cria os diretórios necessários ao funcionamento do PDC (netlogon e profile).

A função que cria o domínio será compartilhada pelos perfis pdc e cds. E a função valor_invalido será compartilhada por todos os perfis, com a seguinte estrutura:

valor_invalido(){
   clear
   tput cup 17 18;echo "Valor inadequado. Digite um valor valido. "
   sleep 2
   continue
}

Incluímos na função cria_dominio, que especifica as condições de funcionamento do Servidor considerado, o controle de origem e de horário de acesso, a fim de deixar o programa em conformidade as práticas de segurança recomendadas pelas normas de referência:

cria_dominio(){
   echo -n "Digite um nome de Domínio: " # criar o domínio de logon
   read dominio
   echo -n "Digite o nome do Servidor: "
   read servidor
   echo -n "Digite o nome da conta do Administrador do Servidor Samba (root): "
   read admin
   echo -n "Digite a Rede do Servidor (192.168.0.0/16): "
   read rede
   sudo smbpasswd -a $admin
      
   echo "
[globals]

workgroup = $dominio
netbios name = $servidor
domain master = yes
logon script = netlogon.bat
logon home = \\%U\.profiles
logon path = \\%L\profiles\%U
logon drive = j:

security = user
encrypt passwords = yes
os level = 100

log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
hosts allow = 127.0.0.0/8  $rede  # Origem dos acessos autorizados

obey pam restrictions = Yes
smb passwd file = /etc/samba/smbpasswd
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .

winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
template homedir = /home/%U
template shell = /bin/bash

[netlogon]
comment = Serviço de logon
path = /var/samba/netlogon
guest ok = yes
browseable = no

[profiles]
path = /var/samba/profile
writable = yes
browseable = no
create mask = 0600
directory mask = 0700

[home]
path = /home
browseable = no" >>/tmp/smb.conf

   sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old
   sudo mv /tmp/smb.conf /etc/samba/smb.conf

   sudo mkdir -p /var/profiles
   sudo chmod 1777 /var/profiles
   sudo mkdir -p /var/samba/netlogon
   sudo chmod 775 /var/samba/netlogon
      
   echo "Configurando o horário de acesso ao Servidor..."
   echo "
login;*;*;Wd0800-1800 & !SaSu0000-2359
ssh;*;*;Wd0800-1800 & !SaSu0000-2359
">/tmp/time.conf
   sudo cat /tmp/time.conf >>/etc/security/time.conf
}

Apenas por uma questão de aproveitamento de código, mantivemos as linhas relacionadas ao winbind, que são necessárias somente ao perfil cld, que incorpora as funções de Cliente de Domínio.

Página anterior     Próxima página

Páginas do artigo
   1. Traçando rotas
   2. Gerenciando perfis
   3. Criando o perfil pdc
   4. Verificando o perfil srv
   5. Analisando o perfil cds
   6. Exportando recursos
Outros artigos deste autor

Bom escudo não teme espada: o módulo pam_cracklib

Autenticação via hardware: o módulo pam_blue

webCalendar: a agenda e o PAM

Autenticação via hardware: o módulo pam_usb

Cliente "automágico" Linux logando no domínio NT/Samba

Leitura recomendada

Sudoers 1.8.12 - Parte IV - Manual

Analisando arquivos de registro (log)

Elastic SIEM - Instalação e Configuração do LAB (Parte I)

Automatizando as atualizações no Linux

Como instalar o Avast antivírus no Linux

  
Comentários
[1] Comentário enviado por Rhods23 em 04/12/2008 - 23:00h

Meu amigo, só tenho uma palavra a dizer: PERFEITO. :D

[2] Comentário enviado por downloadd em 05/12/2008 - 10:13h

Olá Araujo...

Notei que você manda bem no assunto SAMBA, pois você já contribuiu com vários artigos sobre o samba, e por isso, gostaria de te fazer uma pergunta.

Eu uso samba+Ldap e se eu trocar a senha de root do linux, não consigo mais acessar o Ldap como root, nem se eu voltar a senha antiga do root. Por conta disso, não consigo mais incluir os usuários do samba no grupo "Domain Admins".

Detalhe que o restante continua funcionando normal; logins no linux, samba, squid... tudo normal, só esta questão mesmo que não sei como resolver.

Você poderia me ajudar? -> luiz.rissi at gmail.com

Abraço e parabéns!

[3] Comentário enviado por calaff2 em 06/12/2008 - 13:11h

Man manda os script para meu email! para eu testar aqui em casa ! calaff2@hotmail.com

Show de bola nota 10000000000000000 :)

[4] Comentário enviado por araujo_silva em 07/12/2008 - 18:23h

Caro calaff2

Estou aguardando a publicação no VOL do script incluido na seção linux/shell-script/avançado.
Caso não eseja livre até o dia 09 eu o envio diretamente para você.

abraços

Araujo

[5] Comentário enviado por araujo_silva em 07/12/2008 - 18:42h

Companheiro downloadd

Caso você esteja utilizando as ferramentas do smbldap-tools, modifique a senha utilizando a ferramenta "smbldap-passwd root" ao invés de utilizara "passwd root".
Não sei como estão configurados os arquivos /etc/nsswitch.conf, nem a prioridade que o arquivo /etc/pam.d/login atribui aos usuários do domínio e aos usuários locais. Esses arquivos vão determinar quais bases serão consultadas prioritariamente.
Faça consultas recursivas na árvore do ldap, antes e depois de alterar a senha do root:

# ldapsearch -x

Verifique se o parâmetro "ldap passwd sync = Yes" está presente no seu arquivo de configuração do samba (/etc/samba/smb.conf).

abraço

araujo

[6] Comentário enviado por spartac0s em 08/12/2008 - 10:42h

Ola Araujo.
Seu script ficou muito. parabens, mais estou com uma duvida aqui não estou sabendo como salvar os arquivos.
O gerenciamento de perfis salvei como ComSamba.sh
agora os outros PDC, SRV E CDS eu nao estou sabendo com qual o nome salvar. e e que local. se vc poder me responder agradeço muito obrigado.

[7] Comentário enviado por araujo_silva em 08/12/2008 - 14:54h

Blz spartac0s

O programa inteiro está na fila de liberação, na seção /linux/scripts-shell/avançado, aqui no VOL. É que é muito grande para incluir no arquivo, cerca de 1000 linhas. Está inscrito com o nome consamba.sh. Caso demore posso enviar pro seu e-mail a partir de amanha.

Abraços

Araujo

[8] Comentário enviado por downloadd em 10/12/2008 - 18:03h

Olá Araujo, sou eu novamente...

Sei que aqui não é o melhor lugar para se tratar do meu problema, afinal é um assunto off-topic, mas postei como pergunta e não tive ajuda nenhuma.

Respondendo:
Sim eu estou usando o smbldap-tools.
Não cheguei alterar os arquivos /etc/nsswitch.conf e /etc/pam.d/login

Já tentei mudar a senha daquela forma que você passou mas mesmo assim, nunca mais consigo logar como root no ldap.

Sim o parâmetro esta presente no arquivo do samba.

Eu segui este tutorial para instalar o Ldap e o samba.
http://www.howtoforge.com/openldap-samba-domain-controller-ubuntu7.10

Tenho que alterar algo nos arquivos /etc/nsswitch.conf e /etc/pam.d/login ?
valeu

[9] Comentário enviado por dfsantos em 19/12/2008 - 15:22h

"downloadd" tente alterar o arquivo /etc/nsswitch.conf para efetuar consulta primeiramente no ldap.. boa sorte

[10] Comentário enviado por araujo_silva em 19/12/2008 - 15:45h

downloadd

peço que verifique se apos as sugestoes sobre a alteração no nsswitch.conf e login houve alteração no comportamento da altenticação. E informe se a senha que esta sendo trocada esta sendo atualizada no paramentro "rootpw" do arquivo de configuração do cliente ldap

abraço

araujo

[11] Comentário enviado por aantunes em 17/06/2009 - 17:25h

Alguem sabe me informar como faço para configurar o novo pam_mount.conf.xml?
O que acontece, já configurei varias volumes para mount. só que ele não está validando o grupo segue o pedaço do arquivo

<!-- usuarios do grupo L_Asscomercial -->

<volume sgrp="l_asscomercial" fstype="smbfs" server="tmkdc1" path="users/%(USER)" mountpoint="/home/%(USER)/users" />
<volume sgrp="l_asscomercial" fstype="smbfs" server="tmkdc1" path="publica" mountpoint="/home/%(USER)/publica" />
<volume sgrp="l_asscomercial" fstype="smbfs" server="tmkdc1" path="sistemas" mountpoint="/home/%(USER)/sistemas" />
<volume sgrp="l_asscomercial" fstype="smbfs" server="tmkdc1" path="teleatend" mountpoint="/home/%(USER)/teleatend" />
<volume sgrp="l_asscomercial" fstype="smbfs" server="admfile1" path="iq2000" mountpoint="/home/%(USER)/iq2000" />

<!-- usuarios do grupo L_Juridico -->

<volume sgrp="l_juridico" fstype="smbfs" server="admfile1" path="users/%(USER)" mountpoint="/home/%(USER)/users" />
<volume pgrp="l_juridico" fstype="smbfs" server="admfile1" path="publica" mountpoint="/home/%(USER)/publica" />
<volume pgrp="l_juridico" fstype="smbfs" server="admfile1" path="sistemas" mountpoint="/home/%(USER)/sistemas" />
<volume pgrp="l_juridico" fstype="smbfs" server="tmkdc1" path="teleatend" mountpoint="/home/%(USER)/teleatend" />
<volume pgrp="l_juridico" fstype="smbfs" server="admfile1" path="iq2000" mountpoint="/home/%(USER)/iq2000" />
<volume pgrp="l_juridico" fstype="smbfs" server="tmkdc1" path="telelistas" mountpoint="/home/%(USER)/telelistas" />

[12] Comentário enviado por araujo_silva em 11/07/2009 - 12:01h

Caro aantunes,

1. primeiro deve haver os seguintes compartilhamentos , localizados no home de cada usuario: 'users','publica','sistemas','teleatend','iq2000','telelistas';

2. substitua o nome do grupo 'l_juridico' pelo 'id', no parâmetro 'options' de cada volume;

3. salvo se você tiver um concentrador de domínio (ldap), com servidores distribuídos, não haverá como mapear dois conjuntos de compartilhamentos originados em 'admfile1' e 'tmkdc1', pois o pam_mount irá montar os compartilhamentos a que tiver acesso no login do usuário;
4. substitua pela configuração abaixo, ajustando conforme sua necessidade:

<!-- usuarios do grupo l_juridico -->
<volume sgrp="l_juridico" fstype="smbfs" server="admfile1" path="users/%(USER)" mountpoint="/home/%(USER)/users" />

<!-- usuarios do grupo l_juridico -->
<volume fstype="smbfs" server="admfile1" path="users/%(USER)"
mountpoint="/home/%(USER)/users" options="uid=%(USER),gid=1001,dmask=0711,workgroup=DOMINIO" />

5. gostaria que informasse o progresso do ajuste.

abraços,

lourival

[13] Comentário enviado por aantunes em 02/10/2009 - 18:09h

Lourival,

[14] Comentário enviado por aantunes em 02/10/2009 - 18:14h

Lourival,
Obrigado pela ajuda. O projeto morreu, pois a empresa tem muito muito sistema Windows, sites feitos em asp.
Mas assim que tiver oportunidade estarei fazendo esse teste.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts