Uma das coisas que sempre considerei irracional no Linux, em pessoas que não precisam lidar com Windows, é para o quê usar SAMBA/CIFS.
Ruim de configurar, não se casa muito bem com Linux. E tem o NFS, que infelizmente não é lá muito melhor no quesito simplicidade (quando usando credenciais, necessitando de Kerberos), na verdade, consegue ser ainda pior, requerendo módulos de kernel que a distribuição as vezes não empacota.
Mas tem algo que todo usuário um pouco mais avançado conhece, e que todo servidor remoto que tem instalado por padrão: o SSH.
Sabia que você pode usar o SSH também como sistema de arquivos? Lhe apresento o SSHFS.
Basicamente, ele é um sistema de arquivos FUSE que permite usar o SFTP do SSH como um sistema de arquivo montado em uma pasta, como qualquer outro sistema de arquivos no Linux.
Configurar SSHFS
Este tutorial tem em mente usuários Gentoo, e o autofs talvez seja inútil em SystemD, pois ele tem seus próprios mecanismos de auto montagem.
Para usa-lo, instale o módulo FUSE na sua distribuição Linux preferida. No Gentoo, basta: emerge –ask -v net-fs/sshfs
Com isto, basta gerar o par de chaves para ser utilizado pelo sistema (lembre-se, esse é um tutorial de autofs, caso queira usar sshfs montado manualmente pelo usuário, basta usar sua chave atual ou gerar outra, mas use a pasta .ssh de seu usuário invés do root):
ssh-keygen -t ed25519 -C “email@email.com”
Não defina uma senha para esse arquivo se o objetivo for ajustar o autofs ou mesmo montar o compartilhamento remoto no boot do sistema.
Mova os dois arquivos (id_ed25519 e id_ed25519.pub) para a pasta .ssh do seu usuário root do PC local, que no Gentoo é /root/.ssh.
Servidor remoto
No seu sistema remoto, entre com o usuário ao qual você pretende usar para compartilhar arquivos (em sistemas domésticos, é o usuário que você faz tudo nele), crie o arquivo $HOME/.ssh/authorized_keys, e cole que o conteúdo do seu id_ed25519.pub. Se este arquivo já existir, basta colar em uma nova linha.
O SFTP já deve estar habilitado por padrão na configuração de seu servidor, nunca vi um que não estivesse, nem mesmo OpenBSD (até o dia que este artigo foi redigido), portanto além do escopo desse tutorial. Nada mais ser feito aqui.
Sistema local
De volta ao seu sistema, supondo que queira usar a pasta /mnt/Array como ponto de montagem local, teste se já consegue montar uma pasta remota em seu PC.
No comando abaixo, troque o nome do usuário antes do @ pelo o qual está com a chave pública do seu usuário, e após o @ pelo IP de sua máquina (neste exemplo, está sendo utilizado IPv6). Após o :, está o caminho da pasta remota que deseja tornar local em seu PC. Lembre que seu usuário remoto necessita ter acesso de leitura nessa pasta para a montagem funcionar.
fbugno@Wilhelm ~ $ sudo sshfs -o rw,allow_other,reconnect,transform_symlinks sshfs@[fdcd:79d:25ec:321::2]:/Array /mnt/Array/
fbugno@Wilhelm ~ $ ls /mnt/Array
Albuns Anime Backups bin Downloads EBooks Emuladores Series Vídeos
fbugno@Wilhelm ~ $ df /mnt/Array
Sist. Arq. Blocos de 1K Usado Disponível Uso% Montado em
sshfs@[fdcd:79d:25ec:321::2]:/Array 7813562368 5521922592 2282355296 71% /mnt/Array
Se não foi emitido erros, seus arquivos da pasta remota /Array (neste exemplo, sua pasta remota terá outro nome), os arquivos estarão disponíveis localmente em /mnt/Array.
Caso queira tornar mais fácil o uso pelo sistema inteiro desse monto de montagem, edite seu arquivo /etc/fstab adicionando mais uma linha ao final com seu servidor SSH:
/dev/nvme0n1p1 /boot vfat defaults,noatime 0 2
UUID=2c5b2315-859e-4631-bef9-6d4a10bf7ef6 / f2fs defaults,noatime 0 1
UUID=0f50815f-4e93-4476-99c3-2044d5656a9d none swap sw 0 0
sshfs@[fdcd:79d:25ec:321::2]:/Array /mnt/Array sshfs rw,allow_other,reconnect,transform_symlinks,IdentityFile=/root/.ssh/id_ed25519,noauto 0 0
Assim será possível montar a parta remota apenas com o comando mount /mnt/Array.
Autofs
O primeiro passo é instalar o autofs:
emerge -av autofs
E adicionar na inicialização do sistema.
rc-update add autofs default
Na configuração do autofs, abra o arquivo /etc/autofs/auto.master e adicione o seguinte:
/- /etc/autofs/auto.sshfs --timeout=30
Então, crie o arquivo /etc/autofs/auto.sshfs com o seguinte:
/mnt/Array -fstype=fuse,rw,allow_other,reconnect,transform_symlinks,IdentityFile=/root/.ssh/id_ed25519 :sshfs\#sshfs@[fdcd:79d:25ec:321::2]\:/Array
Sim, antes do # tem o tipo de sistema de arquivos do FUSE, e após ele, o nome de usuário do seu servidor remoto, o que será utilizado para acessar os arquivos.
Antes de reiniciar o sistema, teste para ver se funcionou corretamente: sudo automount -f -v
E em outro terminal, tente acessar a pasta /mnt/Array e veja se os arquivos remotos apareceram. Se sim, está tudo ok.
Reinicie o sistema. Caso você esteja sem rede, ao tentar acessar /mnt/Array, o seu terminal aguardará 30 segundos antes de lhe retornar o comando.