Como posso obter acesso de leitura / gravação ao compartilhamento NFS do Synology NAS?

11

Eu tenho acesso de leitura apenas ao compartilhamento NFS montado.

Com o 'mapeamento sem squash' definido no NAS, o usuário comum do Ubuntu obtém Permission deniedao tentar cdacessar o compartilhamento e só pode obter acesso de leitura usando sudo.
Usando a configuração 'mapear todos os usuários para administrar' do squash, o usuário comum do cliente pode cdacessar e ter apenas acesso de leitura ao compartilhamento. O uso sudonão permite gravação.


Synology NAS:
DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)

sem squash (sem mapeamento)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)

all squash (mapeie todos os usuários para o administrador)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)

Cliente Ubuntu:
$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0

$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>

$ ls -n /mnt/nfs
drwxrwxrwx 9 0 0 4096 Sep 25 01:28 Files

$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data


(Eu originalmente postei com erro que usando o sudoacesso de gravação ativado) Posso abrir um arquivo no compartilhamento NFS montado com, sudo vi /mnt/nfs/Files/Data/test.filemas não consigo gravar as alterações no arquivo mesmo com sudo. A mensagem de erro do vi no :w!comando é:
"test.file" E212: Can't open file for writing

Marsilea
fonte
O NFS verifica as permissões de acesso com os IDs de usuário (UIDs). O UID do usuário em sua máquina local precisa corresponder ao UID do proprietário dos arquivos que você está tentando acessar no servidor . Vá para o servidor e veja as permissões de arquivo. A que UID (descobrir id username) eles pertencem e a quais permissões são definidas?
Nephente 24/09/2015
Você pode cdentrar na montagem como um usuário comum? Se sim, sugiro o seguinte. Para confirmar ou refutar minha suspeita, faça o seguinte: No cliente, cdmonte e faça ls -n. Isso listará os proprietários e grupos de arquivos com seus respectivos IDs. Você terá que fazer isso com sudoeu acho. Anexe uma linha ou duas da saída à sua pergunta, juntamente com a saída de id (não sudo!) Se você não puder nem mesmo cdmontar o usuário como um usuário comum, precisará verificar as permissões do diretório em que está exportando o servidor.
Nephente 24/09/2015
Eu não conseguia cdentrar na montagem como um usuário comum. Usar o Squash no servidor para forçar permissões funciona como uma correção temporária para conceder permissões. Investigando permissões de servidor e id username.
Marsilea
Obrigado, eu acho que seria melhor usar o NFS a maneira correta ao invés de força bruta apenas com Squash: 'mapa todos os usuários para admin' no servidor ..
Marsilea
Depende. Você confia em clientes e usuários? Caso contrário, o NFSv3 não é adequado, afinal, uma vez que qualquer pessoa que tenha acesso root a um cliente, pode falsificar UIDs. Se você precisar de autenticação adequada, é melhor usar o SMB. A autenticação com o NFSv4 requer a execução de um Kerberos, o que é bastante complicado. Mas, no entanto, sua saída me confunde ... Presumo que o ponto de montagem seja /mnt/nfs/Files. Embora Filespertença a root, a permissão permite que qualquer pessoa faça qualquer coisa. Não faz sentido para mim por que você teria problemas para inserir esse diretório como qualquer usuário. Talvez poste a linha relevante de /etc/exports?
Nephente 25/09/15

Respostas:

11

O NFSv2 / 3 lida com permissões exclusivamente com base no UID e no GID. As permissões de arquivo no servidor são comparadas com os IDs de usuário e grupo no cliente. É por isso que o NFSv <4 é inseguro em ambientes nos quais os usuários têm acesso root às máquinas clientes; A falsificação de UID é trivial nesse caso.

Observe que o NFSv4 oferece autenticação de cliente e usuário via Kerberos5. Se a autenticação com nome de usuário e senha for necessária, muitas vezes é muito mais fácil recorrer ao Samba (SMB / CIFS) em vez de configurar um Kerberos, mesmo em ambientes Linux puros.

Para pelo menos impedir a escalada de privilégios de root, os compartilhamentos NFS são exportados por padrão com a opção root_squash, que mapeará todas as solicitações de clientes provenientes de e root (uid=0, gid=0)para . Esse comportamento pode ser substituído , concedendo acesso raiz à exportação.anonuidanongidno_root_squash

Aqui, vemos outra desvantagem. Para funcionar corretamente, o NFS basicamente exige que você tenha o mesmo UID / GID em todas as máquinas. Os arquivos que você deseja acessar pertencem 1026e têm permissões 755. Você é usuário no cliente uid=1000. Os GIDs também não correspondem, então você obtém apenas permissões mundiais. Portanto, não há acesso de gravação.

Para resolver isso, você pode fazer uma de várias coisas:

  • No NAS, altere o proprietário dos arquivos para 1000. Talvez você precise criar essa conta específica. Como isso afetará outros serviços, não sei dizer.

  • Mude o UID do seu usuário local para 1026.

  • Como você é o único acessando os arquivos no servidor, você pode fazer o servidor fingir que todas as solicitações vêm do UID apropriado. Para isso, o NFS tem a opção all_squash. Diz ao servidor para mapear todas as solicitações para o usuário anônimo, especificado por anonuid,anongid.

    Adicione as opções all_squash,anonuid=1026,anongid=100à exportação em /etc/exports.

Seja cauteloso , pois isso fará com que qualquer pessoa que monta a exportação efetivamente seja a proprietária desses arquivos!

Se você compartilhar sua rede com pessoas e seus clientes em quem você não confia completamente para não causar danos aos seus arquivos, você deve realmente procurar um método de compartilhamento de arquivos que ofereça autenticação. Na minha opinião, o Samba é a maneira mais fácil de conseguir isso.

Nephente
fonte
Eu escolhi o NFS porque achei que poderia ter vantagens do Linux para o Linux, pois gostaria de poder fazer backup do NAS por rsync em uma unidade USB externa no cliente Ubuntu (o sistema DSM da Synology não oferece sincronização com a unidade USB) , mantendo as informações de propriedade e permissão do arquivo. Uma resposta completa e obrigado pela orientação.
Marsilea
0

Faça showmount -e 10.1.1.214para ver as opções de exportação. Permission deniederro está vindo do próprio servidor NFS. Tente alterar a opção de rw,user,autopara defaults.

Muhammad Aizuddin
fonte