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 3, smbd e nmbd.

11.5.1.1. Configurando com debconf

O pacote realiza uma configuração mínima baseado nas respostas de poucas perguntas do Debconf, feitas durante a instalação inicial; essa etapa da configuração pode ser refeita mais tarde com dpkg-reconfigure samba-common samba.
O primeiro pedaço de informação necessária é o nome do grupo de trabalho ao qual o servidor Samba irá pertencer (a resposta é FALCOTNET no nosso caso). Outra questão pergunta se as senhas devem ser criptografadas. A resposta é que elas devem ser, porque isso é um requerimento para os cliente Windows mais recentes; além do mais, isso aumenta a segurança. A contraparte é que isso requer que o gerenciamento de senhas do Samba sejam feitos separadamente das senhas do Unix.
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.
A última questão é sobre quando os servidores devem ser iniciados pelo inetd ou como stand-alone daemons. Usar inetd só é interessante quando Samba é usado raramente; os administradores da Falcot então escolheram stand-alone daemons.

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

# server string is the equivalent of the NT Description field
   server string = %h server (Samba %v)

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

[...]

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

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html 
# in the samba-doc package for details.
   security = user 2

# You may wish to use password encryption.  See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
   encrypt passwords = true

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
   passdb backend = tdbsam

[...]

########## Printing ##########

# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
   load printers = yes 3

# lpr(ng) printing. You may wish to override the location of the
# printcap file
;   printing = bsd
;   printcap name = /etc/printcap

# CUPS printing.  See also the cupsaddsmb(8) manpage in the
# cups-client package.
   printing = cups 4
   printcap name = cups

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.

3

Diz ao Samba para compartilhar automaticamente todas as impressoras locais que existem na configuração do CUPS. Restringir o acesso a essas impressoras também é possível, adicionando as seções apropriadas.

4

Especifica o sistema de impressão em uso; no nosso caso, CUPS.
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.1.2.3. Trocando a um controlador de domínio
Essa seção documenta como os administradores da Falcot foram ainda mais além, tornando o servidor Samba em um controlador de domínio fornecendo perfis móveis (o que permite aos usuários encontrar seus desktop não importando em qual máquinas eles se conectam).
Eles primeiro adicionaram algumas diretivas extras na seção [global] do arquivo de configuração:
domain logons = yes              1
preferred master = yes           
logon path = \\%L\profiles\%U    2
logon script = scripts/logon.bat 3

1

Ativando a funcionalidade de controle de domínio.

2

Especifica a localização dos diretórios "home" dos usuários. Estes são armazenados em um compartilhamento dedicado, o qual permite habilitar opções específicas (em particular, profile acls, um requisito para compatibilidade com Windows 2000, XP e Vista).

3

Especifica o script batch (não-interativo) que é executado em uma máquina Windows cliente toda vez que uma sessão é aberta. Neste caso, /var/lib/samba/netlogon/scripts/logon.bat. O script precisa estar no formato DOS, onde as linhas são separadas pelo caractere "carriage-return" e o caractere "line-feed"; se o arquivo foi criado no Linux, executar unix2dos irá convertê-lo.
Os comandos usados com mais frequência nesses scripts permitem a criação automática dos drives de rede e sincronização do horário do sistema.

Exemplo 11.27. O arquivo logon.bat

net time \\ARRAKIS /set /yes
net use H: /home
net use U: \\ARRAKIS\utils
Dois compartilhamentos extras, e seus diretórios associados, também foram criados:
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no

[profiles]
comment = Profile Share
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
Os diretórios "home" para todos os usuários devem também ser criados (como /var/lib/samba/profiles/usuário), e cada um deles tem que pertencer ao usuário correspondente.

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.28. 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!