16.05.2014 Views

Samba - UTFPR

Samba - UTFPR

Samba - UTFPR

SHOW MORE
SHOW LESS

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).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!