7 votos

Los permisos no están teniendo el efecto con Kerberised NFSv4 en FreeBSD

Actualmente estoy tratando de configurar un servidor NFSv4 en FreeBSD. Tengo amplia experiencia con hacerlo en otros sistemas unix (Solaris y Linux), pero soy bastante nuevo en FreeBSD.

Mi objetivo es lograr los siguientes:

  • Archivos servida por el sistema FreeBSD
  • El único modelo de seguridad debe ser krb5p
  • Los clientes son Linux (Ubuntu) y OSX

En la actualidad, he conseguido configurarlo para que necesito un válido TGT con el fin de acceder al sistema de archivos. Después de un intento de acceder a esos archivos, me puede ejecutar klist sobre el cliente y puedo ver que el nfs/domainname principal ha sido recuperado. Esto sugiere que la Kerberos parte del montaje de NFS es correcta.

Mi problema es que todos los accesos de cliente todavía se llevan a cabo utilizando el nobody de usuario. Puedo ver los permisos cuando hago ls -l. Incluso la asignación de usuario funciona correctamente, pero a menos nobody tiene permiso para hacer cualquier cosa con los archivos, puedo obtener un permiso denegado.

He aquí un ejemplo de la interacción del cliente (Ubuntu en este caso, pero lo mismo sucede desde OSX). En este ejemplo, /export/shared/testshare es el directorio compartido del servidor FreeBSD:

(He cambiado el nombre de dominio real a domain y el reino Kerberos nombre REALM)

$ kinit
Password for elias@REALM:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000_GBjtDP
Default principal: elias@REALM

Valid starting       Expires              Service principal
09/02/2013 09:40:47  10/02/2013 09:40:44  krbtgt/REALM@REALM
$ sudo mount -t nfs4 -osec=krb5p,vers=4 lion:/export/shared/testshare /mnt
$ ls -l /mnt
total 4
-rw-r--r-- 1 nobody nogroup   5 Feb  7 18:17 bar.txt
-rw------- 1 elias  nogroup   4 Feb  5 23:09 foo.txt
$ cat /mnt/bar.txt
blah
$ echo foo >>/mnt/bar.txt
bash: /mnt/bar.txt: Permission denied
$ cat /mnt/foo.txt
cat: /mnt/foo.txt: Permission denied
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000_GBjtDP
Default principal: elias@REALM

Valid starting       Expires              Service principal
09/02/2013 09:40:47  10/02/2013 09:40:44  krbtgt/REALM@REALM
09/02/2013 09:41:56  10/02/2013 09:40:44  nfs/lion.domain@REALM

Configuración del servidor

He tenido algunos problemas en encontrar una guía completa para la configuración de NFSv4 en FreeBSD. Esto es algo sorprendente en sí mismo, ya que he encontrado que la información sobre cómo hacer las cosas en FreeBSD a ser muy bueno.

Aquí están las correspondientes líneas en /etc/rc.conf:

rpcbind_enable="YES"
nfs_server_enable="YES"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
nfscbd_enable="YES"
mountd_enable="YES"
gssd_enable="YES"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
zfs_enable="YES"

Aquí está el contenido de /etc/exports:

/export/shared/testshare -sec=krb5p
V4: / -sec=krb5p

Otro aspecto interesante es que cuando yo solía tcpdump a grabar el NFS tráfico de red entre el cliente y el servidor, vi NFS3 paquetes junto con el NFS4 paquetes. Ambos de estos tipos de paquetes de datos cifrados contenidos, por lo que todavía creo Kerberos, pero dada la configuración de arriba, yo habría esperado de no ser nada, pero NFS4 de tráfico.

1voto

Elias Mårtenson Puntos 139

He resuelto el problema. Después de pasar por el código que he encontrado que la causa fue un error en la sección de servicios generales de la biblioteca. El problema fue causado por un búfer enviado a getpwnam_r que era demasiado pequeña.

Todos los detalles pueden ser encontrados en la discusión en la lista de correo

0voto

igelkott Puntos 223
  1. Necesitamos deshabilitar nfs3 con vfs.nfsd.server_min_nfsvers=4.
  2. Para evitar el "nadie", NFSv4 cliente y el servidor deben estar en el mismo dominio del reino.

0voto

igelkott Puntos 223

Simplemente, tiene que haber alguna forma de asignar nombres de usuario entre los sistemas. Estás ejecutando idmapd en servidor y cliente? Ldap?

Al menos, como una prueba, trate de hacer específicas de las asignaciones entre los nombres ... aparte de root, al menos inicialmente.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: