Configurando o Samba e configurando o FirewallD e o SELinux para permitir o compartilhamento de arquivos em clientes Linux/Windows - Parte 6
Como os computadores raramente funcionam como sistemas isolados, é de se esperar que, como administrador de sistema ou engenheiro, você saiba como configurar e manter uma rede com vários tipos de servidores.
Neste artigo e no próximo desta série abordaremos os fundamentos da configuração de servidores Samba e NFS com clientes Windows/Linux e Linux, respectivamente.
Este artigo certamente será útil se você precisar configurar servidores de arquivos em ambientes corporativos ou empresariais onde provavelmente encontrará diferentes sistemas operacionais e tipos de dispositivos.
Como você pode ler sobre o histórico e os aspectos técnicos do Samba e do NFS em toda a Internet, neste artigo e no próximo iremos direto ao assunto com o tópico em questão.
Passo 1: Instalando o Servidor Samba
Nosso ambiente de teste atual consiste em duas caixas RHEL 7 e uma máquina Windows 8, nesta ordem:
1. Samba / NFS server [box1 (RHEL 7): 192.168.0.18],
2. Samba client #1 [box2 (RHEL 7): 192.168.0.20]
3. Samba client #2 [Windows 8 machine: 192.168.0.106]
No box1, instale os seguintes pacotes:
yum update && yum install samba samba-client samba-common
Na caixa2:
yum update && yum install samba samba-client samba-common cifs-utils
Assim que a instalação for concluída, estamos prontos para configurar nosso compartilhamento.
Etapa 2: configurar o compartilhamento de arquivos por meio do Samba
Uma das razões pelas quais o Samba é tão relevante é porque ele fornece serviços de arquivo e impressão para clientes SMB/CIFS, o que faz com que esses clientes vejam o servidor como se fosse um Sistema Windows (devo admitir que tenho tendência a ficar um pouco emocionado ao escrever sobre este tópico, pois foi minha primeira configuração como novo administrador de sistema Linux há alguns anos).
Adicionar usuários do sistema e configurar permissões e propriedade
Para permitir a colaboração em grupo, criaremos um grupo chamado finance com dois usuários (user1 e user2) com o comando useradd e um diretório /finanças na caixa1.
Também mudaremos o proprietário do grupo deste diretório para finance e definiremos suas permissões para 0770 (permissões de leitura, gravação e execução para o proprietário e o proprietário do grupo):
groupadd finance
useradd user1
useradd user2
usermod -a -G finance user1
usermod -a -G finance user2
mkdir /finance
chmod 0770 /finance
chgrp finance /finance
Etapa 3: Configurando SELinux e Firewalld
Na preparação para configurar /finance como um compartilhamento Samba, precisaremos desabilitar o SELinux ou definir os valores de contexto booleano e de segurança apropriados como segue (caso contrário, o SELinux impedirá que os clientes acessem o compartilhamento):
setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
getsebool –a | grep samba_export
semanage fcontext –at samba_share_t "/finance(/.*)?"
restorecon /finance
Além disso, devemos garantir que o tráfego do Samba seja permitido pelo firewalld.
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
Etapa 4: configurar o compartilhamento Samba
Agora é hora de mergulhar no arquivo de configuração /etc/samba/smb.conf e adicionar a seção para nosso compartilhamento: queremos que os membros do grupo finance possam navegar pelo conteúdo de /finance e salvar / criar arquivos ou subdiretórios nele (que por padrão terão seus bits de permissão definidos como 0770 e finance será o proprietário do grupo):
[finance]
comment=Directory for collaboration of the company's finance team
browsable=yes
path=/finance
public=no
valid users=@finance
write list=@finance
writeable=yes
create mask=0770
Force create mode=0770
force group=finance
Salve o arquivo e teste-o com o utilitário testparm. Se houver algum erro, a saída do comando a seguir indicará o que você precisa corrigir. Caso contrário, será exibida uma revisão da configuração do seu servidor Samba:
Caso você queira adicionar outro compartilhamento aberto ao público (ou seja, sem qualquer tipo de autenticação), crie outra seção em /etc/samba/smb.conf e sob o nome do novo compartilhamento copie a seção acima , alterando apenas public=no para public=yes e não incluindo os usuários válidos e as diretivas da lista de gravação.
Etapa 5: Adicionar usuários do Samba
Em seguida, você precisará adicionar user1 e user2 como usuários do Samba. Para isso, você utilizará o comando smbpasswd, que interage com o banco de dados interno do Samba. Você será solicitado a inserir uma senha que usará posteriormente para se conectar ao compartilhamento:
smbpasswd -a user1
smbpasswd -a user2
Por fim, reinicie o Samba, ative o serviço para iniciar na inicialização e certifique-se de que o compartilhamento esteja realmente disponível para os clientes da rede:
systemctl start smb
systemctl enable smb
smbclient -L localhost –U user1
smbclient -L localhost –U user2
Neste ponto, o servidor de arquivos Samba foi instalado e configurado corretamente. Agora é hora de testar esta configuração em nossos clientes RHEL 7 e Windows 8.
Passo 6: Montando o compartilhamento Samba no Linux
Primeiro, certifique-se de que o compartilhamento Samba esteja acessível neste cliente:
smbclient –L 192.168.0.18 -U user2
(repita o comando acima para user1)
Como qualquer outra mídia de armazenamento, você pode montar (e posteriormente desmontar) esse compartilhamento de rede quando necessário:
mount //192.168.0.18/finance /media/samba -o username=user1
(onde /media/samba é um diretório existente)
ou permanentemente, adicionando a seguinte entrada no arquivo /etc/fstab:
//192.168.0.18/finance /media/samba cifs credentials=/media/samba/.smbcredentials,defaults 0 0
Onde o arquivo oculto /media/samba/.smbcredentials (cujas permissões e propriedade foram definidas como 600 e root:root, respectivamente) contém duas linhas que indicam o nome de usuário e a senha de uma conta que tem permissão para usar o compartilhamento:
username=user1
password=PasswordForUser1
Por fim, vamos criar um arquivo dentro de /finance e verificar as permissões e propriedade:
touch /media/samba/FileCreatedInRHELClient.txt
Como você pode ver, o arquivo foi criado com permissões 0770 e propriedade definida como user1:finance.
Etapa 7: montando o compartilhamento Samba no Windows
Para montar o compartilhamento Samba no Windows, vá para Meu PC e escolha Computador, depois Mapear unidade de rede. Em seguida, atribua uma letra para a unidade a ser mapeada e marque Conectar usando credenciais diferentes (as capturas de tela abaixo estão em espanhol, meu idioma nativo):
Finalmente, vamos criar um arquivo e verificar as permissões e propriedade:
ls -l /finance
Desta vez, o arquivo pertence a user2, pois essa é a conta que usamos para conectar-se a partir do cliente Windows.
Resumo
Neste artigo explicamos não apenas como configurar um servidor Samba e dois clientes usando sistemas operacionais diferentes, mas também como configurar o firewalld e o SELinux no servidor para permitir os recursos de colaboração de grupo desejados.
Por último, mas não menos importante, recomendo a leitura da página de manual on-line do smb.conf para explorar outras diretivas de configuração que podem ser mais adequadas ao seu caso do que o cenário descrito neste artigo.
Como sempre, fique à vontade para deixar um comentário usando o formulário abaixo se tiver algum comentário ou sugestão.