Como configuro o NFS para respeitar permissões de usuários e grupos?

2

Após criar um compartilhamento NFS entre dois servidores, lb1 (nfs-client) e data-server1 (nfs-kernel-server), os usuários com permissão no NFS servidor não tem acesso no cliente NFS.

configuração do data-server1:

$ cat /etc/exports
/data  10.132.246.167(rw,no_subtree_check)
$ ls -la / | grep data
drwx--x--x  3 u1   users    4.0K Sep  6 03:55 data/
$ ls -la /data
drwxr-xr-x 3 u1       users    4.0K Sep  6 02:31 prod/
drwxrwsr-x 2 www-data www-data 4.0K Sep  6 02:31 keys/
$ awk -F: '$0=$1 " uid="$3 " gid="$4' /etc/passwd | grep 'root\|u1\|ftp\|www-data'
root uid=0 gid=0
www-data uid=33 gid=33
u1 uid=115 gid=100
ftp uid=999 gid=100

configuração lb1:

$ mount 10.132.245.223:/data /data
$ mount
10.132.245.223:/data on /data type nfs4 (rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.132.246.167,minorversion=0,local_lock=none,addr=10.132.245.223)
$ sudo -u u1 ls -la / | grep data
drwx--x--x  3 u1   users    4.0K Sep  6 03:55 data/
$ sudo -u u1 ls -la /data
drwxr-xr-x 3 u1       users    4.0K Sep  6 02:31 prod/
drwxrwsr-x 2 www-data www-data 4.0K Sep  6 02:31 keys/    
$ awk -F: '$0=$1 " uid="$3 " gid="$4' /etc/passwd | grep 'root\|u1\|ftp\|www-data'
root uid=0 gid=0
www-data uid=33 gid=33
u1 uid=115 gid=100
ftp uid=999 gid=100    

No servidor NFS (ou seja, servidor data-server1), os usuários root, u1 e ftp possuem permissões rwx adequadas para os subdiretórios de / data e podem acessar o sistema de arquivos sem problemas. No entanto, no cliente NFS (ou seja, lb1), root e ftp obtêm permission denied erros ao tentar simplesmente listar o conteúdo do diretório /data dentro do compartilhamento NFS. O usuário u1, por outro lado, funciona perfeitamente.

Este é um dos meus primeiros usos do NFS

    
por mrP 06.09.2014 / 06:46

1 resposta

0

Tudo parece como esperado. Como /data é rwx--x--x , somente o proprietário, u1 , pode listá-lo. Outros podem acessar arquivos e subdiretórios, sujeitos a permissões nesses arquivos e subdiretórios.

Além disso, o ID do usuário 0 em clientes NFS é mapeado para userid 65534 (em alguns sistemas, -2) em servidores, a menos que você tenha no_root_squash na linha de exportação (ou, se estiver executando o NFSv4, faça mapeamento de ID do usuário explícito). Veja alguns detalhes da página de manual exports (5) :

Very often, it is not desirable that the root user on a client machine is also treated as root when accessing files on the NFS server. To this end, uid 0 is normally mapped to a different id: the so-called anonymous or nobody uid. This mode of operation (called 'root squashing') is the default, and can be turned off with no_root_squash.

By default, exportfs chooses a uid and gid of 65534 for squashed access. These values can also be overridden by the anonuid and anongid options.

    
por 07.09.2014 / 20:14