Tabela de Conteúdos

3.9.1 Clientes Windows: Samba

A instalação de um servidor samba permite, entre outras funcionalidades, a partilha de ficheiros com sistemas Windows.

Instalação

root@server:~# apt-get install samba

Configuração

Toda a configuração do serviço samba é feita no ficheiro /etc/samba/smb.conf.

Configuração global

/etc/samba/smb.conf
# [...]

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

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

# server string is the equivalent of the NT Description field
   server string = %h server

# [...]

Segurança

Por segurança, é possível limitar o acesso ao servidor samba a apenas alguns segmentos da rede. Assim, para garantir que o servidor de ficheiros só estará disponível para a rede local, são listadas as interfaces de rede do próprio sistema (lo) e da rede local (eth0), instruindo o serviço a aceitar ligações apenas por essas interfaces:

/etc/samba/smb.conf
# [...]

#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
    interfaces = 127.0.0.0/8 192.168.1.0/24

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself.  However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
    bind interfaces only = yes

# [...]

Deste modo, o serviço samba só aceitará ligações do próprio servidor através da interface lo (127.0.0.1/8) ou através da interface de rede eth0 (192.168.1.0/24).

Partilha por utilizador

A configuração por omissão do samba partilha toda a estrutura de diretoria /home de cada utilizador. Isto significa que todos os ficheiros, tais como os ficheiros de configuração e os ficheiros da diretoria Maildir (onde estão todas as mensagens de email) estariam também partilhados, o que não é desejável. Por isso será criada uma diretoria exclusivamente para as partilhas samba dentro da home de cada utilizador. Para que a diretoria seja criada automaticamente quando for criado um novo utilizador, é adicionada à arborescência em /etc/skel, com direitos de acesso exclusivos para próprio utilizador:

root@server:~# mkdir /etc/skel/Documents; chmod 0700 /etc/skel/Documents

No entanto, a directoria de partilha deverá ser criada para cada utilizador já existente:

root@server:~# su - fribeiro -c 'mkdir ~/Documents; chmod 0700 ~/Documents'

Em seguida são definidos os parâmetros das partilhas dos utilizadores, indicando o caminho para a diretoria das partilhas individuais e permitindo o acesso em escrita:

/etc/samba/smb.conf
# [...]

#======================= Share Definitions =======================

[homes]
   comment = Home Directories
   path = /home/%S/Documents
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = no

# [...]

Criação de utilizadores

Deverão também ser criados os utilizadores e atribuídas as respetivas senhas na base de dados dos utilizadores do samba:

root@server:~# smbpasswd -a fribeiro
New SMB password:
Retype new SMB password:

Partilhas comuns

É possível definir também partilhas acessíveis a todos os utilizadores, criando um espaço comum de troca e armazenamento de ficheiros. Em primeiro lugar deve ser criada uma diretoria para o armazenamento de ficheiro. Essa diretoria dever ter direitos de acesso limitados ao utilizador e um grupo chamado nogroup:

root@server:~# mkdir -p /home/common/public
root@server:~# chgrp nogroup /home/common/public
root@server:~# chmod 0770 /home/common/public

Em seguida, deverá ser definida a partilha no ficheiro de configuração do samba, em que é definido o caminho para a diretoria de partilha, e que a máscara de criação de ficheiros e diretorias permitirá o acesso aos próprios utilizadores e ao grupo nogroup. Finalmente é forçada a criação de ficheiros no grupo nogroup para que os utilizadores possam aceder sem restrições a todos os ficheiros. Todas as alterações são feitas no ficheiro /etc/samba/smb.conf:

/etc/samba/smb.conf
# [...]

### public share ###

[public]
    comment =  Public Share
    path = /home/common/public
    public = yes
    browseable = yes
    writable = yes
    create mask = 0770
    directory mask = 0770
    force group = nogroup

# [...]

Reciclagem

Norma geral, quando apagamos um ficheiro no nosso computador, este fica é transferido para “Reciclagem”, podendo ser recuperado mais tarde. Tal não acontece normalmente nas partilhas de rede, onde os ficheiros apagados desaparecem imediatamente e para sempre.

O Samba permite simular a funcionalidade da “Reciclagem” nas partilhas de rede, podendo até manter várias versões dos ficheiros apagados.

Para ativar a “Reciclagem” na partilha da home de cada utilizador, basta a editar o ficheiro /etc/samba/smb.conf:

/etc/samba/smb.conf
# [...]

#======================= Share Definitions =======================

[homes]
   comment = Home Directories
   path = /home/%S/Documents
   browseable = no

   # Support for Shared Recycle Bin
   vfs object = recycle
      recycle:repository = @RecycleBin
      recycle:keeptree = yes
      recycle:versions = yes
      recycle:exclude = *.tmp, *.bak

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = no

# [...]

Nesta configuração, quando o utilizador apagar ficheiros, estes serão movidos para a pasta @RecycleBin, podendo ser recuperados se necessário. Compete depois ao utilizador esvaziar regularmente a “Reciclagem”.

Validação da configuração

A sintaxe do ficheiro de configuração deve ser verificada:

root@server:~# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[public]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# [...]

Caso apareça, a mensagem rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) pode ser ignorada.

Finalmente, reiniciar os serviços:

root@server:~# service smbd restart
root@server:~# service nmbd restart

Verificação

Num PC com um sistema operativo MS Windows deverá ser possível aceder às partilhas de ficheiros do servidor:

Autorização de acesso aos recursos partilhados com o Microsoft Windows

E o resultado final será:

Listagem de ficheiros partilhados com o Microsoft Windows

Referências