NFS
NFS es un protocolo de sistema de archivos distribuido que es un estándar abierto IETF definido en solicitud de comentarios (RFC) que permite a cualquiera implementar el protocolo.
Los volúmenes de Google Cloud NetApp Volumes se comparten con los clientes NFS mediante la exportación de una ruta accesible para un cliente o un conjunto de clientes. Los permisos para montar estas exportaciones se definen mediante políticas y reglas de exportación, que pueden configurar los administradores de volúmenes de Google Cloud NetApp.
La implantación de NFS de NetApp se considera un estándar oro para el protocolo y se utiliza en innumerables entornos NAS empresariales. En las siguientes secciones se tratan NFS y las funciones de seguridad específicas que están disponibles en los volúmenes de Google Cloud NetApp y cómo se implementan.
Usuarios y grupos UNIX locales predeterminados
NetApp Volumes de Google Cloud contiene varios grupos y usuarios UNIX predeterminados para varias funcionalidades básicas. Estos usuarios y grupos no se pueden modificar ni eliminar actualmente. Actualmente no es posible añadir nuevos usuarios y grupos locales a volúmenes de Google Cloud NetApp. Los usuarios y grupos de UNIX fuera de los usuarios y grupos predeterminados deben ser proporcionados por un servicio de nombres LDAP externo.
En la siguiente tabla se muestran los usuarios y grupos predeterminados y sus correspondientes ID numéricos. NetApp recomienda no crear nuevos usuarios o grupos en LDAP o en los clientes locales que vuelvan a usar estos ID numéricos.
Usuarios predeterminados: ID numéricos | Grupos predeterminados: ID numéricos |
---|---|
|
|
Cuando se utiliza NFSv4.1, el usuario raíz podría mostrarse como nadie cuando se ejecutan comandos de lista de directorios en clientes NFS. Esto se debe a la configuración de asignación de dominio de ID del cliente. Consulte la sección llamada NFSv4.1 y el usuario/grupo nadie para obtener detalles sobre esta edición y cómo resolverla. |
El usuario raíz
En Linux, la cuenta raíz tiene acceso a todos los comandos, archivos y carpetas de un sistema de archivos basado en Linux. Debido a la eficacia de esta cuenta, las prácticas recomendadas de seguridad a menudo requieren que el usuario raíz se desactive o se restrinja de alguna manera. En las exportaciones NFS, el poder que tiene un usuario raíz sobre los archivos y carpetas se puede controlar en volúmenes de Google Cloud NetApp a través de políticas y reglas de exportación y un concepto conocido como squash raíz.
El aplastamiento raíz garantiza que el usuario raíz que accede a un montaje NFS se reduzca al usuario numérico anónimo 65534 (consulte la sección «El usuario anónimo») y actualmente solo está disponible cuando utilice NetApp Volumes-Performance. Para ello, seleccione Desactivado para acceso raíz durante la creación de reglas de políticas de exportación. Si el usuario root está aplastado para el usuario anónimo, ya no tiene acceso para ejecutar chown o "comandos setuid/setgid (el bit de pegado)" en archivos o carpetas en el montaje NFS, y los archivos o carpetas creados por el usuario root muestran el UID anon como propietario/grupo. Además, el usuario raíz no puede modificar las ACL de NFSv4. Sin embargo, el usuario raíz todavía tiene acceso a chmod y archivos eliminados para los que no tiene permisos explícitos. Si desea limitar el acceso a los permisos de archivos y carpetas de un usuario raíz, considere la posibilidad de usar un volumen con ACL NTFS, crear un usuario de Windows llamado `root`y aplicar los permisos deseados a los archivos o carpetas.
El usuario anónimo
El ID de usuario anónimo (anon) especifica un ID de usuario o nombre de usuario de UNIX que se asigna a solicitudes de cliente que llegan sin credenciales de NFS válidas. Esto puede incluir al usuario root cuando se utiliza la función root squashing. El usuario anon en Google Cloud NetApp Volumes es 65534.
Este UID se asocia normalmente con el nombre de usuario nobody
o nfsnobody
en entornos Linux. Google Cloud NetApp Volumes también utiliza 65534 como el usuario local de UNIX` pcuser` (consulte la sección “Usuarios y grupos UNIX locales predeterminados”), que también es el usuario de reserva predeterminado para las asignaciones de nombres de Windows a UNIX cuando no se puede encontrar ningún usuario válido de UNIX coincidente en LDAP.
Debido a las diferencias de nombres de usuario en Linux y Google Cloud NetApp Volumes para UID 65534, la cadena de nombres para los usuarios asignados a 65534 podría no coincidir al utilizar NFSv4,1. Como resultado, es posible que vea nobody
como usuario en algunos archivos y carpetas. Consulte la sección «NFSv4.1 y el usuario/grupo nadie» para obtener información sobre este problema y cómo resolverlo.
Control de accesos/exportaciones
El acceso inicial a las exportaciones y recursos compartidos para montajes NFS se controla mediante reglas de la política de exportación basadas en host contenidas en una política de exportación. Se define una IP de host, nombre de host, subred, netgroup o dominio para permitir el acceso al montaje del recurso compartido de NFS y el nivel de acceso permitido al host. Las opciones de configuración de reglas de política de exportación dependen del nivel de volúmenes de Google Cloud NetApp.
En el caso de NetApp Volumes-SW, existen las siguientes opciones disponibles para la configuración de políticas de exportación:
-
Coincidencia de cliente. Lista de direcciones IP separadas por comas, lista separada por comas de nombres de host, subredes, grupos de red, nombres de dominio.
-
Reglas de acceso RO/RW. Seleccione read/write o read only para controlar el nivel de acceso a export.NetApp Volumes-Performance ofrece las siguientes opciones:
-
Coincidencia de cliente. Lista de direcciones IP separadas por comas, lista separada por comas de nombres de host, subredes, grupos de red, nombres de dominio.
-
Reglas de acceso RO/RW. Seleccione sólo lectura/escritura o lectura para controlar el nivel de acceso a la exportación.
-
Acceso raíz (on/OFF). configura el squash raíz (consulte la sección “El usuario raíz" para obtener más información).
-
Tipo de protocolo. esto limita el acceso al montaje NFS a una versión específica del protocolo. Cuando se especifican NFSv3 y NFSv4.1 para el volumen, deje las dos casillas en blanco o marque ambas.
-
Nivel de seguridad de Kerberos (cuando se selecciona Enable Kerberos). proporciona las opciones de krb5, krb5i y/o krb5p para acceso de solo lectura o de lectura/escritura.
Cambiar la propiedad (chown) y cambiar el grupo (chgrp)
NFS en Google Cloud Volúmenes de NetApp solo permite que el usuario raíz ejecute chown/chgrp en archivos y carpetas. Otros usuarios ven un Operation not permitted
error, incluso en los archivos que tienen. Si usas calabaza raíz (como se describe en la sección “El usuario raíz”), la raíz se aplasta a un usuario que no sea root y no se le permite el acceso a chown y chgrp. Actualmente, no hay soluciones alternativas en los volúmenes de NetApp de Google Cloud que permitan chown y chgrp para usuarios que no sean raíz. Si se requieren cambios de propiedad, considere usar volúmenes de protocolo dual y establezca el estilo de seguridad en NTFS para controlar los permisos del lado de Windows.
Gestión de permisos
Google Cloud NetApp Volumes es compatible con los bits de modo (como 644, 777, etc. para rwx) y las ACL de NFSv4,1 para controlar los permisos en los clientes de NFS para volúmenes que usan el estilo de seguridad UNIX. La gestión de permisos estándar se utiliza para estos (como chmod, chown o nfs4_setfacl) y funciona con cualquier cliente Linux que los admita.
Además, cuando se utilizan volúmenes de protocolo doble configurados como NTFS, los clientes NFS pueden aprovechar la asignación de nombres de volúmenes de Google Cloud NetApp para los usuarios de Windows, que luego se utilizan para resolver los permisos NTFS. Esto requiere una conexión LDAP a los volúmenes de NetApp de Google Cloud para proporcionar traducciones de ID numérico a nombre de usuario, ya que los volúmenes de NetApp de Google Cloud requieren un nombre de usuario de UNIX válido para asignarlo correctamente a un nombre de usuario de Windows.
Proporcionar ACL granulares para NFSv3
Los permisos de bit de modo solo cubren al propietario, al grupo y a todos los demás en la semántica, lo que significa que no hay controles de acceso de usuario granulares disponibles para NFSv3 básico. Google Cloud NetApp Volumes no admite listas de control de acceso POSIX, ni atributos extendidos (como chattr), por lo que las listas de control de acceso granulares solo son posibles en los siguientes casos con NFSv3:
-
Volúmenes de estilo de seguridad NTFS (servidor CIFS necesario) con asignaciones de usuarios de UNIX a Windows válidas.
-
Las ACL de NFSv4.1 se aplican mediante el montaje de NFSv4.1 en un cliente de administrador para aplicar ACL.
Ambos métodos requieren una conexión LDAP para la gestión de identidades de UNIX y que se rellene información válida de usuarios y grupos de UNIX (consulte la sección "“LDAP”") y que solo están disponibles con instancias de NetApp Volumes-Performance. Para utilizar volúmenes de estilo de seguridad NTFS con NFS, debe utilizar el protocolo dual (SMB y NFSv3) o el protocolo doble (SMB y NFSv4.1), incluso si no se realiza ninguna conexión SMB. Para utilizar NFSv4,1 ACL con NFSv3 montajes, debe seleccionar Both (NFSv3/NFSv4.1)
como tipo de protocolo.
Los bits del modo UNIX normal no proporcionan el mismo nivel de granularidad en permisos que proporcionan las ACL de NTFS o NFSv4.x. En la siguiente tabla, se compara la granularidad de permisos entre bits del modo NFSv3 y ACL de NFSv4.1. Para obtener más información sobre las ACL de NFSv4.1, consulte "Nfs4_acl - Listas de control de acceso de NFSv4".
Bits del modo NFSv3 | ACL de NFSv4.1 |
---|---|
|
Tipos de entrada de control de acceso (ACE) (permitir/Denegar/Auditoría) * indicadores de herencia * directorio-heredar * archivo-heredar * no-propagar-heredar * heredar-sólo Permisos * datos de lectura (archivos) / directorio de lista (directorios) * escribir-datos (archivos) / crear-archivo (directorios) * anexar-datos (archivos) / subdirectorio de creación (directorios) * ejecutar (archivos) / cambiar-directorio (directorios) * eliminar * eliminar-hijo * atributos de lectura-escritura * escribir-atributos * atributos-ACL de lectura-escritura * Sincronizar-escritura-escritura-propietario * ACL |
Por último, la pertenencia a grupos de NFS (tanto en NFSv3 COMO EN NFSV4.x) está limitada a un máximo predeterminado de 16 para AUTH_SYS según los límites de paquetes RPC. NFS Kerberos proporciona hasta 32 grupos y las ACL de NFSv4 eliminan la limitación a través de ACL granulares de usuarios y grupos (hasta 1024 entradas por ACE).
Además, Google Cloud NetApp Volumes proporciona compatibilidad de grupos ampliada para ampliar el número máximo de grupos compatibles hasta 32 TB. Esto requiere una conexión LDAP a un servidor LDAP que contenga identidades de grupo y de usuario UNIX válidas. Para obtener más información sobre cómo configurar esto, consulte "Crear y gestionar volúmenes de NFS" en la documentación de Google.
ID de usuario y grupo de NFSv3
Los ID de usuario y de grupo de NFSv3 se encuentran en el cable como identificadores numéricos en lugar de como nombres. NetApp Volumes de Google Cloud no tiene ninguna resolución de nombre de usuario para estos ID numéricos con NFSv3, donde los volúmenes de estilo de seguridad de UNIX usan solo bits de modo. Cuando hay ACL de NFSv4.1, es necesario realizar una búsqueda de ID numéricos y/o una búsqueda de cadenas de nombre para resolver la ACL correctamente, incluso cuando se utiliza NFSv3. Con los volúmenes de estilo de seguridad NTFS, los volúmenes de Google Cloud NetApp deben resolver un ID numérico a un usuario UNIX válido y, a continuación, asignarlo a un usuario válido de Windows para negociar derechos de acceso.
Limitaciones de seguridad de los ID de usuario y de grupo de NFSv3
Con NFSv3, el cliente y el servidor nunca tienen que confirmar que el usuario que intenta leer o escribir con un ID numérico es un usuario válido; sólo es de confianza implícita. Esto abre el sistema de archivos hasta posibles infracciones simplemente falsificar cualquier ID numérico. Para evitar agujeros de seguridad como este, hay algunas opciones disponibles para Google Cloud NetApp Volumes.
-
La implementación de Kerberos para NFS obliga a los usuarios a autenticarse con un nombre de usuario y contraseña o un archivo keytab a obtener un vale Kerberos para permitir el acceso a un montaje. Kerberos está disponible con instancias de NetApp Volumes-Performance y solo con NFSv4,1.
-
Limitar la lista de hosts en las reglas de políticas de exportación limita los límites de los clientes NFSv3 pueden acceder al volumen de Google Cloud NetApp Volumes.
-
El uso de volúmenes de protocolo doble y la aplicación de ACL NTFS a los volúmenes obliga a los clientes NFSv3 a resolver los ID numéricos a nombres de usuario de UNIX válidos para autenticar correctamente el acceso a los montajes. Esto requiere habilitar LDAP y configurar las identidades de usuarios y grupos de UNIX.
-
Al SQUID el usuario raíz limita el daño que un usuario raíz puede hacer a un montaje NFS, pero no elimina por completo el riesgo. Para obtener más información, consulte la sección “El usuario raíz.”
En última instancia, la seguridad de NFS se limita a qué versión del protocolo utiliza que ofrece. NFSv3, aunque tiene un rendimiento general superior al de NFSv4.1, no proporciona el mismo nivel de seguridad.
NFSv4.1
NFSv4.1 proporciona una mayor seguridad y fiabilidad en comparación con NFSv3, por los siguientes motivos:
-
Bloqueo integrado mediante un mecanismo basado en arrendamiento
-
Sesiones con estado
-
Todas las funciones de NFS en un único puerto (2049)
-
Solo TCP
-
Asignación de dominio de ID
-
Integración de Kerberos (NFSv3 puede utilizar Kerberos, pero solo para NFS, no para protocolos auxiliares como NLM)
Dependencias de NFSv4.1
Debido a las funciones de seguridad adicionales de NFSv4.1, existen algunas dependencias externas implicadas que no fueron necesarias para utilizar NFSv3 (de forma similar a cómo requiere SMB dependencias como Active Directory).
ACL de NFSv4.1
Google Cloud NetApp Volumes ofrece compatibilidad con las listas de control de acceso (ACL) de NFSv4.x, que ofrecen distintas ventajas con respecto a los permisos normales de estilo POSIX, como las siguientes:
-
Control granular del acceso de los usuarios a los archivos y directorios
-
Mejor seguridad NFS
-
Interoperabilidad mejorada con CIFS/SMB
-
Eliminación de la limitación NFS de 16 grupos por usuario con seguridad AUTH_SYS
-
Las ACL omiten la necesidad de resolución del ID de grupo (GID), que elimina de forma efectiva las ACL de GID limitNFSv4,1 que se controlan desde los clientes NFS (no desde volúmenes de NetApp de Google Cloud). Para utilizar las ACL de NFSv4.1, asegúrese de que la versión de software de su cliente las admite y de que están instaladas las utilidades NFS adecuadas.
Compatibilidad entre las ACL de NFSv4.1 y los clientes de SMB
Las ACL de NFSv4 son distintas de las de ACL de nivel de archivo de Windows (ACL de NTFS), pero llevan funciones similares. Sin embargo, en los entornos NAS multiprotocolo, si hay ACL de NFSv4.1 y utiliza acceso de doble protocolo (NFS y SMB en los mismos conjuntos de datos), los clientes que utilicen SMB2.0 y versiones posteriores no podrán ver ni gestionar ACL desde pestañas de seguridad de Windows.
Cómo funcionan las ACL de NFSv4.1
Como referencia, se definen los siguientes términos:
-
Lista de control de acceso (ACL). una lista de entradas de permisos.
-
Entrada de control de acceso (ACE). Entrada de permiso en la lista.
Cuando un cliente establece una ACL de NFSv4,1 en un archivo durante una operación SETATTR, los volúmenes de Google Cloud NetApp establecen esa ACL en el objeto, reemplazando cualquier ACL existente. Si no hay ACL en un archivo, los permisos de modo en el archivo se calculan a partir de OWNER@, GROUP@ y EVERYONE@. Si hay algún bit SUID/SGID/STICKY existente en el archivo, no se verán afectados.
Cuando un cliente obtiene una ACL de NFSv4,1 en un archivo durante el transcurso de una OPERACIÓN GETATTR, Google Cloud NetApp Volumes lee la ACL de NFSv4,1 asociada con el objeto, crea una lista de ACL y devuelve la lista al cliente. Si el archivo tiene una ACL de NT o bits de modo, se crea una ACL a partir de bits de modo y se devuelve al cliente.
Se deniega el acceso si EXISTE UNA ACE DENEGADA en la ACL; el acceso se concede si existe una ACE DE PERMISO. Sin embargo, también se deniega el acceso si ninguno de los ACE está presente en el ACL.
Un descriptor de seguridad consiste en una ACL de seguridad (SACL) y una ACL discrecional (DACL). Cuando NFSv4.1 interactúa con CIFS/SMB, el DACL se asigna de uno a uno con NFSv4 y CIFS. El DACL consta de LOS ACs PERMITIR Y DENEGAR.
Si es un básico chmod
Se ejecuta en un archivo o carpeta con conjuntos de ACL de NFSv4.1, se conservan las ACL de usuario y grupo existentes, pero se modifican las ACL de PROPIETARIO@, GRUPO@ y TODOS@ predeterminadas.
Un cliente que utilice las ACL de NFSv4.1 puede definir y ver ACL de archivos y directorios en el sistema. Cuando se crea un archivo o subdirectorio nuevo en un directorio que tiene una ACL, ese objeto hereda todos los ACE de la ACL que se han etiquetado con el correspondiente "indicadores de herencia".
Si un archivo o directorio tiene una ACL de NFSv4.1, esa ACL se utiliza para controlar el acceso, independientemente de qué protocolo se utilice para acceder al archivo o directorio.
Los archivos y directorios heredan los ACE de las ACL de NFSv4 en directorios principales (posiblemente con las modificaciones adecuadas) siempre que se hayan etiquetado los ACE con las marcas de herencia correctas.
Cuando se crea un archivo o directorio como resultado de una solicitud de NFSv4, la ACL del archivo o directorio resultante depende de si la solicitud de creación de archivos incluye una ACL o solo permisos de acceso estándar a archivos UNIX. La ACL también depende de si el directorio primario tiene una ACL.
-
Si la solicitud incluye una ACL, se utiliza esa ACL.
-
Si la solicitud incluye sólo permisos de acceso estándar a archivos UNIX y el directorio principal no tiene una ACL, el modo de archivo de cliente se utiliza para establecer permisos de acceso estándar a archivos UNIX.
-
Si la solicitud incluye sólo permisos de acceso estándar a archivos UNIX y el directorio primario tiene una ACL no heredable, se establece una ACL predeterminada basada en los bits de modo pasados a la solicitud en el nuevo objeto.
-
Si la solicitud incluye sólo permisos de acceso estándar a archivos UNIX pero el directorio principal tiene una ACL, el archivo o directorio nuevos heredan los ACE de la ACL del directorio principal siempre que se hayan etiquetado los ACE con los indicadores de herencia correspondientes.
Permisos ACE
Los permisos de ACL de NFSv4.1 utilizan una serie de valores de letras mayúsculas y minúsculas (como rxtncy
) para controlar el acceso. Para obtener más información acerca de estos valores de letra, consulte "CÓMO: Utilizar NFSv4 ACL".
Comportamiento de ACL de NFSv4.1 con herencia umask y ACL
"Las ACL de NFSv4 proporcionan la capacidad de ofrecer herencia de ACL". La herencia de ACL significa que los archivos o carpetas creados debajo de los objetos con conjuntos de ACL de NFSv4.1 pueden heredar las ACL según la configuración de "Indicador de herencia de ACL".
"Umask" se utiliza para controlar el nivel de permiso en el que se crean archivos y carpetas en un directorio sin interacción del administrador. De forma predeterminada, Google Cloud NetApp Volumes permite que umask anule las ACL heredadas, que es el comportamiento esperado según "RFC 5661" .
Formato de ACL
Las ACL de NFSv4.1 tienen formato específico. El ejemplo siguiente es un conjunto ACE en un archivo:
A::ldapuser@domain.netapp.com:rwatTnNcCy
El ejemplo anterior sigue las directrices de formato ACL de:
type:flags:principal:permissions
Tipo de A
significa “permitir”. Los indicadores heredar no se establecen en este caso, porque el principal no es un grupo y no incluye la herencia. Además, como ACE no es una entrada DE AUDITORÍA, no es necesario establecer los indicadores de auditoría. Para obtener más información sobre las ACL de NFSv4.1, consulte "http://linux.die.net/man/5/nfs4_acl".
Si la ACL de NFSv4.1 no se establece correctamente (o el cliente y el servidor no pueden resolver una cadena de nombre), es posible que la ACL no se comporte como se espera o que el cambio de ACL no se pueda aplicar y generar un error.
Los errores de muestra son los siguientes:
Failed setxattr operation: Invalid argument Scanning ACE string 'A:: user@rwaDxtTnNcCy' failed.
RECHAZO explícito
Los permisos de NFSv4.1 pueden incluir atributos DE DENEGACIÓN explícitos para EL PROPIETARIO, EL GRUPO Y TODOS. Esto se debe a que las ACL de NFSv4.1 son denegadas por defecto, lo que significa que si un ACE no concede explícitamente una ACL, se deniega. Los atributos DE DENEGACIÓN explícita anulan cualquier ACE de ACCESO, explícita o no.
DENEGAR ACE se establece con una etiqueta de atributo de D
.
En el siguiente ejemplo, SE permite a GROUP@ todos los permisos de lectura y ejecución, pero se le deniega todo el acceso de escritura.
sh-4.1$ nfs4_getfacl /mixed A::ldapuser@domain.netapp.com:ratTnNcCy A::OWNER@:rwaDxtTnNcCy D::OWNER@: A:g:GROUP@:rxtncy D:g:GROUP@:waDTC A::EVERYONE@:rxtncy D::EVERYONE@:waDTC
DENEGAR ACs debe evitarse siempre que sea posible porque pueden ser confusos y complicados; PERMITIR que las ACL que no están definidas explícitamente se deniegan implícitamente. Cuando SE establecen LAS ACE DENEGADAS, es posible que se deniegue el acceso a los usuarios cuando esperan que se les conceda el acceso.
El conjunto anterior de ACE es equivalente a 755 bits de modo, lo que significa:
-
El propietario tiene derechos completos.
-
Los grupos tienen sólo lectura.
-
Otros sólo han leído.
Sin embargo, incluso si los permisos se ajustan al equivalente de 775, se puede denegar el acceso debido a LA DENEGACIÓN explícita establecida en TODOS.
Dependencias de asignación de dominio de ID de NFSv4.1
NFSv4.1 aprovecha la lógica de asignación de dominio de ID como capa de seguridad para ayudar a verificar que un usuario que intenta acceder a un montaje de NFSv4.1 es realmente lo que afirman que es. En estos casos, el nombre de usuario y el nombre de grupo que proviene del cliente NFSv4,1 añade una cadena de nombre y la envía a la instancia de Google Cloud NetApp Volumes. Si esa combinación de nombre de usuario/grupo y cadena de ID no coincide, el usuario y/o grupo se aplaza con el usuario Nadie especificado por defecto en el /etc/idmapd.conf
archivo del cliente.
Esta cadena de ID es un requisito para la observancia correcta de los permisos, especialmente cuando se utilizan las ACL de NFSv4.1 y/o Kerberos. Como resultado, las dependencias del servidor del servicio de nombres, como los servidores LDAP, son necesarias para garantizar la coherencia entre los clientes y los volúmenes de Google Cloud NetApp con el fin de lograr una resolución adecuada de la identidad de los nombres de usuarios y grupos.
Google Cloud NetApp Volumes usa un valor de nombre de dominio de ID predeterminado estático de defaultv4iddomain.com
. Los clientes NFS utilizan por defecto el nombre de dominio DNS para su configuración de nombre de dominio ID, pero puede ajustar manualmente el nombre de dominio ID en /etc/idmapd.conf
.
Si LDAP está habilitado en Google Cloud NetApp Volumes, Google Cloud NetApp Volumes automatiza el dominio de ID de NFS para cambiar al configurado para el dominio de búsqueda en DNS, y los clientes no tendrán que modificarse a menos que utilicen nombres de búsqueda de dominio DNS diferentes.
Cuando los volúmenes de NetApp de Google Cloud pueden resolver un nombre de usuario o un nombre de grupo en archivos locales o LDAP, se utiliza la cadena de dominio y los ID de dominio sin coincidencia se reducen a nadie. Si Google Cloud NetApp Volumes no puede encontrar un nombre de usuario o un nombre de grupo en los archivos locales o LDAP, se utiliza el valor de ID numérico y el cliente NFS resuelve el nombre correctamente (es similar al comportamiento de NFSv3).
Sin cambiar el dominio de ID de NFSv4,1 del cliente para que coincida con lo que usa el volumen de volúmenes de NetApp de Google Cloud, se observará el siguiente comportamiento:
-
Los usuarios y grupos de UNIX con entradas locales en los volúmenes de NetApp de Google Cloud (como root, tal como se define en los grupos y usuarios locales de UNIX) se cuadran hasta el valor Nadie.
-
Los usuarios y grupos de UNIX con entradas en LDAP (si los volúmenes de NetApp de Google Cloud están configurados para usar LDAP) se desplazan a nadie si los dominios DNS son diferentes entre los clientes NFS y los volúmenes de NetApp de Google Cloud.
-
Los usuarios y grupos de UNIX que no tienen entradas locales ni entradas LDAP utilizan el valor de ID numérico y resuelven el nombre especificado en el cliente NFS. Si no existe ningún nombre en el cliente, sólo se muestra el ID numérico.
A continuación se muestran los resultados de la situación anterior:
# ls -la /mnt/home/prof1/nfs4/ total 8 drwxr-xr-x 2 nobody nobody 4096 Feb 3 12:07 . drwxrwxrwx 7 root root 4096 Feb 3 12:06 .. -rw-r--r-- 1 9835 9835 0 Feb 3 12:07 client-user-no-name -rw-r--r-- 1 nobody nobody 0 Feb 3 12:07 ldap-user-file -rw-r--r-- 1 nobody nobody 0 Feb 3 12:06 root-user-file
Cuando los dominios de ID de cliente y servidor coinciden, así es como el mismo aspecto del listado de archivos:
# ls -la total 8 drwxr-xr-x 2 root root 4096 Feb 3 12:07 . drwxrwxrwx 7 root root 4096 Feb 3 12:06 .. -rw-r--r-- 1 9835 9835 0 Feb 3 12:07 client-user-no-name -rw-r--r-- 1 apache apache-group 0 Feb 3 12:07 ldap-user-file -rw-r--r-- 1 root root 0 Feb 3 12:06 root-user-file
Para obtener más información acerca de este problema y cómo resolverlo, consulte la sección “NFSv4.1 y el usuario/grupo nadie.”
Dependencias de Kerberos
Si piensa utilizar Kerberos con NFS, debe disponer de lo siguiente con Google Cloud NetApp Volumes:
-
Dominio de Active Directory para servicios del centro de distribución Kerberos (KDC)
-
Dominio de Active Directory con atributos de usuario y de grupo incluidos con la información UNIX para la funcionalidad LDAP (Kerberos para NFS en los volúmenes de NetApp de Google Cloud requiere una asignación de usuario SPN a UNIX para disponer de la funcionalidad adecuada).
-
LDAP habilitado en la instancia de Google Cloud NetApp Volumes
-
Dominio de Active Directory para servicios DNS
NFSv4.1 y el usuario/grupo nadie
Uno de los problemas más comunes que se ven con una configuración de NFSv4.1 es cuando se muestra un archivo o una carpeta en un listado mediante ls
como propiedad de la user:group
combinación de nobody:nobody
.
Por ejemplo:
sh-4.2$ ls -la | grep prof1-file -rw-r--r-- 1 nobody nobody 0 Apr 24 13:25 prof1-file
Y el ID numérico es 99
.
sh-4.2$ ls -lan | grep prof1-file -rw-r--r-- 1 99 99 0 Apr 24 13:25 prof1-file
En algunos casos, es posible que el archivo muestre el propietario correcto pero nobody
como grupo.
sh-4.2$ ls -la | grep newfile1 -rw-r--r-- 1 prof1 nobody 0 Oct 9 2019 newfile1
¿Quién no es nadie?
La nobody
El usuario de NFSv4.1 es diferente del nfsnobody
usuario. Puede ver cómo un cliente NFS ve cada usuario ejecutando el id
comando:
# id nobody uid=99(nobody) gid=99(nobody) groups=99(nobody) # id nfsnobody uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
Con NFSv4.1, el nobody
user es el usuario predeterminado definido por idmapd.conf
file y puede definirse como cualquier usuario que desee utilizar.
# cat /etc/idmapd.conf | grep nobody #Nobody-User = nobody #Nobody-Group = nobody
¿Por qué sucede esto?
Puesto que la seguridad mediante la asignación de cadenas de nombres es un conjunto de claves de las operaciones de NFSv4.1, el comportamiento predeterminado cuando una cadena de nombres no coincide correctamente es squash a ese usuario con uno que normalmente no tendrá acceso a los archivos y carpetas que pertenecen a usuarios y grupos.
Cuando vea nobody
Para el usuario o el grupo de los listados de archivos, esto generalmente significa que hay algo configurado para NFSv4.1. Aquí puede entrar en juego la sensibilidad del caso.
Por ejemplo, si user1@CVSDEMO.LOCAL (uid 1234, gid 1234) accede a una exportación, los volúmenes de NetApp de Google Cloud deben poder encontrar user1@CVSDEMO.LOCAL (uid 1234, gid 1234). Si el usuario de Google Cloud NetApp Volumes es USER1@CVSDEMO.LOCAL, no coincidirá (User1 en mayúsculas frente a user1 en minúsculas). En muchos casos, puede ver lo siguiente en el archivo de mensajes del cliente:
May 19 13:14:29 centos7 nfsidmap[17481]: nss_getpwnam: name 'root@defaultv4iddomain.com' does not map into domain 'CVSDEMO.LOCAL' May 19 13:15:05 centos7 nfsidmap[17534]: nss_getpwnam: name 'nobody' does not map into domain 'CVSDEMO.LOCAL'
El cliente y el servidor deben aceptar que un usuario es realmente quien dice ser, por lo que debe comprobar lo siguiente para asegurarse de que el usuario que ve tiene la misma información que el usuario que ve Google Cloud NetApp Volumes.
-
NFSv4.x dominio ID. Cliente:
idmapd.conf
Archivo; Google Cloud NetApp Volumes usadefaultv4iddomain.com
y no se puede cambiar manualmente. Si se utiliza LDAP con NFSv4,1, los volúmenes de NetApp de Google Cloud cambian el dominio de ID al que usa el dominio de búsqueda DNS, que es el mismo que el dominio de AD. -
Nombre de usuario e ID numéricos. Esto determina dónde busca el cliente nombres de usuario y aprovecha la configuración del switch del servicio de nombres (cliente
nsswitch.conf
: Y/o archivos de grupo y passwd locales; Google Cloud NetApp Volumes no permite modificaciones a este aspecto, pero añade automáticamente LDAP a la configuración cuando se habilita. -
Nombre del grupo e ID numéricos. Esto determina dónde busca el cliente nombres de grupo y aprovecha la configuración del switch del servicio de nombres (cliente
nsswitch.conf
: Y/o archivos de grupo y passwd locales; Google Cloud NetApp Volumes no permite modificaciones a este aspecto, pero añade automáticamente LDAP a la configuración cuando se habilita.
En prácticamente todos los casos, si te ves nobody
en listas de usuarios y grupos de clientes, el problema es la traducción de ID de dominio de nombre de usuario o grupo entre los volúmenes de Google Cloud NetApp y el cliente NFS. Para evitar esta situación, utilice LDAP para resolver la información de usuarios y grupos entre clientes y Google Cloud NetApp Volumes.
Ver cadenas de ID de nombres para NFSv4.1 en clientes
Si utiliza NFSv4.1, hay una asignación de cadena de nombre que se realiza durante las operaciones de NFS, como se ha descrito anteriormente.
Además de utilizar /var/log/messages
Para encontrar un problema con los ID de NFSv4, puede utilizar la "nfsidmap -l" Comando en el cliente NFS para ver los nombres de usuario que se han asignado correctamente al dominio de NFSv4.
Por ejemplo, se muestra el comando cuando un usuario que el cliente puede encontrar y los volúmenes de NetApp de Google Cloud acceden a un montaje de NFSv4.x:
# nfsidmap -l 4 .id_resolver keys found: gid:daemon@CVSDEMO.LOCAL uid:nfs4@CVSDEMO.LOCAL gid:root@CVSDEMO.LOCAL uid:root@CVSDEMO.LOCAL
Cuando un usuario que no se asigna correctamente al dominio de ID de NFSv4.1 (en este caso, netapp-user
) intenta acceder al mismo montaje y toca un archivo, están asignados nobody:nobody
, según lo esperado.
# su netapp-user sh-4.2$ id uid=482600012(netapp-user), 2000(secondary) sh-4.2$ cd /mnt/nfs4/ sh-4.2$ touch newfile sh-4.2$ ls -la total 16 drwxrwxrwx 5 root root 4096 Jan 14 17:13 . drwxr-xr-x. 8 root root 81 Jan 14 10:02 .. -rw-r--r-- 1 nobody nobody 0 Jan 14 17:13 newfile drwxrwxrwx 2 root root 4096 Jan 13 13:20 qtree1 drwxrwxrwx 2 root root 4096 Jan 13 13:13 qtree2 drwxr-xr-x 2 nfs4 daemon 4096 Jan 11 14:30 testdir
La nfsidmap -l
salida muestra al usuario pcuser
en la pantalla pero no netapp-user
; éste es el usuario anónimo en nuestra regla de política de exportación (65534
).
# nfsidmap -l 6 .id_resolver keys found: gid:pcuser@CVSDEMO.LOCAL uid:pcuser@CVSDEMO.LOCAL gid:daemon@CVSDEMO.LOCAL uid:nfs4@CVSDEMO.LOCAL gid:root@CVSDEMO.LOCAL uid:root@CVSDEMO.LOCAL