Android

Como instalar e configurar um servidor nfs no ubuntu 18.04

¿Cómo Instalar NFS en Ubuntu Server 18.04 LTS?

¿Cómo Instalar NFS en Ubuntu Server 18.04 LTS?

Índice:

Anonim

O Network File System (NFS) é um protocolo de sistema de arquivos distribuído que permite compartilhar diretórios remotos em uma rede. Com o NFS, você pode montar diretórios remotos no sistema e trabalhar com os arquivos na máquina remota como se fossem arquivos locais.

O protocolo NFS não é criptografado por padrão e, ao contrário do Samba, ele não fornece autenticação do usuário. O acesso ao servidor é restrito pelos endereços IP ou nomes de host dos clientes.

Neste tutorial, veremos como configurar um servidor NFSv4 no Ubuntu 18.04. Também mostraremos como montar um sistema de arquivos NFS no cliente.

Pré-requisitos

Este exemplo pressupõe que você tenha um servidor executando o Ubuntu 18.04 e outro executando qualquer outra distribuição Linux. O servidor e os clientes devem poder se comunicar através de uma rede privada. Se o seu provedor de hospedagem não oferecer endereços IP privados, você poderá usar os endereços IP públicos e configurar o firewall do servidor para permitir o tráfego na porta 2049 apenas de fontes confiáveis.

As máquinas neste exemplo têm os seguintes IPs:

NFS Server IP: 192.168.33.10 NFS Clients IPs: From the 192.168.33.0/24 range

Configurar o servidor NFS

Começaremos instalando e configurando o servidor NFS.

Instalando o servidor NFS

Atualize o índice de pacotes e instale o pacote do servidor NFS:

sudo apt update sudo apt install nfs-kernel-server

Depois que a instalação estiver concluída, os serviços NFS serão iniciados automaticamente.

Por padrão, no Ubuntu 18.04 NFS versão 2 está desativado. As versões 3 e 4 estão ativadas. Você pode verificar isso executando o seguinte comando cat :

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

O NFSv2 é bem antigo agora e não há motivo para ativá-lo.

As opções de configuração do servidor NFS são definidas nos arquivos /etc/default/nfs-kernel-server e /etc/default/nfs-common . As configurações padrão são suficientes no nosso caso.

Criando os sistemas de arquivos

Ao configurar um servidor NFSv4, é uma boa prática usar um diretório raiz NFS global e vincular a montagem dos diretórios reais ao ponto de montagem do compartilhamento. Neste exemplo, usaremos o diretório /srv/nfs4 como raiz do NFS.

Compartilharemos dois diretórios ( /var/www e /opt/backups ), com diferentes configurações, para explicar melhor como as montagens NFS podem ser configuradas.

O /var/www/ pertence ao usuário e ao grupo www-data e /opt/backups pertence ao root .

Crie o sistema de arquivos de exportação usando o comando mkdir :

sudo mkdir -p /srv/nfs4/backups sudo mkdir -p /srv/nfs4/www

Monte os diretórios reais:

sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www

Para tornar as montagens de ligação permanentes, abra o arquivo /etc/fstab :

sudo nano /etc/fstab

e adicione as seguintes linhas:

/ etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Exportando os sistemas de arquivos

A próxima etapa é definir os sistemas de arquivos que serão exportados pelo servidor NFS, as opções de compartilhamento e os clientes com permissão para acessar esses sistemas de arquivos. Para fazer isso, abra o arquivo /etc/exports :

sudo nano /etc/exports O arquivo /etc/exports também contém comentários que descrevem como exportar um diretório.

No nosso caso, precisamos exportar os diretórios www e backups e permitir o acesso somente de clientes na rede 192.168.33.0/24 :

/ etc / exportações

/srv/nfs4 192.168.33.0/24(rw, sync, no_subtree_check, crossmnt, fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro, sync, no_subtree_check) 192.168.33.3(rw, sync, no_subtree_check) /srv/nfs4/www 192.168.33.110(rw, sync, no_subtree_check)

A primeira linha contém fsid=0 que define o diretório raiz do NFS /srv/nfs . O acesso neste volume NFS é permitido apenas aos clientes da sub-rede 192.168.33.0/24 . A opção crossmnt é necessária para compartilhar diretórios que são subdiretórios de um diretório exportado.

Na segunda linha, mostra como especificar várias regras de exportação para um sistema de arquivos. Ele exporta o diretório /srv/nfs4/backups e permite apenas acesso de leitura a todo o intervalo 192.168.33.0/24 e acesso de leitura e gravação ao 192.168.33.3 . A opção de sync informa ao NFS para gravar as alterações no disco antes de responder.

A última linha deve ser auto-explicativa. Para obter mais informações sobre todas as opções disponíveis, digite man exports em seu terminal.

Salve o arquivo e exporte os compartilhamentos:

sudo exportfs -ra

Você precisa executar o comando acima sempre que modificar o arquivo /etc/exports . Se houver algum erro ou aviso, eles serão mostrados no terminal.

Para visualizar as exportações ativas atuais e seu estado, use:

sudo exportfs -v

A saída incluirá todos os compartilhamentos com suas opções. Como você pode ver, também existem opções que não definimos no arquivo /etc/exports . Essas são as opções padrão e, se você quiser alterá-las, precisará definir explicitamente essas opções.

/srv/nfs4/backups 192.168.33.3(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4 192.168.33.0/24(rw, wdelay, crossmnt, root_squash, no_subtree_check, fsid=0, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/backups 192.168.33.0/24(ro, wdelay, root_squash, no_subtree_check, sec=sys, ro, secure, root_squash, no_all_squash)

No Ubuntu, root_squash é ativado por padrão. Essa é uma das opções mais importantes relacionadas à segurança do NFS. Isso evita que os usuários root conectados dos clientes tenham privilégios root nos compartilhamentos montados. Ele nogroup UID e o GID raiz para nobody / nogroup UID / GID .

Para que os usuários nas máquinas clientes tenham acesso, o NFS espera que os IDs de usuário e grupo do cliente correspondam aos do servidor. Outra opção é usar o recurso de mapeamento de id do NFSv4 que converte os IDs de usuário e grupo em nomes e vice-versa.

É isso aí. Neste ponto, você configurou um servidor NFS no seu servidor Ubuntu. Agora você pode passar para a próxima etapa, configurar os clientes e conectar-se ao servidor NFS.

Configuração de firewall

Supondo que você esteja usando o UFW para gerenciar seu firewall e permitir o acesso a partir da sub-rede 192.168.33.0/24 é necessário executar o seguinte comando:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Para verificar a alteração, execute:

sudo ufw status

A saída deve mostrar que o tráfego na porta 2049 é permitido:

To Action From -- ------ ---- 2049 ALLOW 192.168.33.0/24 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6)

Configurar os clientes NFS

Agora que o servidor NFS está configurado e os compartilhamentos são exportados, a próxima etapa configura os clientes e monta os sistemas de arquivos remotos.

Você também pode montar o compartilhamento NFS em máquinas macOS e Windows, mas focaremos nos sistemas Linux.

Instalando o cliente NFS

Nas máquinas clientes, precisamos instalar apenas as ferramentas necessárias para montar um sistema de arquivos NFS remoto.

  • Instale o cliente NFS no Debian e Ubuntu

    O nome do pacote que inclui programas para montar sistemas de arquivos NFS em distribuições baseadas no Debian é nfs-common . Para instalá-lo, execute:

    sudo apt update sudo apt install nfs-common

    Instale o cliente NFS no CentOS e Fedora

    No Red Hat e seus derivados, instale o pacote nfs-utils :

    sudo yum install nfs-utils

Montando Sistemas de Arquivos

Trabalharemos na máquina cliente com IP 192.168.33.110 que possui acesso de leitura e gravação ao sistema de arquivos /srv/nfs4/www e acesso somente leitura ao sistema de arquivos /srv/nfs4/backups .

Crie dois novos diretórios para os pontos de montagem. Você pode criar esses diretórios em qualquer local que desejar.

sudo mkdir -p /backups sudo mkdir -p /srv/www

Monte os sistemas de arquivos exportados com o comando mount :

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

Onde 192.168.33.10 é o IP do servidor NFS. Você também pode usar o nome do host em vez do endereço IP, mas ele precisa ser resolvido pela máquina cliente. Isso geralmente é feito mapeando o nome do host para o IP no arquivo /etc/hosts .

Ao montar um sistema de arquivos NFSv4, você precisa omitir o diretório raiz do NFS; portanto, em vez de /srv/nfs4/backups você precisa usar /backups .

Verifique se os sistemas de arquivos remotos foram montados com sucesso usando o comando mount ou df :

df -h

O comando imprimirá todos os sistemas de arquivos montados. As duas últimas linhas são os compartilhamentos montados:

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% / devtmpfs 236M 0 236M 0% /dev tmpfs 244M 0 244M 0% /dev/shm tmpfs 244M 4.5M 240M 2% /run tmpfs 244M 0 244M 0% /sys/fs/cgroup /dev/sda2 1014M 87M 928M 9% /boot tmpfs 49M 0 49M 0% /run/user/1000 192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www

Para tornar as montagens permanentes na reinicialização, abra o arquivo /etc/fstab :

sudo nano /etc/fstab

e adicione as seguintes linhas:

/ etc / fstab

192.168.33.10:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.10:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

Para obter mais informações sobre as opções disponíveis ao montar um sistema de arquivos NFS, digite man nfs no seu terminal.

Outra opção para montar os sistemas de arquivos remotos é usar a ferramenta autofs ou criar uma unidade systemd.

Testando o acesso NFS

Vamos testar o acesso aos compartilhamentos criando um novo arquivo para cada um deles.

Primeiro, tente criar um arquivo de teste no diretório /backups usando o comando touch :

sudo touch /backups/test.txt

O sistema de arquivos /backup é exportado como somente leitura e conforme o esperado, você verá uma mensagem de erro Permission denied :

touch: cannot touch '/backups/test': Permission denied

Em seguida, tente criar um arquivo de teste para o diretório /srv/www como raiz usando o comando sudo :

sudo touch /srv/www/test.txt

Mais uma vez, você verá a mensagem Permission denied .

touch: cannot touch '/srv/www': Permission denied

Supondo que você tenha um uso de www-data na máquina cliente com o mesmo UID e GID do servidor remoto (que deve ser o caso se, por exemplo, você instalou o nginx nas duas máquinas), você pode testar para criar um arquivo como usuário www-data com:

sudo -u www-data touch /srv/www/test.txt

O comando não mostrará saída, o que significa que o arquivo foi criado com sucesso.

Para verificar, liste os arquivos no diretório /srv/www :

ls -la /srv/www

A saída deve mostrar o arquivo recém-criado:

drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html -rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt

Desmontando o sistema de arquivos NFS

sudo umount /backups

Se o ponto de montagem estiver definido no arquivo /etc/fstab , remova a linha ou comente-a adicionando # no início da linha.

Conclusão

Neste tutorial, mostramos como configurar um servidor NFS e como montar os sistemas de arquivos remotos nas máquinas clientes. Se você estiver implementando o NFS na produção e compartilhando dados confidenciais, é uma boa ideia habilitar a autenticação kerberos.

Como alternativa ao NFS, você pode usar o SSHFS para montar diretórios remotos em uma conexão SSH. O SSHFS é criptografado por padrão e muito mais fácil de configurar e usar.

Sinta-se livre para deixar um comentário se tiver alguma dúvida.

ubuntu nfs mount terminal