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

6

Eu tenho acesso de leitura apenas ao compartilhamento NFS montado.

Com o 'no squash mapping' definido no NAS, o usuário regular do Ubuntu obtém Permission denied ao tentar cd no compartilhamento e só pode obter acesso de leitura usando sudo .
Usando a configuração do squash 'mapear todos os usuários para o admin', o usuário regular do cliente pode cd em e tem somente acesso de leitura ao compartilhamento. Usando sudo não permite gravação.

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

no 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 (mapear todos os usuários para admin)
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 do Ubuntu: $ cat /etc/fstab e 10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0

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

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

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

(Originalmente postei por engano que usando sudo habilitado acesso de gravação) eu posso abrir um arquivo no compartilhamento NFS montado com sudo vi /mnt/nfs/Files/Data/test.file , mas não posso gravar as alterações no arquivo mesmo com sudo . O comando vi mensagem de erro em :w! é:
"test.file" E212: Can't open file for writing

    
por marsilea 24.09.2015 / 16:29

2 respostas

7

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 & lt; 4 é, por design, inseguro em ambientes em que 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, é muito mais fácil recorrer ao Samba (SMB / CIFS), em vez de configurar um Kerberos, mesmo em ambientes Linux puros.

Para evitar pelo menos o escalonamento de privilégios de root, os compartilhamentos NFS são exportados por padrão com a opção root_squash , que mapeará toda solicitação de cliente proveniente de root (uid=0, gid=0) to anonuid e anongid . Esse comportamento pode ser substituído com no_root_squash , concedendo acesso raiz à exportação.

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 a 1026 e têm permissões 755. Seu usuário no cliente tem uid=1000 . Os GIDs não coincidem, então você só tem permissões mundiais. Portanto, não há acesso de gravação.

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

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

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

  • Como você é o único que acessa os arquivos no servidor, pode fazer com que o servidor finja que todas as solicitações vêm do UID adequado. Para isso, o NFS tem a opção all_squash . Ele informa 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 monte a exportação efetivamente do proprietário desses arquivos!

Se você compartilha sua rede com pessoas e seus clientes nos quais você não confia totalmente para não causar danos em seus arquivos, você deve 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.

    
por Nephente 27.09.2015 / 19:26
0

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

    
por Muhammad Aizuddin 24.09.2015 / 17:31