Estou tentando criar alguns compartilhamentos NFS para minha rede doméstica para poder gerenciar meu NAS com mais facilidade. Atualmente estou usando o Samba para uso doméstico, mas o NFS é mais rápido para mim, já que uso o Ubuntu (todos os outros, exceto o NAS, estão executando o Windows).
O que eu quero fazer é criar alguns compartilhamentos NFS que sejam somente leitura para todos, exceto minha máquina. Eu tenho os compartilhamentos NFS funcionando bem, pois posso montá-los no meu computador e navegar nas pastas, mas sou forçado a ser somente leitura neles, o que é frustrante, já que declarei em minha configuração/exportação que meu máquinas sejam de leitura/gravação.
Meu arquivo /etc/exports se parece com isto (por exemplo, de uma linha - existem vários como este com o mesmo resultado):
/mnt/TVShows matt-pc.*(rw,sync,no_root_squash,no_subtree_check) 192.168.1.0/25(ro,sync,no_root_squash,no_subtree_check)
matt-pc.1 e matt-pc.2 são definidos no arquivo hosts do NAS. Mas, independentemente disso, codificar os IPs também não funciona.
Isso também não funciona:
/mnt/TVShows matt-pc.*(rw,sync,no_root_squash,no_subtree_check) *(ro,sync,no_root_squash,no_subtree_check)
Ainda só consigo montar somente leitura.
As unidades são montadas como leitura/gravação no NAS e minhas configurações de compartilhamentos Samba funcionam bem (posso forçar o login como minha conta de usuário no NAS e poder ler e gravar arquivos).
Se eu formatar os compartilhamentos assim:
/mnt/TVShows matt-pc.*(rw,sync,no_root_squash,no_subtree_check)
Acabei de receber erros de permissão ao tentar montar na máquina cliente (minha máquina).
É assim que estou montando na minha máquina cliente:
nas.local:/mnt/TVShows /mnt/NFS/TVShows nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
Posso trabalhar isso?
Responder1
Para exportar /mnt/TVShows
de rw
para nas
e matt-pc
para ro
todos os outros você pode escrever isto em `/etc/exports:
#
/mnt/TVShows matt-pc(rw,no_subtree_check) 192.168.1.0/24(ro)
Observe que a ordem é importante. O primeiro nome/IP/rede da máquina que faz a máquina é usado ao exportar para uma máquina, portanto, tenha a máquina mais específica primeiro e a mais geral por último. Não termine com um apanhado de tudo o que dá muitos direitos.
Lembre-se também de que cada conjunto de opções é inerente ao seguinte, portanto, você só precisa ser específico primeiro. O resto são apenas alterações das configurações anteriores. Evite também opiniões definidas que você não precisa. (E sempre leia man
(1) páginas e documentação relevantes em /usr/share/doc/"package name"/
)
Verifique também como os nomes que você está usando foram resolvidos corretamente. Para usar isso, use o getent
comando (1). Assim:
$ getent hosts matt-pc
E como isso funciona depende de resolv.conf
e /etc/hosts
(ou na verdade do conteúdo de /etc/nsswitch.conf
).
Para montar você faz assim em cada máquina:
/etc/fstab
# ro, that is this line in all but matt-pc
nas.local:/mnt/TVShows /mnt/NFS/TVShows nfs auto,ro,noatime,nolock,bg,nfsvers=4,intr,tcp 0 0
# rw, that is this line in only matt-pc
nas:/mnt/TVShows /mnt/NFS/TVShows nfs auto,rw,noatime,nfsvers=4,tcp 0 0
Observe, porém, que não use mais argumentos do que você realmente precisa.
(Sim, prefiro ter discos em servidores montados em /srv/
, pois isso é para recursos do servidor e /mnt/
é mais para montagens temporárias. Normalmente tenho /srv/web/
, /srv/files/music/
, /srv/files/video
etc. Isso torna mais fácil fazer backups)