Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
1<br />
Aula 15 – Servidor <strong>Samba</strong><br />
O <strong>Samba</strong> é um software para Linux (e outros sistemas baseados em Unix) que permite o<br />
gerenciamento e compartilhamento de recursos em redes formadas por computadores com o Windows.<br />
Assim, é possível usar o Linux como servidor de arquivos, servidor de impressão, entre outros, como se a<br />
rede utilizasse servidores Windows (NT, 2000, XP, Server 2003).<br />
Instalando o samba<br />
#apt-get install samba<br />
Quando instalado, o SAMBA disponibiliza os seguintes componentes:<br />
• smbd : O servidor SAMBA.<br />
• nmbd : O Servidor de nomes NetBios<br />
• smbclient : Cliente SMB para sistemas Unix.<br />
• smbpasswd : Alterar senhas de usuários smb.<br />
• smbprint : Cliente para envio de impresao a sistemas Linux.<br />
• smbstatus : Apresenta a situaçao atual das conexoes SMB no Host.<br />
• testparm : Verifica o arquivo smb.conf (configuraçao do SAMBA).<br />
• testprns : Verifica a comunicaçao via rede com as impressoras.<br />
O arquivo de configuração do samba é o /etc/samba/smb.conf. Vamos começar com um exemplo<br />
simplista, onde temos um único compartilhamento:<br />
[global]<br />
netbios name = Aula_Redes<br />
workgroup = grupoRedes<br />
server string = Servidor01<br />
[arquivos]<br />
comment = Arquivos Publicos<br />
path = /mnt/arquivos<br />
obs.: lembre de criar a pasta arquivos em /mnt<br />
Como você pode ver, o arquivo é dividido em seções.<br />
• [global] contém as opções gerais do servidor.<br />
o netbios name – nome netbios do computador; (possibilita que a máquina conecte-se à<br />
rede reservando um nome para sua utilização)<br />
o workgroup - nome do grupo de trabalho (GRUPOREDES), que seria o mínimo<br />
necessário para colocar o servidor na rede. As demais opções (não especificadas no<br />
arquivo) são configuradas usando os valores default. Se você omitir a opção<br />
“workgroup”, por exemplo, o <strong>Samba</strong> vai reverter para o grupo “WORKGROUP”, que é o<br />
padrão;<br />
o server string – descrição do servidor;<br />
• [arquivos] é uma seção adicional para compartilhamento de arquivo. O [arquivos] indica o<br />
nome do compartilhamento, da forma como ele aparecerá na rede.<br />
o Path - diz qual pasta do servidor será compartilhada;<br />
o Comment - (opcional), permite que você inclua um comentário.<br />
Obs - Para cada compartilhamento você deve criar uma nova seção.<br />
Essa configuração mínima só permite que os usuários Windows acessem o conteúdo da pasta<br />
arquivos, porém não permite a escrita no diretório. Para que o usuário Windows possa escrever<br />
no diretório arquivos é necessário adicionar a linha:<br />
o writeable = yes – permite a gravação de recursos no compartilhamento;
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
2<br />
Para garantir melhor confiabilidade adicione as linhas public = yes e available = yes na<br />
seção arquivos.<br />
Obs – Pode ser necessário também alterar as permissões da pasta arquivos.<br />
Sempre que alterar o arquivo smb.conf, e quiser verificar se as configurações estão corretas, rode<br />
o comando testparm. Ele funciona como uma espécie de debug, indicando erros grosseiros no arquivo e<br />
informando o papel do servidor na rede:<br />
root@marceloz:~# testparm<br />
Load smb config files from /etc/samba/smb.conf<br />
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)<br />
Processing section "[arquivos]"<br />
Loaded services file OK.<br />
Server role: ROLE_STANDALONE<br />
Press enter to see a dump of your service definitions<br />
O “ROLE_STANDALONE” significa que o servidor foi configurado como um membro normal do grupo<br />
de trabalho. É possível também fazer com que o servidor <strong>Samba</strong> atue como um controlador de domínio,<br />
como veremos em detalhes mais adiante.<br />
As alterações no arquivo são lidas periodicamente pelo <strong>Samba</strong> (o default são 3 minutos) e aplicadas<br />
automaticamente. Isso permite que as mudanças de configuração sejam aplicadas de forma suave, sem<br />
prejudicar o acesso dos usuários, o que é importante em um ambiente de produção. Para fazer com que as<br />
alterações entrem em vigor imediatamente, reinicie o serviço do <strong>Samba</strong>:<br />
# service smbd restart<br />
# service nmbd restart<br />
No Debian:<br />
# smbd restart<br />
# nmbd restart<br />
Agora devemos cadastrar usuários para que os mesmos tenham acesso aos arquivos<br />
compartilhados pelo <strong>Samba</strong>:<br />
#adduser nome_do_usuário<br />
#smbpasswd -a nome_do_usuário<br />
A partir daí, o compartilhamento estará disponível. Ao tentar acessar o servidor através do “Meus<br />
locais de rede” nos clientes Windows, você receberá um prompt de senha, onde você precisa fornecer um<br />
dos logins cadastrados no servidor samba.<br />
É importante enfatizar que todos os usuários cadastrados no <strong>Samba</strong> precisam também existir no<br />
sistema, por isso, antes de usar o comando “smbpasswd -a”, você deve usar o adduser para criar o usuário.<br />
A solução para casos em que você não deseja criar contas válidas para todos os usuários é criar usuários<br />
limitados usando o comando “adduser --disabled-login --no-create-home usuário”.<br />
Depois de logado, o cliente pode visualizar os compartilhamentos do servidor. Por enquanto temos<br />
apenas o compartilhamento “arquivos”, que mostra o conteúdo da pasta “/mnt/arquivos” do servidor.
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
3<br />
<strong>Samba</strong> como controlador primário de domínio (PDC)<br />
Em uma pequena rede, manter as senhas dos usuários sincronizadas entre as estações Windows e<br />
o servidor <strong>Samba</strong> não chega a ser um grande problema. No entanto, em redes de maior porte, isso pode se<br />
tornar uma grande dor de cabeça e passar a consumir uma boa parte do seu tempo.<br />
Para solucionar o problema, existe a opção de usar o servidor <strong>Samba</strong> como um controlador primário<br />
de domínio (PDC), onde ele passa a funcionar como um servidor de autenticação para os clientes Windows<br />
e, opcionalmente, armazenar os perfis dos usuários, permitindo que eles tenham acesso a seus arquivos e<br />
configurações a partir de qualquer máquina onde façam logon.<br />
Ao cadastrar um novo usuário no servidor <strong>Samba</strong>, ele automaticamente pode fazer logon em<br />
qualquer uma das estações configuradas. Ao remover ou bloquear uma conta de acesso, o usuário é<br />
automaticamente bloqueado em todas as estações. Isso elimina o problema de sincronismo entre as senhas<br />
no servidor e nas estações, além de centralizar a administração de usuários e permissões de acesso no<br />
servidor, simplificando bastante seu trabalho de administração.<br />
O primeiro passo é modificar o arquivo de configuração /etc/samba/smb.conf do <strong>Samba</strong>.<br />
[global]<br />
netbios name = Aula_Redes<br />
workgroup = grupoRedes<br />
server string = Servidor01
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
4<br />
domain master = yes<br />
domain logons = yes<br />
logon script = netlogon.bat<br />
security = user<br />
encrypt passwords = yes<br />
enable privileges = yes<br />
passdb backend = tdbsam<br />
preferred master = yes<br />
local master = yes<br />
os level = 200<br />
wins support = yes<br />
add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/mobody %u<br />
[netlogon]<br />
comment = Servico de Logon<br />
path = /var/samba/netlogon<br />
browseable = no<br />
[homes]<br />
valid users = %S<br />
create mask = 0700<br />
directory mask = 0700<br />
browseable = no<br />
[arquivos]<br />
comment = Arquivos Publicos<br />
path = /mnt/arquivos<br />
writeable = yes<br />
public = yes<br />
available = yes<br />
Vamos às explicações para transformar o <strong>Samba</strong> em um controlador de domínio.<br />
• [global]<br />
o As linhas inicias já foram explicadas;<br />
o domain master = yes - transforma o samba em um domínio master browser;<br />
o domain logons = yes – transforma o samba em um servidor de logon;<br />
o logon script = netlogon.bat - contem o script de logon que será executado pelas<br />
estações;<br />
o security = user - habilita o acesso de usuários;<br />
o encrypt passwords = yes - uso de senhas encriptadas;<br />
o passdb backend = tdbsam - Embora não seja obrigatório, é fortemente<br />
recomendável ativar o uso do tdbsam como backend. Usar o smbpasswd em um<br />
PDC oferece várias desvantagens. A principal delas é que o smbpasswd armazena<br />
um conjunto bastante incompleto de atributos referentes aos usuários, de forma<br />
que atributos como o SID (um código de identificação único a cada usuário, usado<br />
como verificação de segurança) ficam em branco ou são gerados dinamicamente<br />
durante os acessos, o que pode quebrar o suporte aos roaming profiles em algumas<br />
situações. O uso do tdbsam soluciona estes problemas.<br />
o add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/mobody %u -<br />
Além das contas para cada usuário, é preciso cadastrar também uma conta<br />
(bloqueada, e por isso sem senha), para cada máquina. Você deve usar aqui os<br />
mesmos nomes usados na configuração de rede em cada cliente. Se a máquina se
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
5<br />
o<br />
o<br />
chama “pc01” por exemplo, é preciso criar um login de máquina com o mesmo<br />
nome. Essa linha automatiza esse processo, dessa forma não precisamos criar no<br />
braço os usuários máquina. Obs.: você pode visualizar os usuários no arquivo<br />
etc/passwd<br />
preferred master = yes, local master = yes, os level = 200 - fazem com que<br />
o servidor assuma também a função de master browser da rede. É comum que o<br />
PDC acumule também a função de master browser, mas, na verdade, uma coisa<br />
não tem relação com a outra. Você pode remover as três linhas e configurar outra<br />
máquina para assumir a função de master browser se preferir.<br />
wins support = yes - O WINS mapeia nomes NetBIOS para endereços IP.<br />
• [home] - é um serviço interno do <strong>Samba</strong>, que permite compartilhar automaticamente o<br />
diretório home de cada usuário, sem precisar criar um compartilhamento separado para<br />
cada um. A configuração mais comum é compartilhar os diretórios home com permissão de<br />
acesso apenas para o respectivo usuário. Dessa forma, cada usuário tem acesso apenas ao<br />
seu próprio diretório home (que aparece no ambiente de redes como um compartilhamento<br />
com o mesmo nome), sem poder acessar, nem muito menos alterar o conteúdo dos<br />
diretórios home dos demais usuários.<br />
o create mask = 0700 e directory mask = 0700 - fazem com que todos os<br />
arquivos e pastas criados pelo usuário dentro do home sejam acessíveis apenas por<br />
ele mesmo.<br />
o browseable = no - faz com que cada usuário possa ver apenas seu próprio<br />
diretório, o que é reforçado pela opção valid users = %S, que diz explicitamente<br />
que apenas o próprio usuário deve ter acesso à sua pasta home.<br />
Acostume-se a sempre rodar o comando “testparm” depois de fazer alterações no arquivo, pois<br />
ele verifica a sintaxe e indica erros de configuração. Ao configurar o <strong>Samba</strong> como PDC, ele deve exibir a<br />
mensagem: “Server role: ROLE_DOMAIN_PDC”, como em:<br />
root@marceloz:/mnt# testparm<br />
Load smb config files from /etc/samba/smb.conf<br />
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)<br />
Processing section "[netlogon]"<br />
Processing section "[homes]"<br />
Processing section "[arquivos]"<br />
Loaded services file OK.<br />
Server role: ROLE_DOMAIN_PDC<br />
Press enter to see a dump of your service definitions<br />
Após editar o arquivo de configuração é hora de criar as patas referências no arquivo:<br />
Pasta “/var/samba/netlogon” e configurar corretamente as permissões:<br />
# mkdir -p /var/samba/netlogon<br />
# chmod 775 /var/samba/netlogon<br />
Obs.: -p cria toda a estrutura de diretórios.<br />
É necessário também criar o arquivo “/var/samba/netlogon/netlogon.bat”, um script que é lido<br />
e executado pelos clientes ao fazer logon. Este script faz com que a pasta compartilhada seja<br />
automaticamente mapeada como a unidade; Exemplo: “p”.<br />
Dentro do arquivo netlogon.bat coloque o seguinte conteúdo:<br />
net use p: \\Aula_Redes\arquivos /yes<br />
Aula_Redes é o nome definido em “netbios name” e arquivos é o nome da seção do<br />
compartilhamento da pasta /mnt/arquivos. O p é a unidade que vai ser montada nos locais de rede. Obs.: a<br />
configuração do arquivo netlogon.bat é opcional.<br />
Um detalhe importante é que o arquivo do script de logon deve usar quebras de linhas no padrão<br />
MS-DOS e não no padrão Unix (que é o padrão na maioria dos editores de texto do Linux). Para isso vamos<br />
instalar a ferramenta flip.<br />
#apt-get install flip
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
6<br />
Para deixarmos o arquivo no padrão DOS devemos entrar na pasta /var/samba/netlogon e<br />
utilizamos então o comando<br />
#flip -m -b netlogon.bat<br />
Utilize o comando smbpasswd -a root para cadastrar o a conta de root no <strong>Samba</strong>. Essa senha<br />
será no momento da configuração dos usuários Windows.<br />
#smbpasswd -a root<br />
Cadastre agora os logins dos usuários, com as senhas que eles utilizarão para fazer logon a partir<br />
das máquinas Windows. A senha deve ser a mesma nos dois comandos;<br />
#adduser nome_do_usuário<br />
#smbpasswd -a nome_do_usuário<br />
Logando Clientes Windows<br />
Nem todas as versões do Windows suportam o uso de um domínio. Como controladores de domínio<br />
são usados principalmente em redes de médio ou grande porte, em empresas, a Microsoft não inclui<br />
suporte no Windows XP Home e no XP Starter, assim como no Vista Starter, Vista Home Basic e Vista Home<br />
Premium, de forma a pressionar as empresas a comprarem as versões mais caras do sistema. É possível<br />
burlar a limitação através da alteração de chaves do registro, mas isso viola o contrato de uso do sistema, o<br />
que de qualquer forma não é aceitável em um ambiente de produção.<br />
Tendo isso em mente, vamos aos passos relacionados à configuração, que muda de acordo com a<br />
versão do Windows:<br />
No Windows XP Professional, acesse o Painel de Controle > Sistema > Nome do Computador e<br />
use a opção “Alterar...”. No menu seguinte, defina o nome da máquina (que precisa ser um dos logins de<br />
máquinas adicionados na configuração do <strong>Samba</strong>) e o nome do domínio, que é definido na opção<br />
“workgroup =” do smb.conf. Para ter acesso a esta opção, você deve estar logado como administrador:
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
7<br />
Reiniciar a máquina
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
8<br />
Perceba que esta configuração que foi realiza, toda vez que o usuário efetuar logoff, todos os<br />
arquivos existes na máquina serão excluídos. Para que os dados do usuário fiquem salvos é preciso<br />
adicionar a linha “writeable = Yes” na seção home. Essa opção é utilizada geralmente em conjunto<br />
com uma nova seção chamada Profiels.<br />
O recurso chamado Roaming Profiles, ou perfis móveis, armazene os arquivos e configurações do<br />
usuário, fornecendo-os à estação no momento em que o usuário faz logon. Isso permite que o usuário possa<br />
trabalhar em outras máquinas da rede e faz com que seus arquivos de trabalho sejam armazenados no<br />
servidor (na pasta home), reduzindo a possibilidade de perda de dados.<br />
Note que o servidor não armazena todos os arquivos do usuário, apenas as configurações dos<br />
aplicativos, entradas do menu iniciar, cookies, bookmarks, arquivos temporários do IE e o conteúdo das<br />
pastas “Desktop”, “Modelos” e “Meus Documentos”. Vamos adicionar essa nova configuração ao nosso<br />
serviço para isso adicione as linhas que estão em amarelo no arquivo abaixo.<br />
[global]<br />
netbios name = Aula_Redes<br />
workgroup = grupoRedes<br />
server string = Servidor01<br />
logon path = \\%L\%U\profile<br />
logon home = \\%L\%U
<strong>UTFPR</strong> – Universidade Tecnológica Federal do Paraná<br />
Campus de Pato Branco<br />
Curso de Tecnologia em Análise e Desenvolvimento de Sistemas<br />
Aula 15 – Servidor <strong>Samba</strong><br />
9<br />
logon drive = H:<br />
domain master = yes<br />
domain logons = yes<br />
logon script = netlogon.bat<br />
security = user<br />
encrypt passwords = yes<br />
enable privileges = yes<br />
passdb backend = tdbsam<br />
preferred master = yes<br />
local master = yes<br />
os level = 200<br />
wins support = yes<br />
add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/mobody %u<br />
[netlogon]<br />
comment = Servico de Logon<br />
path = /var/samba/netlogon<br />
browseable = no<br />
[homes]<br />
valid users = %S<br />
create mask = 0700<br />
directory mask = 0700<br />
browseable = no<br />
writeable = yes<br />
[profiles]<br />
path = /var/samba/profiles<br />
writeable = yes<br />
browseable = no<br />
create mask = 0600<br />
directory mask = 0700<br />
[arquivos]<br />
comment = Arquivos Publicos<br />
path = /mnt/arquivos<br />
writeable = yes<br />
public = yes<br />
available = yes<br />
A variável “%L” indica, neste caso, o nome do servidor, enquanto o “%U” indica o nome do usuário<br />
que está fazendo logon. Dessa forma, quando o usuário faz logon é montado o compartilhamento “H:” para<br />
verificar esse compartilhamento: Iniciar -> meu computador.<br />
Após editar o arquivo de configuração é hora de criar a pata referência no arquivo:<br />
# mkdir /var/samba/profiles<br />
# chmod 777 /var/samba/profiles<br />
Lembre-se de testar o arquivo com o comando tesparm e de reiniciar os serviços smbd e nmbd.<br />
Nesta aula vimos somente algumas funcionalidades do samba. O mesmo pode compartilhar<br />
impressoras, lixeira e outras opções que você pode adicionar (juntamente com os compartilhamentos<br />
desejados).