Gestión de sistemas de archivos de red en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Julio de 2014
 
 

Daemon nfsmapid

La versión 4 del protocolo NFS (RFC3530) ha cambiado la forma en que los identificadores de usuarios o grupos (UID o GID) son intercambiados entre el cliente y el servidor. El protocolo exige que el cliente NFS versión 4 y el servidor NFS versión 4 intercambien los atributos de grupo y propietario de archivo como cadenas con el formato user@nfsv4-domain o group@nfsv4-domain, respectivamente.

Por ejemplo, el usuario known_user tiene el UID 123456 en un cliente NFS versión 4 cuyo nombre de host completo es system.example.com. Para que el cliente pueda realizar solicitudes al servidor NFS versión 4, el cliente debe asignar el UID 123456 a known_user@example.com y, a continuación, enviar este atributo al servidor NFS versión 4. Después de que el servidor recibe known_user@example.com desde el cliente, el servidor asigna la cadena al UID 123456 local, que es entendida por el sistema de archivos subyacente. Esta funcionalidad asume que cada UID y GID en la red es único y que los dominios NFS versión 4 en el cliente coinciden con los dominios NFS versión 4 en el servidor.

El cliente y el servidor NFS versión 4 son capaces de realizar conversiones de entero a cadena y de cadena a entero. Por ejemplo, en respuesta a una operación GETATTR, el servidor NFS versión 4 asigna los UID y GID obtenidos del sistema de archivos subyacente en sus respectivas representaciones en una cadena y envía esta información al cliente. Asimismo, el cliente debe también asignar los UID y GID a representaciones de cadenas. Por ejemplo, en respuesta al comando chown, el cliente asigna los nuevos UID o GID a una representación de cadena antes de enviar una operación SETATTR al servidor.

    Tenga en cuenta, sin embargo, que el cliente y el servidor responden diferente ante cadenas no reconocidas:

  • Si el usuario no existe en el servidor, incluso dentro de la misma configuración de dominio NFS versión 4, el servidor rechaza la llamada de procedimiento remoto (RPC) y devuelve un mensaje de error al cliente. Esta situación limita las operaciones que puede realizar el usuario remoto.

  • Si el usuario existe en el cliente y en el servidor, pero los dominios no coinciden, el servidor rechaza las operaciones de modificación de atributo (por ejemplo, SETATTR) que necesitan que el servidor asigne la cadena de usuario entrante en un valor entero que el sistema de archivos subyacente pueda comprender. Para que los clientes y servidores NFS versión 4 funcionen adecuadamente, sus dominios NFS versión 4, la parte de la cadena después del signo @, deben coincidir.

  • Si el cliente NFS versión 4 no reconoce un usuario o nombre de grupo obtenido del servidor, el cliente no puede asignar la cadena a su ID exclusivo, un valor de entero. En estas circunstancias, el cliente asigna la cadena de usuario o grupo entrante al usuario nobody. Esta asignación a nobody crea distintos problemas para aplicaciones diferentes. Con la funcionalidad NFS versión 4, fallarán las operaciones que modifican los atributos de archivo.

  • Si el servidor no reconoce el usuario o nombre de grupo determinado, incluso si el dominio NFS versión 4 coincide, el servidor no puede asignar el nombre de usuario o grupo con su ID exclusivo, un valor entero. En estas circunstancias, el servidor asigna el nombre de usuario o grupo entrante al usuario nobody. Para evitarlo, los administradores deben evitar la creación de cuentas especiales que sólo existan en el cliente NFS versión 4.

Puede cambiar el nombre de dominio para los clientes y servidores mediante el comando sharectl, con la opción nfsmapid_domain. Esta opción define un dominio común para clientes y servidores. Anula el comportamiento predeterminado de utilizar el nombre de dominio DNS local. Para obtener información sobre las tareas, consulte Configuración del servicio de NFS.

Archivos de configuración y daemon nfsmapid

    El daemon nfsmapid utiliza la información de configuración de SMF que se encuentra en svc:system/name-service/switch y en svc:/network/dns/client de la siguiente manera:

  • nfsmapid utiliza funciones de biblioteca estándar de C para solicitar contraseña e información de grupo desde servicios de nombres en segundo plano. Estos servicios de nombres están controlados por los valores del servicio SMF svc:system/name-service/switch. Cualquier cambio en las propiedades del servicio afectan las operaciones nfsmapid. Para obtener más información sobre el servicio SMF svc:system/name-service/switch, consulte la página del comando man nsswitch.conf(4).

  • Para asegurarse de que los clientes NFS versión 4 sean capaces de montar sistemas de archivos de diferentes dominios, nfsmapid se basa en la configuración del registro de recursos DNS TXT (RR), _nfsv4idmapdomain. Para obtener más información sobre la configuración del registro de recursos _nfsv4idmapdomain, consulte Comando nfsmapid y registros DNS TXT. También, tenga en cuenta lo siguiente:

    • El DNS TXT RR debe estar configurado explícitamente en el servidor DNS con la información de dominio deseada.

    • El servicio SMF svc:system/name-service/switch debe estar configurado con los parámetros deseados a fin de activar el comando resolver para que encuentre el servidor DNS y busque en los registros TXT los dominios NFS versión 4 para el cliente y el servidor.

Reglas de precedencia

    Para que nfsmapid funcione correctamente, los clientes y servidores NFS versión 4 deben tener el mismo dominio. Para garantizar la coincidencia de los dominios NFS versión 4, nfsmapid sigue estas estrictas reglas de precedencia:

  1. El daemon comprueba primero el repositorio SMF para ver si contiene un valor que se haya asignado al parámetro nfsmapid_domain. Si se encuentra un valor, dicho valor asignado cobra importancia con respecto a cualquier otra preferencia. El valor asignado se anexa a las cadenas de atributos salientes y se compara con las cadenas de atributos entrantes. Para obtener información de procedimiento, consulte Configuración del servicio de NFS.


    Notas -  El uso de la configuración NFSMAPID_DOMAIN no es ampliable y no se recomienda para grandes implementaciones.
  2. Si no se asignó ningún valor a nfsmapid_domain , el daemon busca un nombre de dominio desde un DNS TXT RR. nfsmapid se basa en directivas en el archivo /etc/resolv.conf que son utilizadas por el conjunto de rutinas en el comando resolver. El comando resolver busca el TXT RR _nfsv4idmapdomain a través de los servidores DNS configurados. Tenga en cuenta que el uso de registros DNS TXT es más ampliable. Por este motivo, el uso continuo de los registros TXT se prefiere más que la definición del parámetro en el repositorio SMF.

  3. Si ningún registro DNS TXT se ha configurado para proporcionar un nombre de dominio, el daemon nfsmapid utiliza el valor especificado por las políticas domain o search en el archivo /etc/resolv.conf, y la política se especifica como la última precedencia.

    En el ejemplo siguiente, se utilizan las directivas domain y search. El daemon nfsmapid utiliza el primer dominio que se muestra después de la directiva search, que es example.com.

    domain company.example.com
    search example.com abc.def.com
  4. Si el archivo /etc/resolv.conf no existe, nfsmapid obtiene el nombre del dominio NFS versión 4 siguiendo el comportamiento del comando domainname. En concreto, si el archivo /etc/defaultdomain existe, nfsmapid utiliza el contenido de dicho archivo para el dominio NFS versión 4. Si el archivo /etc/defaultdomain no existe, nfsmapid utiliza el nombre de dominio que ofrece el servicio de nombres configurado de la red. Para obtener más información, consulte la página del comando man domainname(1M).

Comando nfsmapid y registros DNS TXT

La naturaleza ubicua de DNS proporciona un almacenamiento eficiente y un mecanismo de distribución para el nombre de dominio NFS versión 4. Además, debido a la inherente escalabilidad de DNS, el uso de registros de recursos DNS TXT es el método preferido para configurar el nombre de dominio NFS versión 4 para grandes implementaciones. Debe configurar el registro TXT _nfsv4idmapdomain en los servidores DNS del nivel de la empresa. Dichas configuraciones aseguran que cualquier cliente o servidor NFS versión 4 pueda encontrar su dominio NFS versión 4 al atravesar el árbol DNS.

El siguiente es un ejemplo de una entrada preferida para activar el servidor DNS a fin de proporcionar el nombre de dominio NFS versión 4:

_nfsv4idmapdomain		IN		TXT			"abc.def"

En este ejemplo, el nombre de dominio para configurar es el valor entre comillas dobles. Tenga en cuenta que no se especifica ningún campo ttl y que no se anexa ningún dominio a _nfsv4idmapdomain, que es el valor en el campo owner. Esta configuración permite que el registro TXT utilice la entrada ${ORIGEN} de la zona del registro de inicio de autoridad (SOA). Por ejemplo, en diferentes niveles del espacio de nombres de dominio, el registro puede ser el siguiente:

_nfsv4idmapdomain.subnet.example.com.    IN    TXT    "abc.def"
_nfsv4idmapdomain.example.com.           IN    TXT    "abc.def"

Esta configuración proporciona a los clientes DNS la flexibilidad de utilizar el archivo resolv.conf para buscar hacia arriba en la jerarquía del árbol DNS. Consulte la página del comando man resolv.conf(4). Esta capacidad proporciona una mayor probabilidad de encontrar el registro TXT. Para más flexibilidad, los subdominios de DNS de nivel inferior pueden definir sus propios registros de recursos DNS TXT (RR). Esta capacidad le permite a los subdominios DNS de nivel inferior sustituir el registro TXT definido por el dominio DNS de nivel superior.


Notas -  El dominio que se especifica en el registro TXT puede ser una cadena arbitraria que no coincida necesariamente con el dominio DNS para los clientes y servidores que utilicen NFS versión 4. Tiene la opción de no compartir los datos de NFS versión 4 con otros dominios DNS.

Comprobación del dominio NFS versión 4

Antes de asignar un valor para el dominio NFS versión 4 de la red, compruebe para ver si un dominio NFS versión 4 ya se ha configurado para su red. Los siguientes ejemplos proporcionan formas de identificar los dominios NFS versión 4.

  • Para identificar el dominio NFS versión 4 desde un DNS TXT RR, utilice los comandos nslookup o dig.

    A continuación, se muestra un ejemplo de la salida del comando nslookup:

    # nslookup -q=txt _nfsv4idmapdomain
    Server:         10.255.255.255
    Address:        10.255.255.255#53
    
    _nfsv4idmapdomain.company.example.com text = "example.com"

    A continuación, se muestra un ejemplo de resultado de la salida dig:

    # dig +domain=company.example.com -t TXT _nfsv4idmapdomain
    ...
    ;; QUESTION SECTION:
    ;_nfsv4idmapdomain.company.example.com. IN    TXT
    
    ;; ANSWER SECTION:
    _nfsv4idmapdomain.company.example.com. 21600 IN TXT   "example.com"
    
    ;; AUTHORITY SECTION:
    ...

    Para obtener información sobre la configuración de un DNS TXT RR, consulte Comando nfsmapid y registros DNS TXT.

  • Si la red no está configurada con un DNS TXT RR de NFS versión 4, utilice el siguiente comando para identificar el dominio NFS versión 4 del nombre de dominio DNS:

    # egrep domain /etc/resolv.conf
    domain company.example.com
  • Si el archivo /etc/resolv.conf no está configurado para proporcionar un nombre de dominio DNS para el cliente, utilice el siguiente comando para identificar el dominio desde la configuración de dominio NFS versión 4 de la red:

    # cat /system/volatile/nfs4_domain
    example.com
  • Si utiliza otro servicio de nombres, como NIS, utilice el siguiente comando para identificar el dominio para el servicio de asignación de nombres configurado para su red:

    # domainname
    it.company.example.com

Configuración del dominio predeterminado NFS versión 4

Configuración de un dominio predeterminado NFS versión 4 en la versión Oracle Solaris 11

Oracle Solaris 11, establezca el valor predeterminado en el dominio NFS versión escribiendo el siguiente comando:

# sharectl set -p nfsmapid_domain=example.com nfs 

Notas -  Debido a la inherente naturaleza ubicua y ampliable de DNS, el uso de registros DNS TXT para configurar el dominio de grandes implementaciones de NFS versión 4 sigue siendo la opción preferida y se recomienda encarecidamente. Consulte Comando nfsmapid y registros DNS TXT.
Configuración de un dominio predeterminado NFS versión 4 en la versión Solaris 10

En la primera versión de Solaris 10 de NFS versión 4, si la red incluía varios dominios DNS, pero sólo tenía un solo espacio de nombre UID y GID, todos los clientes debían utilizar un valor para nfsmapid_domain. Para los sitios que usen DNS, nfsmapid resuelve este problema al obtener el nombre del dominio a partir del valor asignado a _nfsv4idmapdomain. Para obtener más información, consulte Comando nfsmapid y registros DNS TXT. Si la red no está configurada para usar DNS, durante el primer inicio del sistema, el sistema operativo utiliza la utilidad sysidconfig para proporcionar las siguientes solicitudes para un nombre de dominio de NFS versión 4:

This system is configured with NFS Version 4, which uses a 
domain name that is automatically derived from the system's 
name services. The derived domain name is sufficient for most 
configurations. In a few cases, mounts that cross different 
domains might cause files to be owned by nobody due to the 
lack of a common domain name.

Do you need to override the system's default NFS version 4 domain 
name (yes/no)? [no]

La respuesta predeterminada es [no]. Si selecciona [no], puede ver el siguiente mensaje:

For more information about how the NFS Version 4 default domain name is 
derived and its impact, refer to the man pages for nfsmapid(1M) and 
nfs(4), and the System Administration Guide: Network Services.

Si selecciona [sí], verá esta solicitud:

Enter the domain to be used as the NFS Version 4 domain name.
NFS Version 4 domain name []:

Notas -  Si existe un valor para nfsmapid_domain en el repositorio SMF, el nombre de dominio que proporcione sustituye ese valor.

Información adicional sobre nfsmapid