O comentário de ridgy sugeriu a resposta. O que foi necessário foi remover none
, deixando:
name=mail,path=/tank/mail,prot=nfs,[email protected],sec=sys
(É possível omitir o @
, mas a documentação exige, então achei melhor deixá-lo, caso a interpretação se torne mais rigorosa no futuro.)
Este é um caso de documentação deficiente. A página man states (ênfase minha):
none
Access is disallowed to all clients. The ro
or rw
options can override none
.
none=
access_list
Access is not allowed to any client that matches the access list. The exception is when the access list is an asterisk (*
), in which case ro
or rw
can override none
.
Isso não só indica explicitamente que meu cliente em 10.0.23.43 deveria ter obtido acesso mesmo com none
(o que não aconteceu) também implica que você precisa none
para evitar que clientes não listados em rw
recebam pelo menos algum tipo de acesso, porque senão, por que a exceção de substituição para none=*
teria (supostamente) sido implementada? Seria redundante !
Eu não tinha nenhum outro cliente NFS à mão para testar, então eu mudei o número IP do meu cliente e confirmei que, de fato, none
não é necessário para clientes que não são de outra forma listado para ter acesso negado. Só para ter certeza, adicionei ro
como teste e meu cliente em um endereço diferente poderia ler, mas não escrever.
Embora esta parece ser a solução, eu não estou feliz com isso, porque a documentação implica que o que estou fazendo é deixá-lo bem aberto, e de fato eu poderia estar fazendo exatamente isso em uma versão futura que se corrige obedecer as intenções implícitas na documentação. (Pelo menos eu tenho firewalls externos.)