Depois de um bom tempo sem escrever nada por aqui, resolvi descrever os passos para se configurar um servidor básico para compartilhar arquivos e diretórios e também será o controlador de domínio da rede cuidando da autenticação de usuários e controle de acesso aos compartilhamentos.
A configuração será feita utilizando o Debian Lenny 5.0 e todos os pacotes necessários utilizando a ferramenta apt-get. Dando incio faremos a instalação dos seguintes pacotes:
samba
samba-tools
smbclient
# apt-get install samba samba-tools smbclient
Após digitar o comando acima e pressionar a tecla enter, os pacotes e suas dependências serão baixados de um do repositório listado em /etc/source.list e instalado.
Obs.: O apt poderá solicitar uma confirmação de que deseja baixar e instalar estes pacotes pode responder que sim apertando a tecla “y” seguido de enter.
Obs2.: O Debian utiliza uma ferramenta chamado debconf que é um sistema de configuração de pacotes do Debian. Após a instalação de um determinado pacote, caso seja necessário realizar uma configuração prévia antes de finalizar a instalação do mesmo, o debconf entra em cena e faz algumas perguntas que após respondidas são inseridas no arquivo de configuração da aplicação sendo instalada. No caso do samba, o debconf solicita algumas perguntas como o nome do servidor, se deseja usar senhas criptografadas e etc... Particularmente, não utiliza o debconf e sempre que instalo um servidor já deixa ele desabilitado mas isso é questão de preferência, não tenha nada contra.
Somente para exemplificar, vamos utilizar os seguintes dados:
Nome do Servidor: server
Domínio de rede: empresa
Diretório que será compartilhado: /home/dados/arquivos
Senha de root: blablabla (Jamais utilize uma senha dessa).
Após concluída a instalação vamos fazer algumas modificações no arquivo de configuração do samba em /etc/samba/smb.conf:
# cd /etc/samba
# vi smb.conf
=================Inicio do smb.conf===================
# copie e cole a partir daqui
# linhas inciadas desta forma são comentários
# Nome do servidor na rede
netbios name = server
# Nome do domínio/Grupo de Trabalho
worgroup = empresa
# Ativa Wins Server neste servidor
# somente poderá existir um se sua rede já tiver um servidor Wins
#utilize a opção wins server =
wins support = yes
# modo como o servidor trata a questão de acesso ao servidor
# é um conceito fácil mas após alguma prática com o samba.
# por padrão deixe como user, será necessário criar um usuário UNIX # para cada usuário do samba.
security = user
# Senha encriptadas
encrypt passwords = true
# Qual backend será utilizado. Neste caso utilizaremos o padrão do # samba tdbsam, mas há vários.
passdb backend = tdbsam
# Ativa a função e autenticar usuários e de PDC do server.
domain logons = yes
# Só funciona se a opção “domain logon” for yes. Especifica a # localização do diretório de profile do usuário do ponto de vista # de uma estação na rede. É necessário um diretório para o profile dos # usuários, veremos mais abaixo.
#logon path = \\%N\profiles\%U
# Neste exemplo iremos desativar a opção de perfis móveis do # servidor por isso esta diretiva pode #ser indicado da seguinte forma:
logon path =
# Só funciona se a opção “domain logon” for yes. Indica a # localização do diretório home do usuário #do ponto de vista de # uma estação na rede.
logon drive = H:
# Só funciona se a opção “domain logon” for yes. Indica a # localização do script que será #executado durante o logon. # Este script deve ser mantido no diretório [netlogon]. # Veremos mais #abaixo.
logon script = script.bat
# Esta opção especifica que o servidor samba será o master # browser do domínio.
domain master = yes
# logo na sequência iniciamos a configuração dos compartilhamentos
# Indica a localização do diretório home dos usuários. # Neste caso será mapeado pelas estações, o mesmo diretório # home utilizado no linux “/home/usuário” só que nas estações # Windows serão mapeadas pelo letra H: ou a letra especificada # na diretiva “logon drive”
[homes]
comment = Home Directories
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S
# caminho do diretório onde o script de logon estará disponível. # Este script e executado automaticamente após a realização de # logon e é utilizado principalmente para mapeamento de unidades # de rede.
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
read only = yes
share modes = no
# diretório onde será armazenado o perfil dos usuários. Este # compartilhamento junto com a opção logon path, permite que # possamos configurar as estações para manterem o perfil na rede # ao invés de mantê-los localmente. No nosso exemplo, desativamos
# os perfis móveis com deixando a diretiva “logon path = ” vazia.
[profiles]
comment = Users profiles
path = /home/samba/profiles
guest ok = no
browseable = no
create mask = 0600
directory mask = 0700
# Aqui estamos compartilhando um diretório simples para
# compartilhamento de arquivos.
# Neste diretório as permissões serão setadas de acordo com as
# opções de dono/grupo do servidor linux atribuídas através dos
# comandos chmod, chown e chgrp.
[arquivos]
comment = Diretório Geral
path = /home/dados/arquivos
browseable = yes
guest ok = yes
read only = no
create mask = 2660
directory mask = 2770
====================Fim do smb.conf================
Utilizando este arquivo exemplo teremos uma configuração de um PDC bem simples. É claro que em um ambiente de produção outros fatores deverão ser levados em conta como grupos de usuários, permissões de acesso e etc...
Para finalizar vamos realizar algumas configurações finais para que nosso servidor esteja pronto para autenticar o usuário em uma rede windows:
Criação de diretórios:
mkdir /home/samba/profile
chmod 770 /home/samba/profile
mkdir /home/samba/netlogon
Criaremos o arquivo script.bat em /home/samba/netlogon com o seguinte conteúdo:
net time \\server /set /yes
net use F: \\server\arquivos
podemos salvar o arquivo.
Obs.: Este arquivo precisa estar no formato de arquivos do windows. Você pode editar este arquivo em uma estação windows utilizando o notepad e depois transportá-lo para o linux ou pode utilizar o editor vi do linux para criar o arquivo e converter para o formato windows, para isso:
Abra o editor vi e aperte a tecla i (deverá aparecer os dizeres INSERT no conta inferior esquerdo).
Pode inserir o conteúdo do arquivo e após terminar aperte a tecla ESC para sair do modo de Inserção. Aperte a tecla : “dois pontos” seguido da letra w e aperte o Enter. Na sequência digite:
:set ff=dos
E aperte a tecla enter. Pronto script.bat gravado e convertido para o formato de texto do Windows.
Para sair do editor vi digite :wq seguido da tecla Enter.
Este arquivo será executado quando um usuário fizer logon no rede e vai acertar a hora da estação de acordo com o horário do servidor e também mapeará um compartilhamento do servidor utilizando a letra F:
Precisamos criar alguns usuários agora.
# useradd felix
# passwd felix
Após criar o usuário e cadastrar um senha para ele no linux, temos criar o usuário no samba:
# smbpasswd -a felix
Será solicitado para inserir e repetir uma senha para o usuário windows, neste caso deverá ser utilizada a mesma senha que foi utilizada no Linux.
Por último, para que possamos incluir uma estação no domínio, precisamos criar uma conta para a máquina. Neste exemplo temos uma estação com o nome estacao1:
useradd -s /bin/false -d /dev/null estacao1$
smbpasswd -am estacao1
Obs.: Notem que para criar um nome de máquina primeiro precisamos criar uma conta UNIX e devemos adicionar $ no final do nome da estação. No comando smbpasswd não é necessário adicionar $ no final do nome da máquina.
Precisamos registrar a senha de root do servidor da arquivo secrets.tdb do samba, para isso:
smbpasswd -a
Digite a senha de root do servidor e confirme-a
Agora você já pode configurar a estação para acesso a rede. Levando em conta que a maioria das estações principalmente em empresas pequenas ainda utilizam o Windows XP como sistema operacional poderá adicionar normalmente esta estação no domínio da mesma forma como é feita quando se configura uma rede Windows com AD.
Quando se trata de sistemas mais novos como Windows Vista ou Windows 7, precisamos fazer alguns procedimentos adicionais porém ficará para outro post.
Pretendo abordar também a configuração do samba para utilizar uma base de dados LDAP para armazenamento de usuários e senhas.
Para mais informações:
Samba (http://www.samba.org)





























