Linux

Como instalar e configurar um servidor NFS no Ubuntu 20.04

Como instalar e configurar um servidor NFS no Ubuntu 20.04

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

Por padrão, o protocolo NFS não é criptografado e não fornece autenticação do usuário. O acesso ao servidor é restrito pelos endereços IP ou nomes de host do cliente.

Este artigo explica como configurar um servidor NFSv4 no Ubuntu 20.04. Também mostraremos como montar um sistema de arquivos NFS na máquina cliente.

Pré-requisitos #

Usaremos duas máquinas, uma executando o Ubuntu 20.04, que atuará como um servidor NFS, e outro executando qualquer outra distribuição Linux na qual iremos montar o compartilhamento. O servidor e os clientes devem ser capazes de se comunicar através de uma rede privada. Você pode usar 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:

IP do servidor NFS: 192.168.33.10 IPs de clientes NFS: a partir do 192.168.33.Intervalo 0/24 

Configure o NFS Server #

O primeiro passo é configurar o servidor NFS. Vamos instalar os pacotes necessários, criar e exportar os diretórios NFS e configurar o firewall.

Instalando o servidor NFS #

O pacote do servidor NFS fornece suporte de espaço do usuário necessário para executar o servidor kernel NFS. Para instalar o pacote, execute:

atualização do apt sudosudo apt install nfs-kernel-server

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

No Ubuntu 20.04, NFS versão 2 está desabilitado. As versões 3 e 4 estão ativadas. Você pode verificar isso executando o seguinte gato comando:

sudo cat / proc / fs / nfsd / versões
-2 +3 +4 +4.1 +4.2 

NFSv2 é muito antigo agora, e não há razão para habilitá-lo.

A configuração do servidor NFS é definida em / etc / default / nfs-kernel-server e / etc / default / nfs-common arquivos. As configurações padrão são suficientes para a maioria das situações.

Criando os sistemas de arquivos #

O servidor NFSv4 usa um diretório raiz global e os diretórios exportados são relativos a este diretório. Você pode vincular o ponto de montagem de compartilhamento aos diretórios que deseja exportar usando montagens de ligação.

Neste exemplo, vamos definir o / srv / nfs4 diretório como raiz NFS. Para explicar melhor como as montagens NFS podem ser configuradas, vamos compartilhar dois diretórios (/ var / www e / opt / backups) com diferentes definições de configuração. O / var / www / é propriedade do usuário www-data, e / opt / backups É de propriedade de raiz.

Primeiro crie o diretório raiz e os pontos de montagem compartilhados:

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

Vincule a montagem dos diretórios aos pontos de montagem de compartilhamento:

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

Para tornar as montagens de ligação permanentes durante as reinicializações, abra o / etc / fstab Arquivo:

sudo nano / etc / fstab

e adicione as seguintes linhas:

/ etc / fstab
/ opt / backups / srv / nfs4 / backups nenhum vincular 0 0 / var / www / srv / nfs4 / www nenhum vincular 0 0 

Exportando os sistemas de arquivos #

A próxima etapa é adicionar os sistemas de arquivos que serão exportados e os clientes com permissão para acessar esses compartilhamentos para o / etc / exports Arquivo.

Cada linha para um sistema de arquivos exportado tem o seguinte formato:

exportar host (opções) 

Onde exportar é o diretório exportado, hospedeiro é um nome de host ou endereço / intervalo IP que pode acessar a exportação e opções são as opções de host.

Abra o / etc / exports arquivo e adicione as seguintes linhas:

sudo nano / etc / exports
/ etc / exports
/ 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, sincronizar, no_subtree_check) / srv / nfs4 / www 192.168.33.20 (rw, sync, no_subtree_check) 

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

A segunda linha mostra como especificar várias regras de exportação para um sistema de arquivos. O acesso de leitura é permitido a todo 192.168.33.0/24 intervalo e acesso de leitura e gravação apenas para o 192.168.33.3 endereço de IP. O sincronizar opção diz ao NFS para gravar as alterações no disco antes de responder.

A última linha é autoexplicativa. Para obter mais informações sobre todas as opções disponíveis, digite homem exporta no seu terminal.

Salve o arquivo e exporte os compartilhamentos:

sudo exportfs -ar

Você precisa executar o comando acima cada vez que modificar o / etc / exports Arquivo. Se houver algum erro ou aviso, ele será mostrado no terminal.

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

sudo exportfs -v

A saída incluirá todas as ações com suas opções. Como você pode ver, também existem opções que não definimos no / etc / exports Arquivo. Essas são opções padrão e se você quiser alterá-las você 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.20 (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 está habilitado por padrão. Esta é uma das opções mais importantes em relação à segurança NFS. Impede que usuários root conectados a partir de clientes tenham privilégios de root nos compartilhamentos montados, mapeando root UID e GID para ninguém/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 traduz IDs de usuários e grupos em nomes e vice-versa.

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

Configuração de firewall #

Se você estiver instalando o Jenkins em um servidor Ubuntu remoto protegido por um firewall, será necessário habilitar o tráfego na porta NFS:

sudo ufw permitir de 192.168.33.0/24 para qualquer porta nfs

Verifique a mudança:

sudo ufw status

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

Para a ação de - ------ ---- 2049 PERMITIR 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 é configurar os clientes e montar os sistemas de arquivos remotos.

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

Instalando o cliente NFS #

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

Montagem de sistemas de arquivos #

Vamos trabalhar na máquina cliente com IP 192.168.33.20, que tem acesso de leitura e gravação ao / srv / nfs4 / www sistema de arquivos e acesso somente leitura ao / srv / nfs4 / backups sistema de arquivo.

Crie dois novos diretórios para os pontos de montagem:

sudo mkdir -p / backupssudo mkdir -p / srv / www

Você pode criar os diretórios em qualquer local que desejar.

Monte os sistemas de arquivos exportados com o monte comando:

sudo mount -t nfs -o vers = 4 192.168.33.10: / backups / backupssudo 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 precisa ser resolvido pela máquina cliente. Isso geralmente é feito mapeando o nome do host para o IP no / etc / hosts Arquivo.

Ao montar um sistema de arquivos NFSv4, omita o diretório raiz NFS. Usar / backups, em vez de / srv / nfs4 / backups.

Verifique se os sistemas de arquivos remotos estão montados com sucesso usando a montagem ou df comando:

df -h

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

Tamanho do sistema de arquivos usado% de uso disponível Montado em udev 951M 0 951M 0% / dev tmpfs 199M 676K 199M 1% / run / dev / sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% / dev / shm tmpfs 5.0M 0 5.0M 0% / run / lock tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / boot tmpfs 199M 0 199M 0% / run / user / 1000 192.168.33.10: / backups 124G 2.8G 115G 3% / backups 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www

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

sudo nano / etc / fstab
/ etc / fstab
192.168.33.10: / backups / backups padrões nfs, timeo = 900, retrans = 5, _netdev 0 0 192.168.33.10: / www / srv / www nfs padrões, timeo = 900, retrans = 5, _netdev 0 0 

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

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

Teste de acesso NFS #

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

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

sudo touch / backups / teste.TXT

O /cópia de segurança sistema de arquivos é exportado como somente leitura e conforme o esperado, você verá um Permissão negada mensagem de erro:

toque: não é possível tocar em '/ backups / teste': permissão negada 

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

sudo touch / srv / www / test.TXT

Novamente, você verá Permissão negada mensagem.

toque: não é possível tocar em '/ srv / www': permissão negada 

Se você se lembra, o / var / www diretório pertence ao www-data usuário, e este compartilhamento tem root_squash conjunto de opções que mapeia o usuário root para o ninguém usuário e nogroup grupo que não tem permissões de gravação para o compartilhamento remoto.

Supondo que você tenha um www-data usar na máquina cliente com o mesmo UID e GID como no servidor remoto (que deve ser o caso se, por exemplo, você instalou nginx em ambas as máquinas), você pode tentar criar um arquivo como usuário www-data:

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

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

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

ls -la / srv / www

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

drwxr-xr-x 3 www-data www-data 4096 10 de abril 22:18 . drwxr-xr-x 3 root root 4096 Abr 10 22: 29… -rw-r - r-- 1 www-data www-data 0 Abr 10 21:58 index.html -rw-r - r-- 1 www-data www-data 0 abril 10 22:18 teste.TXT 

Desmontagem do sistema de arquivos NFS #

Se o compartilhamento NFS remoto não for mais necessário, você pode desmontá-lo como qualquer outro sistema de arquivos montado usando o umount comando.

Por exemplo, para desmontar o /cópia de segurança compartilhar, você executaria:

sudo umount / backups

Se o ponto de montagem for definido no / etc / fstab arquivo, certifique-se de remover a linha ou comentar adicionando # no começo da linha.

Conclusão #

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

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

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

Top jogos do Oculus App Lab
Se você é proprietário de um fone de ouvido Oculus, deve estar informado sobre o carregamento lateral. Sideload é o processo de instalação de conteúdo...
Os 10 melhores jogos para jogar no Ubuntu
A plataforma Windows tem sido uma das plataformas dominantes para jogos devido à grande porcentagem de jogos que estão sendo desenvolvidos hoje para o...
5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...