Product SiteDocumentation Site

11.5. Configurando um Compartilhamento Windows com o Samba

O Samba é um conjunto de ferramentas para lidar com o protocolo SMB (também conhecido como “CIFS”) no Linux. Esse protocolo é usado pelo Windows para compartilhamento de rede e impressoras compartilhadas.
Samba também pode atuar como um controlador de domínio Windows. Esta é uma excelente ferramenta para garantir a perfeita integração de servidores Linux e as máquinas desktop de escritório ainda com o Windows.

11.5.1. Servidor Samba

O pacote samba contém os dois principais servidores do Samba 4, smbd e nmbd.

11.5.1.1. Configurando com debconf

O pacote realiza uma configuração mínima durante a instalação inicial mas você realmente deve rodar dpkg-reconfigure samba-common para adaptá-la:
O primeiro item de informação necessária é o nome do grupo de trabalho ("workgroup") ao qual o servidor Samba pertencerá (a resposta é FALCOTNET em nosso caso).
O pacote também propõe a identificação do servidor WINS a partir da informação fornecida pelo daemon DHCP. Os administradores da Falcot Corp rejeitaram essa opção, já que eles tem a intenção de usar o próprio servidor Samba como um servidor WINS.

11.5.1.2. Configurando Manualmente

11.5.1.2.1. Mudanças no smb.conf
Os requerimentos na Falcot fazem necessário que outras opção sejam modificadas no arquivo de configuração /etc/samba/smb.conf. O trecho a seguir resumem as alterações que foram feitas na seção [global].
[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = FALCOTNET

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
   wins support = yes 1

[...]

####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller". 
#
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server.
   security = user 2

[...]

1

Indica que o Samba deveria atuar como um servidor de nomes Netbios (WINS) para a rede local.

2

Esse é o valor padrão para esse parâmetro; contudo, como ele é central para a configuração do Samba, o recomendado é preenchê-lo explicitamente. cada usuário tem que se autenticar antes de acessar qualquer compartilhamento.
11.5.1.2.2. Adicionando Usuários
Cada usuário do Samba precisa ter uma conta no servidor; as contas Unix tem que ser criadas primeiro, depois o usuário precisa ser registrado no banco de dados do Samba. O passo no Unix é feito bem facilmente (usando o adduser por exemplo).
Adicionar um usuário existente ao banco de dados do Samba é uma questão de rodar o comando smbpasswd -a usuário; esse comando pergunta pela senha interativamente.
Um usuário pode ser apagado com o comando smbpasswd -x usuário. Uma conta Samba também pode ser temporariamente desabilitada (com smbpasswd -d usuário) e reabilitada mais tarde (com smbpasswd -e usuário).

11.5.2. Cliente Samba

Os recursos do cliente no Samba permitem que uma máquina Linux acesse compartilhamentos Windows e impressoras compartilhadas. Os programas necessários estão disponíveis nos pacotes cifs-utils e smbclient.

11.5.2.1. O Programa smbclient

O programa smbclient consulta servidores SMB. Ele aceita a opção -U usuário, para conectar em um servidor sob uma identidade específica. smbclient //servidor/compartilhamento acessa o compartilhamento de maneira interativa, similar a linha de comando de um cliente FTP. smbclient -L servidor lista todos os compartilhamentos disponíveis (e visíveis) em um servidor.

11.5.2.2. Montando Compartilhamentos Windows

O comando mount permite montar um compartilhamento Windows na hierarquia do sistema de arquivos do Linux (com a ajuda do mount.cifs fornecido pelo cifs-utils).

Exemplo 11.24. Montando um compartilhamento Windows

mount -t cifs //arrakis/shared /shared \
      -o credentials=/etc/smb-credentials
O arquivo /etc/smb-credentials (o qual não deve ser legível pelos usuários) tem o seguinte formato:
username = user
password = password
Outras opções podem ser especificadas pela linha de comando; sua lista completa está disponível na página de manual mount.cifs(1). Duas opções em particular podem ser interessantes: uid e gid permitem forçar o dono e grupo dos arquivos disponíveis na montagem, de modo a não restringir o acesso para o root.
A montagem de um compartilhamento Windows também pode ser configurada em /etc/fstab:
//servidor/shared /shared cifs credentials=/etc/smb-credentials
Desmontando um compartilhamento SMB/CIFS é feito com o comando padrão umount.

11.5.2.3. Imprimindo com uma Impressora Compartilhada

CUPS é uma solução elegante para impressão a partir de uma estação de trabalho Linux em uma impressora compartilhada por uma máquina Windows. Quando o smbclient está instalado, o CUPS permite a instalação de impressoras Windows compartilhadas automaticamente.
Aqui estão os passos necessários:
  • Entre na interface de configuração do CUPS: http://localhost:631/admin
  • Clique em "Adicionar Impressora".
  • Selecione o dispositivo de impressora, escolha “Impressora Windows via SAMBA”.
  • Insira a conexão URI para a impressora de rede. Deve se parecer com o seguinte:
    smb://usuário:senha@servidor/impressora.
  • Digite o nome que irá identificar de maneira única essa impressora. Em seguida digite a descrição e localização da impressora. Essas são as cadeias de caracteres que irão ser mostradas aos usuários finais para ajudá-los a identificar as impressoras.
  • Indicar o fabricante/modelo da impressora, ou fornecer diretamente um arquivo funcional de descrição da impressora (PPD).
Voilà, a impressora está operacional!