Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior |
espec:servico_samba [2008/08/01 21:13] – maziero | espec:servico_samba [2020/08/18 22:52] (atual) – edição externa 127.0.0.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''). |
| |
| |