Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ recursos compartidos de archivos SMB
Azure Files soporta autenticación basada en identidad sobre Server Message Block (SMB) para máquinas virtuales Linux (VMs) utilizando el protocolo de autenticación Kerberos con Active Directory Domain Services (AD DS) local local. Para utilizar este procedimiento, debes sincronizar tu entorno AD DS con Microsoft Entra ID utilizando Microsoft Entra Connect Sync.
Para obtener más información sobre las opciones y consideraciones admitidas, vea Información general sobre las opciones de autenticación basadas en identidades de Azure Files para el acceso SMB.
Nota:
En este artículo se usa Ubuntu para los pasos de ejemplo. Configuraciones similares funcionan para clientes RHEL y SLES, permitiéndote montar composiciones de archivos en Azure usando AD DS local.
Limitaciones del cliente SMB de Linux
No puedes usar la autenticación basada en identidad para montar recursos compartidos de archivos de Azure en clientes Linux durante el arranque mediante entradas fstab. Esta limitación existe porque el cliente no puede obtener el ticket de Kerberos lo suficientemente pronto para montarlo en el momento de arranque. Puede usar una fstab entrada y especificar la noauto opción para permitir que un usuario monte el recurso compartido de archivos después de iniciar sesión mediante un comando de montaje simple sin todos los parámetros. También puede usar autofs para montar el recurso compartido tras el acceso.
Prerrequisitos
Antes de configurar un cliente Linux para usar autenticación AD DS local sobre SMB para compartir archivos en Azure, cumple los siguientes requisitos previos:
- Una máquina virtual Linux que ejecute Ubuntu 18.04+, o una máquina virtual RHEL o SLES equivalente. La máquina virtual debe tener conectividad de red a tus controladores de dominio AD DS locales y usar servidores DNS que puedan resolver el dominio AD DS.
- Un entorno AD DS local sincronizado con Microsoft Entra ID mediante Microsoft Entra Connect Sync.
- Un recurso compartido de archivos de Azure para SMB en una cuenta de almacenamiento configurada para usar la autenticación de AD DS local.
- Credenciales de usuario raíz o usuario en una cuenta de usuario local que tiene derechos de sudo completos (para esta guía, localadmin).
- La máquina virtual de Linux no está ya unida a otro dominio de AD DS. Si es así, abandona ese dominio antes de unir la VM a este dominio.
- Una cuenta de usuario de dominio AD DS con permiso para unir ordenadores al dominio.
La instalación del paquete samba no es estrictamente necesaria, pero proporciona algunas herramientas útiles y trae otros paquetes automáticamente, como samba-common y smbclient. Ejecute los siguientes comandos para instalarlo. Si se le pide algún valor de entrada durante la instalación, déjelos en blanco.
sudo apt update -y
sudo apt install samba winbind libpam-winbind libnss-winbind krb5-config krb5-user keyutils cifs-utils
La wbinfo herramienta forma parte del conjunto de samba y es útil para fines de autenticación y depuración, como comprobar si el controlador de dominio es accesible, comprobar a qué dominio está unido una máquina y buscar información sobre los usuarios.
Asegúrate de que el host de Linux mantenga la hora sincronizada con los controladores de dominio de AD DS. Consulta la documentación de tu distribución Linux. Para algunas distribuciones, puedes hacerlo usando systemd-timesyncd. Edito /etc/systemd/timesyncd.conf para incluir la siguiente configuración. Sustituye ntp.server por el mismo nombre de host o dirección IP del Protocolo de Tiempo de Red (NTP) que utiliza tu entorno AD DS.
[Time]
NTP=ntp.server
FallbackNTP=ntp.ubuntu.com
A continuación, reinicie el servicio:
sudo systemctl restart systemd-timesyncd.service
Activar la autenticación Kerberos de AD DS
Sigue estos pasos para habilitar la autenticación Kerberos con AD DS local. Para más información sobre cómo configurar Samba, véase Configuración de Samba como Miembro de Dominio.
Asegúrate de que los controladores de dominio AD DS sean accesibles y descubribles
Asegúrate de que los servidores DNS configurados puedan resolver tu dominio AD DS y los controladores de dominio.
systemd-resolve --statusGlobal DNSSEC NTA: 10.in-addr.arpa 16.172.in-addr.arpa 168.192.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa corp d.f.ip6.arpa home internal intranet lan local private test Link 2 (eth0) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 10.0.2.5 10.0.2.4 10.0.0.41 DNS Domain: domain1.contoso.comSi los servidores DNS contienen las direcciones IP del controlador de dominio, procede a Configurar nombre de host y FQDN. Si el comando no produce la salida esperada, consulta Solucionar problemas de detección del controlador de dominio AD DS.
Solucionar problemas de detección del controlador de dominio de AD DS
Asegúrate de poder hacer ping a las direcciones IP del controlador de dominio AD DS.
ping 10.0.2.5PING 10.0.2.5 (10.0.2.5) 56(84) bytes of data. 64 bytes from 10.0.2.5: icmp_seq=1 ttl=128 time=0.898 ms 64 bytes from 10.0.2.5: icmp_seq=2 ttl=128 time=0.946 ms ^C --- 10.0.2.5 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.898/0.922/0.946/0.024 msSi el ping no funciona, revisa los requisitos previos y asegúrate de que tu máquina virtual tenga conectividad de red con los controladores de dominio de AD DS.
Si las direcciones IP responden a ping pero los servidores DNS no se detectan automáticamente, puede agregar los servidores DNS manualmente. Edite
/etc/netplan/50-cloud-init.yamlcon su editor de texto favorito.# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: eth0: dhcp4: true dhcp4-overrides: route-metric: 100 dhcp6: false match: macaddress: 00:22:48:03:6b:c5 set-name: eth0 nameservers: addresses: [10.0.2.5, 10.0.2.4] version: 2A continuación, aplique los cambios:
sudo netplan --debug applyWinbind supone que el servidor DHCP mantiene actualizados los registros DNS del dominio. Sin embargo, esta suposición no es cierta para Azure DHCP. Para configurar el cliente para realizar actualizaciones de DDNS, use esta guía para crear un script de red. Este es un script de ejemplo que reside en
/etc/dhcp/dhclient-exit-hooks.d/ddns-update.#!/bin/sh # only execute on the primary nic if [ "$interface" != "eth0" ] then return fi # When you have a new IP, perform nsupdate if [ "$reason" = BOUND ] || [ "$reason" = RENEW ] || [ "$reason" = REBIND ] || [ "$reason" = REBOOT ] then host=`hostname -f` nsupdatecmds=/var/tmp/nsupdatecmds echo "update delete $host a" > $nsupdatecmds echo "update add $host 3600 a $new_ip_address" >> $nsupdatecmds echo "send" >> $nsupdatecmds nsupdate $nsupdatecmds fi
Tras resolver el problema, procede a configurar un nombre de host y un nombre de dominio totalmente cualificado.
Configuración del nombre de host y el nombre de dominio completo (FQDN)
Con el editor de texto, actualice el /etc/hosts archivo con el FQDN final (después de unir el dominio) y el alias del host. La dirección IP no importa por ahora porque esta línea se usa principalmente para traducir el nombre de host corto a FQDN. Para obtener más información, vea Configurar Samba como miembro de dominio.
127.0.0.1 contosovm.contosodomain.contoso.com contosovm
#cmd=sudo vim /etc/hosts
#then enter this value instead of localhost "ubuntuvm.contosodomain.contoso.com UbuntuVM"
Ahora, verifica que tu nombre de host se resuelva correctamente ejecutando los siguientes tres comandos.
Use getent hosts para confirmar que el nombre de host corto se resuelve en el nombre de dominio completo (FQDN) correspondiente. Puedes ignorar la dirección IP que te devuelven.
getent hosts contosovm
127.0.0.1 contosovm.contosodomain.contoso.com contosovm
Úsalo dnsdomainname para confirmar que el nombre de dominio está configurado correctamente.
dnsdomainname
contosodomain.contoso.com
Úsalo hostname -f para confirmar que el FQDN completo está resuelto.
hostname -f
contosovm.contosodomain.contoso.com
Nota:
Algunas distribuciones de Linux requieren que ejecutes el comando hostnamectl para que se actualice hostname -f:
hostnamectl set-hostname contosovm.contosodomain.contoso.com
Configuración de krb5.conf
Configura /etc/krb5.conf para que el centro de distribución de claves Kerberos (KDC) en un controlador de dominio AD DS pueda ser contactado para la autenticación. Para obtener más información, consulte Documentación de Kerberos MIT. Este es un archivo /etc/krb5.conf de muestra.
[libdefaults]
default_realm = CONTOSODOMAIN.CONTOSO.COM
dns_lookup_realm = false
dns_lookup_kdc = true
Configuración de smb.conf
Identifique la ruta de acceso a smb.conf.
sudo smbd -b | grep "CONFIGFILE"
CONFIGFILE: /etc/samba/smb.conf
Cambia la configuración de la SMB para que actúe como miembro del dominio AD DS. El siguiente ejemplo utiliza el rid backend idmap. Revisa Cómo elegir un backend de idmap y selecciona el backend que cumpla con los requisitos de tu entorno de AD DS.
[global]
workgroup = CONTOSODOMAIN
security = ADS
realm = CONTOSODOMAIN.CONTOSO.COM
winbind refresh tickets = Yes
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes
dedicated keytab file = /etc/krb5.keytab
kerberos method = secrets and keytab
winbind use default domain = Yes
load printers = No
printing = bsd
printcap name = /dev/null
disable spoolss = Yes
log file = /var/log/samba/log.%m
log level = 1
idmap config * : backend = tdb
idmap config * : range = 3000-7999
idmap config CONTOSODOMAIN : backend = rid
idmap config CONTOSODOMAIN : range = 10000-999999
template shell = /bin/bash
template homedir = /home/%U
Forzar winbind para volver a cargar el archivo de configuración cambiado.
sudo smbcontrol all reload-config
Únete al dominio AD DS
Use el net ads join comando para unir el host al dominio. Si el comando devuelve un error, consulte Solución de problemas de miembros del dominio samba para resolver el problema.
sudo net ads join -U contososmbadmin
Enter contososmbadmin's password:
Using short domain name -- CONTOSODOMAIN
Joined 'CONTOSOVM' to dns domain 'contosodomain.contoso.com'
Asegúrate de que el registro DNS de este host exista en ADS DNS DNS.
nslookup contosovm.contosodomain.contoso.com 10.0.2.5
Server: 10.0.2.5
Address: 10.0.2.5#53
Name: contosovm.contosodomain.contoso.com
Address: 10.0.0.8
Configuración de nsswitch.conf
Si planea que los usuarios inicien sesión activamente en máquinas cliente y accedan a los recursos compartidos de archivos de Azure, debe configurar nsswitch.conf. Si el acceso planeado está limitado a las aplicaciones representadas por una cuenta de usuario o una cuenta de equipo que necesitan autenticación Kerberos para acceder al recurso compartido de archivos, puede omitir este paso.
Después de unir el host al dominio, agregue las bibliotecas winbind a las rutas de búsqueda de usuarios y grupos. Use el editor de texto para editar /etc/nsswitch.conf y agregar las siguientes entradas:
passwd: compat systemd winbind
group: compat systemd winbind
Habilite el servicio winbind para que se inicie automáticamente al reiniciarse.
sudo systemctl enable winbind
Synchronizing state of winbind.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable winbind
Reinicie el servicio.
sudo systemctl restart winbind
sudo systemctl status winbind
winbind.service - Samba Winbind Daemon
Loaded: loaded (/lib/systemd/system/winbind.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-24 09:34:31 UTC; 10s ago
Docs: man:winbindd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 27349 (winbindd)
Status: "winbindd: ready to serve connections..."
Tasks: 2 (limit: 4915)
CGroup: /system.slice/winbind.service
├─27349 /usr/sbin/winbindd --foreground --no-process-group
└─27351 /usr/sbin/winbindd --foreground --no-process-group
Apr 24 09:34:31 contosovm systemd[1]: Starting Samba Winbind Daemon...
Apr 24 09:34:31 contosovm winbindd[27349]: [2020/04/24 09:34:31.724211, 0] ../source3/winbindd/winbindd_cache.c:3170(initialize_winbindd_cache)
Apr 24 09:34:31 contosovm winbindd[27349]: initialize_winbindd_cache: clearing cache and re-creating with version number 2
Apr 24 09:34:31 contosovm winbindd[27349]: [2020/04/24 09:34:31.725486, 0] ../lib/util/become_daemon.c:124(daemon_ready)
Apr 24 09:34:31 contosovm systemd[1]: Started Samba Winbind Daemon.
Apr 24 09:34:31 contosovm winbindd[27349]: STATUS=daemon 'winbindd' finished starting up and ready to serve connections
Asegúrese de que se detectan los usuarios y grupos del dominio.
getent passwd contososmbadmin
contososmbadmin:*:12604:10513::/home/contososmbadmin:/bin/bash
getent group 'domain users'
domain users:x:10513:
Si los pasos anteriores no funcionan, comprueba si un controlador de dominio de AD DS es accesible usando la wbinfo herramienta:
wbinfo --ping-dc
Configuración de PAM para winbind
Si planea que los usuarios inicien sesión activamente en máquinas cliente y accedan a los recursos compartidos de archivos de Azure, debe configurar PAM para winbind. Si el acceso planeado está limitado a las aplicaciones representadas por una cuenta de usuario o una cuenta de equipo que necesitan autenticación Kerberos para acceder al recurso compartido de archivos, puede omitir este paso.
Coloque winbind en la pila de autenticación para que los usuarios del dominio se autentiquen a través de winbind mediante la configuración de PAM (módulo de autenticación conectable) para winbind. El segundo comando garantiza que el sistema crea el directorio principal para un usuario de dominio tras el primer inicio de sesión.
sudo pam-auth-update --enable winbind
sudo pam-auth-update --enable mkhomedir
Verifica que la configuración de autenticación PAM tenga los argumentos correctos pam_winbind.so en /etc/pam.d/common-auth:
grep pam_winbind.so /etc/pam.d/common-auth
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
Si el comando no devuelve salida, se vuelve a ejecutar sudo pam-auth-update --enable winbind para asegurarse de que winbind se añade a la pila de autenticación PAM.
Ahora puede iniciar sesión en este sistema como usuario del dominio, ya sea a través de ssh, su o cualquier otro medio de autenticación.
su - contososmbadmin
Password:
Creating directory '/home/contososmbadmin'.
contososmbadmin@contosovm:~$ pwd
/home/contososmbadmin
contososmbadmin@contosovm:~$ id
uid=12604(contososmbadmin) gid=10513(domain users) groups=10513(domain users),10520(group policy creator owners),10572(denied rodc password replication group),11102(dnsadmins),11104(aad dc administrators),11164(group-readwrite),11165(fileshareallaccess),12604(contososmbadmin)
Verifica la autenticación de AD DS en Linux
Para verificar que la máquina cliente está unida al dominio AD DS, busca el FQDN del cliente usando un servidor DNS AD DS y confirma que la entrada DNS existe para el cliente. En muchos casos, <dnsserver> es el mismo que el nombre de dominio AD DS al que está unido el cliente.
nslookup <clientname> <dnsserver>
A continuación, corre klist para ver los tickets en la caché de Kerberos:
klist
La salida debería incluir una entrada que empiece por krbtgt y que se parezca a:
krbtgt/CONTOSODOMAIN.CONTOSO.COM@CONTOSODOMAIN.CONTOSO.COM
Si no configuraste PAM para winbind, klist podría no mostrar la entrada del ticket. En este caso, puede autenticar manualmente al usuario para obtener los boletos:
wbinfo -K contososmbadmin
También puede ejecutar el comando como parte de un script:
wbinfo -K 'contososmbadmin%SUPERSECRETPASSWORD'
Montaje del recurso compartido de archivos
Después de habilitar la autenticación Kerberos y unir su máquina virtual Linux a un dominio, puede montar el recurso compartido de archivos.
Utilice la siguiente opción de montaje con todos los modelos de control de acceso para habilitar la seguridad Kerberos: sec=krb5. Omita el nombre de usuario y la contraseña cuando use sec=krb5. Por ejemplo:
sudo mount -t cifs $SMB_PATH $MNT_PATH -o sec=krb5,cruid=$UID,serverino,nosharesock,actimeo=30,mfsymlinks
Nota:
Esta característica solo admite un modelo de control de acceso aplicado por el servidor que usa ACL NT sin bits de modo. Las herramientas de Linux que actualizan las ACL nt son mínimas, por lo que las ACL se actualizan a través de Windows. Los modelos de control de acceso aplicados por el cliente (modefromsid,idsfromsid) y el control de acceso traducido por el cliente (cifsacl) no se admiten actualmente.
Opciones adicionales de montaje SMB de Azure Files para Linux
Montaje de usuario único frente a montaje de múltiples usuarios
En un caso de uso de montaje para un solo usuario, un solo usuario en el dominio AD DS accede al punto de montaje y no lo comparte con otros usuarios en el dominio. Cada acceso a un archivo se produce en el contexto del usuario cuyas credenciales krb5 se usan para montar el recurso compartido de archivos. Cualquier usuario del sistema local que acceda al punto de montaje suplanta a ese usuario.
En un caso de uso de montaje multiusuario, sigue existiendo un único punto de montaje, pero varios usuarios de AD DS pueden acceder a ese mismo punto de montaje. En escenarios en los que varios usuarios del mismo cliente acceden al mismo recurso compartido y el sistema está configurado para Kerberos y montado con sec=krb5, considere la posibilidad de usar la multiuser opción de montaje.
Permisos de archivo
Los permisos de archivo son importantes, especialmente si tanto Linux como Windows clientes acceden al recurso compartido de archivos. Para convertir permisos de archivo en DACL en archivos, use una opción de montaje predeterminada, como file_mode=<>,dir_mode=<>. El cliente solo aplica los permisos de archivo especificados como file_mode y dir_mode. El servidor aplica el control de acceso en función del descriptor de seguridad del archivo o del directorio.
Propiedad del archivo
La propiedad de los archivos es importante, especialmente si los clientes de Linux y Windows acceden al recurso de archivos compartido. Elija una de las siguientes opciones de montaje para convertir el UID/GID del propietario del archivo al SID del propietario/grupo en la DACL del archivo.
- Use un valor predeterminado como uid=<>,gid=<>
- Configura el mapeo UID/GID a través de RFC2307 y AD DS usando nss_winbind o nss_sssd.
Coherencia de caché de atributos de archivo
El rendimiento es importante, incluso si los atributos de archivo no siempre son precisos. El valor predeterminado de actimeo es 1 (segundo), lo que significa que los atributos de archivo se recuperan de nuevo desde el servidor si los atributos almacenados en caché tienen más de 1 segundo de antigüedad. Aumentar el valor a 60 significa que los atributos se almacenan en caché durante al menos un minuto. Para la mayoría de los casos de uso, use un valor de 30 para esta opción (actimeo=30).
Para los kernels más recientes, considere la posibilidad de establecer las características de actimeo de forma más detallada. Puede usar acdirmax para el almacenamiento en caché de revalidación de entrada de directorio y acregmax para almacenar en caché los metadatos del archivo, por ejemplo acdirmax=60,acregmax=5.
Paso siguiente
Para obtener información sobre cómo montar un recurso compartido de archivos SMB en Linux, consulte: