Ferramentas do usuário

Ferramentas do site


espec:servico_samba

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
espec:servico_samba [2008/11/13 19:50]
maziero
espec:servico_samba [2011/09/06 15:28] (atual)
maziero
Linha 1: Linha 1:
 +====== O Serviço Samba ======
 +
 +===== Redes Microsoft Windows =====
 +
 +O protocolo mais usado para compartilhamento de recursos entre computadores com sistemas operacionais Microsoft Windows é o SMB - [[http://​en.wikipedia.org/​wiki/​Server_Message_Block|Server Message Block]], também conhecido como CIFS - //Common Internet File System//. Ele permite o anúncio e compartilhamento de dispositivos do servidor como discos e impressoras aos clientes da rede. Além disso, esse mesmo protocolo é usado como base do sistema de autenticação em domínios O SMB é um protocolo proprietário desenvolvido inicialmente pela IBM e depois assumido pela Microsoft. Ele executa sobre o NETBIOS, que por sua vez executa sobre TCP/IP ou outros protocolos de transporte.
 +
 +O Windows Vista introduziu uma nova versão do protocolo, denominada SMB 2.0, que atualmente só funciona entre máquinas Vista ou Windows Server 2008. Sua principais melhorias são:
 +
 +  * a possibilidade de efetuar várias ações em cada requisição,​ diminuindo a necessidade de interação entre cliente e servidor;
 +  * o uso de buffers maiores, aumentando o desempenho de transferência de arquivos maiores;
 +  * a noção de descritores de arquivos "​duráveis",​ que suportam quedas de rede temporárias sem perda de sessão;
 +  * o suporte a links simbólicos.
 +
 +===== Samba =====
 +
 +Para permitir a integração de redes Microsoft a ambientes UNIX vem sendo desenvolvido desde 1991 um sistema chamado [[http://​www.samba.org|Samba]],​ que permite o acesso de clientes Windows a recursos (impressoras,​ arquivos, etc) em servidores UNIX e vice-versa. O sistema Samba é //​open-source//​ e de uso gratuito. Ele executa em uma grande variedade de sistemas UNIX e até mesmo em mainframes.
 +
 +O uso mais frequente do Samba é substituir servidores de arquivos e/ou impressão Microsoft por servidores UNIX, com os seguintes objetivos:
 +
 +  * Redução de custos, ao usar um ambiente UNIX livre (Linux, FreeBSD, etc);
 +  * Maior confiabilidade (robustez contra falhas e problemas de segurança);​
 +  * Melhor desempenho em cargas elevadas;
 +  * Integração de redes Windows, Unix e Mac OSX usando um só protocolo.
 +
 +O sistema Samba é composto por cliente e servidor. Um servidor Samba oferece os seguintes serviços, de forma transparente:​
 +
 +  * compartilhar diretório(s) do servidor;
 +  * compartilhar impressora(s) instalada(s) no servidor ou em outro local da rede;
 +  * auxiliar a navegação de rede dos clientes (//network browsing//​);​
 +  * autenticar clientes solicitando entrada em um domínio Windows;
 +  * prover ou auxiliar o serviço de resolução de nomes WINS;
 +  * Emular outros serviços Windows, como sincronização de tempo, etc.
 +
 +Por outro lado, o cliente Samba "''​smbclient''"​ permite a uma máquina UNIX acessar serviços disponíveis em servidores Microsoft (ou servidores Samba).
 +
 +===== Configuração do Samba =====
 +
 +O serviço Samba é implementado basicamente por dois processos (//​daemons//​):​
 +
 +  * ''​smbd'':​ manipula compartilhamentos de arquivos e impressoras e provê autenticação e autorização para clientes SMB.
 +  * ''​nmbd'':​ suporta os serviços de nomes NETBIOS e implementa o servidor WINS. Também auxilia os clientes na navegação no ambiente de rede.
 +
 +Esses dois //daemons// podem operar em modo autônomo, lançados pelo script de inicialização do Samba, ou através do [[Internet daemon]] (''​inetd''/''​xinetd''​).
 +
 +Os arquivos de configuração do Samba normalmente ficam no diretório ''/​etc/​samba/''​. O arquivo ''​smb.conf''​ contém os principais parâmetros de configuração de um servidor Samba, que estão detalhadas na página de manual ''​smb.conf''​. Esse arquivo possui uma seção com definições gerais, comuns a todos os serviços, e definições específicas para cada compartilhamento ([[smb.conf|exemplo]],​ [[man-smb.conf|página de manual]]). O formato desse arquivo é o seguinte:
 +
 +<​code>​
 +# este é um comentário
 +; este também é um comentário
 +
 +[global]
 +    tag_name = tag_value
 +    tag_name = tag_value
 +    ...
 +
 +[share_1]
 +    tag_name = tag_value
 +    tag_name = tag_value
 +    ...
 +
 +[share_2]
 +    tag_name = tag_value
 +    tag_name = tag_value
 +    ...
 +
 +...
 +</​code>​
 +
 +Os principais parâmetros de configuração global do servidor são os seguintes:
 +
 +^ Parâmetro e exemplo de valor ^ Significado ^
 +| ''​workgroup = RSS04''​ | Nome de domínio ou de grupo de trabalho |
 +| ''​server string = "Meu servidor"''​ | Descrição do servidor |
 +| ''​netbios name = VIRTSERV''​ | Nome NetBios deste servidor |
 +| ''​interfaces = 20.0/​16''​ | Indica as interfaces de rede que o servidor deve atender |
 +| ''​hosts allow = 20.0. 10.26. 127.''​ | Permite limitar o acesso somente a IPs autorizados |
 +| ''​printcap name = /​etc/​printcap''​\\ ''​load printers = yes''​ | carrega as informações de impressoras disponíveis no servidor e as compartilha automaticamente |
 +| ''​printing = cups''​ | Indica qual o sub-sistema de impressão UNIX a ser usado |
 +| ''​guest account = pcguest''​ | Habilita uma conta //guest// (usa a conta ''​nobody''​ por default) |
 +| ''​log file = /​var/​log/​samba/​%m.log''​ | Localização do arquivo de log |
 +| ''​max log size = 0''​ | Limite do arquivo de log em Kb (0 remove o limite) |
 +| ''​security = share''​ | Modo de segurança a ser usado |
 +| ''​local master = yes''​ | Controle de browsing (manutenção das informações do "​ambiente de rede") |
 +| ''​domain master = yes''​ | Indica que este servidor será o mestre de browsing deste domínio |
 +| ''​domain logons = yes''​ | Para o servidor ser o servidor de domínio da rede local |
 +| ''​logon script = script.bat''​ | Script a executar pelos clientes ao entrar no domínio |
 +| ''​wins support = yes''​ | Habilita o Samba como servidor WINS |
 +| ''​wins server = w.x.y.z''​ | Habilita o Samba como cliente WINS |
 +
 +Em cada compartilhamento podem ser definidos vários parâmetros,​ dos quais os mais relevantes são:
 +
 +^ Parâmetro e exemplo de valor ^ Significado ^
 +| ''​comment = "​Diretório comum"''​ | Descrição do compartilhamento |
 +| ''​valid users = ''​\\ ''​valid users = joao, jose, maria''​\\ ''​valid users = marcos, @prof''​ | Usuários (ou grupos) que podem acessar este recurso |
 +| ''​writeable = yes''​ | Permite-se a escrita ou somente a leitura? |
 +| ''​browseable = yes''​ | Aparece nas listas do "​Ambiente de Rede" |
 +| ''​path = /​home/​comum''​ | Caminho do recurso dentro do servidor |
 +| ''​force user = nobody''​ | Para forçar o acesso como sendo de um dado usuário local |
 +| ''​force group = nobody''​ | Para forçar o acesso como sendo de um dado grupo local |
 +| ''​guest ok = yes''​ | permite o acesso da conta //guest// | 
 +| ''​create mode = 0700''​ | Permissões para criação de arquivos no UNIX |
 +| ''​printable = yes''​ | Este recurso é uma impressora |
 +| ''​hide files = /​.*/''​ | Arquivos a ocultar (expressão regular) |
 +
 +O arquivo de configuração permite a utilização de variáveis, que são substituidas por seus valores quando ocorre a conexão de cada cliente. As principais variáveis utilizadas são:
 +
 +^ variável ^ significado ^
 +| ''​%U''​ | nome de login do usuário |
 +| ''​%G''​ | grupo do usuário |
 +| ''​%h''​ | nome Internet (FQDN) do servidor Samba |
 +| ''​%L''​ | nome NETBIOS do servidor Samba |
 +| ''​%M''​ | nome Internet (FQDN) da máquina cliente |
 +| ''​%m''​ | nome NETBIOS da máquina cliente |
 +| ''​%I''​ | endereço IP da máquina cliente |
 +| ''​%d''​ | PID do processo servidor |
 +| ''​%T''​ | data e hora atual |
 +| ''​%D''​ | nome do domínio ou grupo de trabalho do usuário corrente |
 +| ''​%S''​ | nome do serviço corrente |
 +| ''​%P''​ | diretório do serviço corrente |
 +
 +Eis um exemplo mínimo de arquivo de configuração,​ com apenas um compartilhamento publico:
 +
 +<​code>​
 +[global]
 +    workgroup = MEUGRUPO
 +    netbios name = FILESERV
 +    security = share
 +    log file = /​var/​log/​samba/​%m.log
 +
 +[comum]
 +    comment = Area publica de arquivos
 +    path = /home/comum
 +    read only = no
 +    guest ok = yes
 +</​code>​
 +
 +Outro exemplo, no qual cada usuário tem acesso a seu diretório pessoal (''​homes''​),​ a um diretório público (''​comum''​) e às impressoras instaladas no sistema:
 +
 +<​code>​
 +# Global parameters
 +
 +[global]
 +    workgroup = MEUGRUPO
 +    netbios name = FILESERV
 +    printcap name = cups
 +    printing = cups
 +
 +# Esta entrada compartilha automaticamente o diretório HOME de
 +# cada usuário registrado no Samba.
 +# (o nome do compartilhamento recebe o nome de login do usuário)
 +[homes]
 +    comment = Home Directories
 +    valid users = %S
 +    read only = No
 +    browseable = No
 +
 +[comum]
 +    comment = Public data
 +    path = /home/comum
 +    force user = nobody
 +    force group = nobody
 +    guest ok = Yes
 +
 +[printers]
 +    comment = All Printers
 +    path = /​var/​spool/​samba
 +    printer admin = root
 +    create mask = 0600
 +    guest ok = Yes
 +    printable = Yes
 +    use client driver = Yes
 +    browseable = No
 +</​code>​
 +
 +Outras configurações básicas de exemplo, além de informações mais detalhadas sobre a instalação e uso do Samba, podem ser obtidas no documento [[http://​www.samba.org/​samba/​docs/​man/​Samba3-HOWTO|Samba HowTo]].
 +
 +Alguns utilitários são fornecidos junto com o Samba, para facilitar seu uso:
 +
 +  * ''​smbpasswd''​ : para editar entradas na base de usuários do Samba (arquivo ''​smbusers''​)
 +  * ''​testparm''​ : para testar o arquivo de configuração ''​smb.conf''​.
 +  * ''​smbclient''​ : para acessar serviços SMB em servidores remotos Windows ou Samba.
 +
 +===== Modos de segurança =====
 +
 +O parâmetro de configuração global "''​security''"​ permite definir o modo de operação do servidor Samba em relação à autenticação de usuários. Os valores possíveis e seus significados são:
 +
 +  * ''​security = share''​ : O cliente não precisa se logar no servidor para conhecer a lista de compartilhamentos (//​shares//​). A autenticação usuário/​senha é efetuada quando o cliente tenta acessar um dado compartilhamento. Como clientes Windows mais antigos não enviam sempre um nome de usuário para acessar um compartilhamento,​ o Samba deve tentar "​adivinhar"​ o usuário a utilizar para autenticação.
 +
 +  * ''​security = user''​ : Modo default de operação. Neste modo, cada cliente deve "se logar" no servidor com nome/senha válidos antes de poder acessar os compartilhamentos. Este modo permite o uso de senhas cifradas. A lista de compartilhamentos só é visível aos clientes autenticados.
 +
 +  * ''​security = domain''​ : Neste modo o Samba irá validar usuários/​senhas em um controlador de domínio externo, primário ou backup (o servidor Samba deve ter sido previamente registrado no domínio). Do ponto de vista do cliente, este modo é equivalente ao anterior.
 +
 +  * ''​security = server''​ : O Samba irá validar as senhas em outro servidor SMB; em caso de falha, ele reverte ao modo ''​security = user''​.
 +
 +  * ''​security = ads''​ : Neste modo, o Samba irá se comportar como um membro de um domínio ADS (//Active Directory Service//). Para funcionar, o suporte ao serviço Kerberos deve estar instalado na máquina onde o Samba executa.
 +
 +Deve-se observar que os usuários apresentados pelos clientes Samba para acesso ao servidor devem ser **usuários válidos** do sistema UNIX onde está o servidor. Além disso, esses usuários (e suas senhas) devem ser registrados junto ao Samba através do utilitário "''​smbpasswd''":​
 +
 +<​code>​
 +server:​~>​ smbpasswd -a teodoro
 +New SMB password: *****
 +Retype new SMB password: ******
 +</​code>​
 +
 +===== Swat =====
 +
 +O Samba possui uma interface Web para administração,​ disponibilizada através de um software externo chamado SWAT -- //Samba Web Administration Tool//. O Swat permite configurar a maioria dos parâmetros de operação de um servidor Samba através de uma interface Web, usando um navegador padrão:
 +
 +{{ :​espec:​smb-swat.png |Tela de exemplo do Swat}}
 +
 +Como o Swat implementa seu próprio servidor Web interno, não é necessário instalar o servidor Apache. Ele é normalmente ativado através do //Internet daemon//, ouvindo na porta TCP 901. Para gerenciar o servidor Samba através do Swat é necessário:​
 +
 +  - instalar os softwares ''​xinetd''​ e ''​swat''​
 +  - configurar o lançamento do Swat (editar o arquivo ''/​etc/​xinetd.d/​swat''​)
 +  - reiniciar o //Internet daemon// (''​service xinetd restart''​)
 +  - apontar um navegador para ''​%%http://​servidor-samba.domain:​901%%''​
 +
 +**Importante**:​ para usar o SWAT com segurança através da Internet, deve-se empregar SSL (por exemplo, usando um tunel SSH ou o software ''​stunnel''​).
 +
  
espec/servico_samba.txt · Última modificação: 2011/09/06 15:28 por maziero