Olá Pessoal.
O SAMBA é uma suíte de ferramentas instaladas em um servidor Linux que permite a integração de ambientes heterogêneos através da comunicação entre sistemas Linux e Windows, viabilizando serviços de diretórios no Linux (controlador de domínio), o controle de acesso dos usuários, compartilhamento de arquivos e de impressoras, etc. A integração é possível porque em ambos os sistemas a comunicação é baseada no protocolo SMB/CIFS (Server Message Block / Common Internet File System).
# Configuração do Servidor SAMBA
Assim como nos artigos anteriores, estou considerando que o servidor está instalado com a distribuição Debian GNU/Linux (ou seus derivados, como o Ubuntu). A primeira etapa consiste na instalação do pacote denominado samba para que o Linux possa ser posteriormente configurado como servidor de arquivos para clientes Windows e Linux. Essa tarefa é simples e rápida através do APT:
root@smb-server:/# apt-get install samba
Para exemplificar o processo de compartilhamento de diretórios no servidor com os demais clientes da rede, vamos criar os diretórios "/smb/publico" (acesso total público) e também "/smb/privado" (acesso restrito ao usuário shbbrito):
root@smb-server:/# mkdir -p /smb/publico
root@smb-server:/# chown nobody.nogroup /smb/publico
root@smb-server:/# chmod 777 /smb/publico
root@smb-server:/# mkdir -p /smb/privado
root@smb-server:/# chown shbbrito.shbbrito /smb/privado
root@smb-server:/# chmod 750 /smb/privado
O arquivo de configuração do SAMBA fica lozalicado em "/etc/samba/smb.conf", sendo bem documentado e organizado em diferentes seções para facilitar sua configuração. O simples compartilhamento de diretórios (objeto deste artigo) é realizado através da inserção de novos diretórios entre colchetes na seção denominada "Share Definitions", como pode ser observado no exemplo abaixo.
###--- em /etc/samba/smb.conf
(...) Conteúdo Omitido
workgroup = SAMBA
interfaces 192.168.221.11/24 ethX
bind interfaces only = yes
server role = standalone server
passdb backend = smbpasswd
######### Share Definitions
[smb-publico]
comment = "Diretorio Publico"
path = /smb/publico
public = yes
only guest = yes
writable = yes
printable = no
[smb-privado]
comment = "Diretorio Privado (shbbrito)"
path = /smb/privado
public = no
only guest = no
valid users = shbbrito
valid users = @shbbrito
writable = yes
printable= no
Obs.: Caso não haja integração do SAMBA com nenhum serviço de diretórios para fins de autenticação dos usuários, como é o caso deste exemplo em que o servidor é standalone, é necessário: (1) criar o arquivo de usuários reconhecidos pelo serviço, (2) limitar seu acesso para somente leitura e (3) adicionar os usuários que também devem existir previamente no servidor Linux.
root@smb-server:/# touch /etc/samba/smbpasswd
root@smb-server:/# chmod 644 /etc/samba/smbpasswd
root@smb-server:/# smbpasswd -a nome_do_usuario
Password: *****
Re-Type Password: *****
Depois de realizadas as configurações, basta (re)iniciar o serviço SAMBA:
root@smb-server:/# service smbd restart
# Configuração do Cliente Windows
Na realidade não há nenhum segredo a ser detalhado nessa seção. O acesso aos compartilhamentos do servidor SAMBA através de estações clientes que estejam executando alguma versão do Windows pode ser feito através da execução (atalho Windows+R) do endereço ou nome do servidor (\\192.168.221.11). Também é possível fazer o acesso direto a um diretório específico (\\192.168.221.11\smb-publico\) e mapear unidades de rede para facilitar o acesso do usuário.
# Configuração do Cliente Linux
Assim como nos artigos anteriores, estou considerando que o servidor está instalado com a distribuição Debian GNU/Linux (ou seus derivados, como o Ubuntu). A primeira etapa consiste na instalação do pacote denominado samba para que o Linux possa ser posteriormente configurado como servidor de arquivos para clientes Windows e Linux. Essa tarefa é simples e rápida através do APT:
root@smb-server:/# apt-get install samba
Para exemplificar o processo de compartilhamento de diretórios no servidor com os demais clientes da rede, vamos criar os diretórios "/smb/publico" (acesso total público) e também "/smb/privado" (acesso restrito ao usuário shbbrito):
root@smb-server:/# mkdir -p /smb/publico
root@smb-server:/# chown nobody.nogroup /smb/publico
root@smb-server:/# chmod 777 /smb/publico
root@smb-server:/# mkdir -p /smb/privado
root@smb-server:/# chown shbbrito.shbbrito /smb/privado
root@smb-server:/# chmod 750 /smb/privado
O arquivo de configuração do SAMBA fica lozalicado em "/etc/samba/smb.conf", sendo bem documentado e organizado em diferentes seções para facilitar sua configuração. O simples compartilhamento de diretórios (objeto deste artigo) é realizado através da inserção de novos diretórios entre colchetes na seção denominada "Share Definitions", como pode ser observado no exemplo abaixo.
###--- em /etc/samba/smb.conf
(...) Conteúdo Omitido
workgroup = SAMBA
interfaces 192.168.221.11/24 ethX
bind interfaces only = yes
server role = standalone server
passdb backend = smbpasswd
######### Share Definitions
[smb-publico]
comment = "Diretorio Publico"
path = /smb/publico
public = yes
only guest = yes
writable = yes
printable = no
[smb-privado]
comment = "Diretorio Privado (shbbrito)"
path = /smb/privado
public = no
only guest = no
valid users = shbbrito
valid users = @shbbrito
writable = yes
printable= no
Obs.: Caso não haja integração do SAMBA com nenhum serviço de diretórios para fins de autenticação dos usuários, como é o caso deste exemplo em que o servidor é standalone, é necessário: (1) criar o arquivo de usuários reconhecidos pelo serviço, (2) limitar seu acesso para somente leitura e (3) adicionar os usuários que também devem existir previamente no servidor Linux.
root@smb-server:/# touch /etc/samba/smbpasswd
root@smb-server:/# chmod 644 /etc/samba/smbpasswd
root@smb-server:/# smbpasswd -a nome_do_usuario
Password: *****
Re-Type Password: *****
Depois de realizadas as configurações, basta (re)iniciar o serviço SAMBA:
root@smb-server:/# service smbd restart
# Configuração do Cliente Windows
Na realidade não há nenhum segredo a ser detalhado nessa seção. O acesso aos compartilhamentos do servidor SAMBA através de estações clientes que estejam executando alguma versão do Windows pode ser feito através da execução (atalho Windows+R) do endereço ou nome do servidor (\\192.168.221.11). Também é possível fazer o acesso direto a um diretório específico (\\192.168.221.11\smb-publico\) e mapear unidades de rede para facilitar o acesso do usuário.
# Configuração do Cliente Linux
De forma muito similar aos clientes Windows, em clientes Linux que tenham um ambiente gráfico é possível localizar os compartilhamentos através da simples navegação na rede ou mesmo através da navegação manual ao servidor, por ex.: smb://192.168.221.11. Na ocasião do acesso através de clientes que não tenham uma interface gráfica, o acesso pode ser realizado através da ferramenta smbclient.
01. apt-get install smbclient
02. smbclient -L 192.168.221.11
03. smbclient //192.168.221.11/smb-publico -U nome_usuario
01. apt-get install smbclient
02. smbclient -L 192.168.221.11
03. smbclient //192.168.221.11/smb-publico -U nome_usuario
Na linha 01 estamos instalando o cliente SAMBA (smbclient), caso não haja nenhum instalado na máquina. O comando da linha 02 (parâmetro -L) pode ser utilizado para visualizar os compartilhamentos disponibilizados pelo servidor que responde por um determinado nome ou IP. O acesso ao diretório propriamente dito é realizado na linha 03, sendo que na sequência o usuário será direcionado para um prompt SMB similar ao prompt do FTP. No prompt SMB o comando get é utilizado para baixar um arquivo remoto na máquina local, enquanto que o comando put é utilizado para subir um arquivo local no servidor remoto. Para obter mais detalhes dos outros comandos e da ferramenta smbclient, recomendo a leitura do seu manual através do comando "man smbclient".
Uma alternativa à manipualação dos arquivos compartilhados através do smbclient é montar localmente na máquina cliente o diretório remoto compartilhado pelo servidor. Esse procedimento pode ser realizado através do seguinte comando:
mount -t cifs //192.168.221.11/smb-publico /home/shbbrito/smb-publico -o username=shbbrito
Façam seus testes...
Samuel.
Boa Noite Samuel!
ResponderExcluirTive apenas um pequeno problema ao adicionar a senha ao meu usuário (luciano), quando digito no terminal aparece o erro:
luciano@ubuntu-lts:/etc/samba$ sudo sbmpasswd -a luciano
sudo: sbmpasswd: command not found
luciano@ubuntu-lts:/etc/samba$ sudo sbmpasswd -a luciano
sudo: sbmpasswd: command not found
luciano@ubuntu-lts:/etc/samba$ sbmpasswd -a luciano
Comando 'sbmpasswd' não encontrado, você quis dizer:
Comando 'smbpasswd' do pacote 'samba-common-bin' (main)
sbmpasswd: comando não encontrado
Qual a possível solução do problema para que possa adicionar a senha ao ususário luciano?
o comando é " smbpasswd -a seu_usuário" é "smb" ao invés de "sbm", um erro de digitação.
ExcluirExato!
ExcluirCorrigido.
Samuel, ótimo tutorial, já segui alguns e continuo com um problema, o acesso pelo windows fica pedindo ao infinito credenciais. Tem alguma solução?
ResponderExcluirPara a posterioridade. Tive o mesmo problema e resolvi acrescentando na seção [global] as seguintes linhas
Excluir#### WINDOWS XP #####
lanman auth = yes
ntlm auth = yes
Olá Anônimo:
ResponderExcluirVocê precisa criar um usuário no linux, e depois no samba,
#adduser usuario
#smbpasswd -a usuario
ok?
Sim.
Excluir