Como instalar e configurar servidor Samba CentOS com SELinux e Firewall (iptables)

Compartilhar uma pasta do Linux usando Samba é uma tarefa de extrema utilidade e relativamente simples, porém com o SELinux habilitado, precisamos dizer para ele que o Samba pode compartilhar aquele recurso na rede.

Este post dedica-se a mostrar como instalar, configurar o Samba e compartilhar uma pasta em uma instalação CentOS com Firewall (iptables) e SELinux habilitados.

  • Instale o pacote Samba com o comando abaixo:
  • yum install samba
  • Libera as portas de acesso do Samba, execute o comando abaixo:
  • system-config-securitylevel-tui

    Uma tela como esta a seguir, deve ser exibida, nela use o TAB para selecionar Personalizar e pressione [Enter]:
    Liberar Samba 1 - system-config-securitylevel-tui

    Ao selecionar Personalizar você deve estar em uma tela como esta abaixo, nela use o TAB para chegar até a opção Samba no campo Permitir entrada, depois use a Barra de Espaço para marcar Samba:

    Liberar Samba 2 - system-config-securitylevel-tui

    Para sair e salvar, use TAB e selecione OK, que você retornará para a tela anterior e nela selecione OK novamente para confirmar a configuração e sair.

  • Configurar para iniciar automaticamente o servidor Samba, para tal execute:
  • chkconfig --level 2345 smb on
  • Agora vamos definir os parâmetros workgroup, server string e security este último já deve estar correto no arquivo de configuração do Samba. Para isto execute o comando abaixo:
  • vi /etc/samba/smb.conf

    Os valores dos parâmetros citados devem ficar parecidos com estes abaixo, claro com exceção para o workgroup, onde você deve inserir o nome do seu grupo de trabalho e o server string a descrição do servidor:

    workgroup = COMPOSTA
    server string = Servidor Loja 90
    security = user

    Para sair do vi e salvar, use :wq.

  • Continuando a configuração, vamos criar uma pasta para compartilhar, no exemplo a pasta chama-se path_comum, você pode usar o nome que desejar:
  • mkdir /path_comum
  • Agora crie um usuário para acessar esta pasta, este usuário e senha serão utilizados para permitir o acesso ao compartilhamento quando este for acessado pela rede:
    adduser -M zanthus

    Defina uma senha para o sistema:

    passwd zanthus

    Defina uma senha para o Samba, sugiro usar a mesma do sistema:

    smbpasswd -a zanthus
  • Ajustando algumas permissões da pasta no sistema de arquivos:
  • chmod -Rf 765 /path_comum
    chown -R zanthus.zanthus /path_comum
  • Agora permissões do SELinux:
  • Grava a configuração do contexto:

    semanage fcontext -a -t samba_share_t "/path_comum(/.*)?"

    Faz valer as regras imediatamente:

    chcon -t samba_share_t /path_comum/
  • Volte a editar o arquivo de configuração do Samba para incluir no final do arquivo os parâmetros de compartilhamento da pasta. Insira o conteudo abaixo no final do arquivo smb.conf:

    Para editar utilize:

    vi /etc/samba/smb.conf

    Insira as linhas no final do arquivo:

    [path_comum]
            comment = Area comum dos PDVs Zanthus
            path = /path_comum
            writeable = yes
            valid users = zanthus
            public = no
            printable = no
            create mask = 0765
  • Por fim, inicie o serviço do Samba:
  • service smb start

Feito, se tudo correu bem você deve estar com um servidor Samba funcionando de modo seguro com um compartilhamento liberado para um determinado usuário.

Vídeo True Post.
Assista ao vídeo que testa este tutorial.

15 comentários em “Como instalar e configurar servidor Samba CentOS com SELinux e Firewall (iptables)

  1. boa noite o seguinte comando system-config-securitylevel-tui nao funcionou no centos 6.2, sera que ele mudou de nome?

    desde ja agradeço pela atenção.

    Curtir

  2. Bom eu fiz tudo certo aqui no meu pc a unica coisa que fiz diferente foi o nome da pasta que não uei o mesmo nome. . mas quando vou da dar o comando “service smb start” ae o meu vem uma mensagem em baixo escrito “Iniciando o serviços SMB:” e só não faz mais nada eu vi no video que depois que vc deu o comando ele carro 2 mensagens no meu aqui não..vc sabe o que poderia ser isso?

    Curtir

    1. A principio não há problema, o serviço que você viu iniciar junto com o SMB no vídeo é o NMB, ele resolve os nomes das máquinas, o netbios name.

      Curtir

  3. Bom eu consegui configurar tudo certo, mas para eu poder entra no servidor eu estou tendo que colocar o ip que carrego o centos, por exemplo, “\192.168.1.5xxx”. eu gostaria de saber se tem algo que posso editar aqui que eu mudu em vez de colocar o ip entrar com um nome por exemplo “\servidorxxx”. Muito obrigado pela atenção

    Curtir

    1. Com certeza já encontrou a solução. Mas para outros que venham a fazer consultas futuras, tem duas maneiras: DNS local e arquivo hosts.
      Não lhe conheço Gabriel, mas aprecio muito e agradeço suas contribuições com o conhecimento em linux.

      Curtir

      1. Obrigado por compartilhar.
        OFF Topic: Desculpe na demora pelo retorno, meus comentários estavam indo para o spam automaticamente!

        Curtir

  4. Fala Gabriel parabéns pelo post, fazia tempo que não criava um serve linux aqui e tava apanhando para fazer o path_comum funcionar olhei no google e por acaso achei seu post aqui e ajudou bastante

    um abraços Guirado

    Curtir

  5. Olá Gabriel. Mto bom o seu post. Me deixa mais claro. Estou instalando em minha farmácia um dell t110 com o centos 6.3. Minha rede tem dois terminais windows onde terei que acessar a pasta do sistema,que é java. e gostaria de liberar também para os Pc’s a pasta /home. Para que tenham direito de gravar arquivos nas mesmas. Deveria editar dois arquivos um com [path_home] e a outra [path_meu-sistema].. Claro que com as respectivas linhas abaixo..

    Curtir

    1. Ola André, vou tentar ajudar…

      Para compartilhar as pastas de usuários /home/nome_usuario basta você deixar a sessão [homes] do /etc/samba/smb.conf como abaixo, mas não se esquece de aplicar a regra do SELinux em todas as pastas dos usuários, conforme este meu post acima.

      Usando o homes, todo novo usuário automaticamente terá sua pasta compartilhada.

      Trecho do /etc/samba/smb.conf

      [homes]
              comment = Home Directories
              writable = yes
              valid users = %S
      

      Para o compartilhamento do seu programa, siga o exemplo para o “path_comum” como está no artigo que você deve ser feliz! 🙂

      Valeu!

      Curtir

      1. Compreendi a configuração sim Gabriel.
        Então fazendo da maneira proposta, todos os pc´s que se conectarem na rede terao acesso a pasta (/home/nome_usu) & (/home/sistema)? Ou a cada nova maquina conectada ao sistema teria que criar um novo usuário no samba? Essa seria uma das coisas que ainda não ficarao claras. Tipo, se um dia trazer um notebbok para trabalhar, tenho que acessar o servidor para criar um novo usuário samba para o notebook que o notebook tenha acesso? Obrigado pela atenção!! 🙂

        Curtir

      2. Ola André, seu pensamento está correto quanto ao usuário, ou seja, para acessar é necessário ter um usuário e senha no servidor. Um mesmo usuário pode se conectar de mais de um computador/notebook simultaneamente, assim sua conta é por usuário e não por computador/notebook.

        Para visitantes, você pode ter um usuário “comum” para todos, só para não ter que criar um novo sempre que um novo visitante aparecer.

        Espero ter ajudado e um feliz 2015 pra ti!

        Curtir

  6. Olá Gabriel, ótimo seu post me ajudou muito. Fiz tudo certinho, porém a pasta fica inacessível, ou seja, a pasta lista mas não é possível acessá-la.

    Curtir

    1. Ola Jader, pelo que tu descreve, parece que temos algum problema com o SElinux você pode desabilitar ele totalmente para efeito de teste. veja como:

      editar o arquivo /etc/selinux/config e colocar o parâmetro “SELINUX=” para “SELINUX=disabled”.

      reinicie e volte a testar … se funcionar algo deu errado nos comandos :

      semanage fcontext -a -t samba_share_t “/path_comum(/.*)?”

      OU

      chcon -t samba_share_t /path_comum/

      ** observe que estes são exemplos, você deve alterar o caminho (pasta) para a sua.

      Valeu.

      Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s