Experiencia de actualización clásica de SAMBA en Debian 8

Antecedentes


Hay una pequeña red local de la empresa, en la que hace aproximadamente 10 años se creó un dominio en 3rd Samba + LDAP + BIND (en la puerta de enlace) en Debian 5. De hecho, solo necesitaba autenticación de usuario y bolas de archivo. Con los años, el servidor se ha actualizado a nuevas versiones de Debian sin ningún problema. Por el momento, tiene Debian 8 y Samba 4.2 de los paquetes.

Desde Windows 7, la introducción de computadoras en el dominio, sin la muleta conocida con la edición del registro, no funcionó. La misma muleta funcionó en Win 8 y Win 10 hasta la versión 1803. Además de la imposibilidad de ingresar computadoras en el dominio, se acumularon otros problemas y, como resultado, se decidió llevar a cabo una actualización clásica. Debido a la simplicidad de la estructura LAN, se decidió utilizar el DNS interno de Samba.

Quiero decir de inmediato que el artículo no es una guía exacta, sino más bien la experiencia de llevar a cabo esta operación. La fase de prueba previa es muy recomendable. En mi caso, se tomaron imágenes del servidor para probarlas y desplegarlas en máquinas virtuales VirtualBox. Además, para probar el comportamiento de los clientes de dominio existentes, se crearon máquinas cliente Win XP SP3 y Win 10 1709 y 1803.

También quiero señalar que los errores tipográficos comunes causaron repetidamente errores. Ten cuidado

Descripción del entorno


SO: Debian 8
Dominio: samdom.local
Nombre del servidor: pdc
IP del servidor: 10.10.1.220

Proceso de transición


Actualización de paquetes a las últimas versiones + instalación de los que faltan.


En mi caso, después de la actualización, solo se tuvo que entregar krb5-user.

apt-get update apt-get upgrade apt-get install samba smbclient krb5-user winbind 

Al instalar krb5-user, el sistema hará algunas preguntas sobre el nombre del servidor y el nombre de dominio. Completamos los datos de nuestro servidor.

Parada de samba


 service samba-ad-dc stop service smbd stop service nmbd stop service winbind stop 

Transferencia de bases antiguas y configuración de samba


 mv /var/lib/samba /var/lib/samba.NT mv /etc/samba/smb.conf /etc/samba/smb.conf.NT 

Moví las bases de datos antiguas a /var/lib/samba.NT, por lo que debe volver a crear el directorio / var / lib / samba

 mkdir /var/lib/samba 

La documentación recomienda mover todas las bases de datos a una carpeta separada. En mi caso, solo gencache_notrans.tdb yacía por separado, por lo que solo tuve que transferirlo.

 cp -p /run/samba/gencache_notrans.tdb /var/lib/samba.NT 

La documentación también dice que solo se necesitan seis bases de datos:

secretos.tdb
schannel_store.tdb
passdb.tdb
gencache_notrans.tdb
group_mapping.tdb
account_policy.tdb

Sin embargo, la presencia de otros archivos en la carpeta no impidió el proceso de transición.

Inicio del proceso de actualización clásico


 samba-tool domain classicupgrade —dbdir=/var/lib/samba.NT --realm=samdom.local --dns-backend=SAMBA_INTERNAL /etc/samba/smb.conf.NT 

Observo que la documentación no recomienda usar el dominio local de nivel superior, pero en mi caso sucedió históricamente.

En la hoja que aparece en la pantalla, la contraseña del administrador parpadeará, que puede escribir si lo desea).

Si tiene problemas, antes de nuevos intentos de actualización clásica, debe recordar eliminar los archivos de la base de datos y smb.conf creados en el proceso.

 rm -f /etc/samba/smb.conf rm -rf /var/lib/samba/* 

Si todo salió bien, puedes ir al siguiente paso.

Comprobación y edición de configuraciones del servidor


En /etc/resolv.conf debería estar (si no se crea automáticamente para usted)

 domain samdom.local nameserver 10.10.1.220 

En / etc / hosts

 127.0.0.1 localhost localhost.localdomain 10.10.1.220 pdc.samdom.local pdc 

El archivo / etc / hostname debe tener un nombre de host abreviado

 pdc 

En / etc / network / interfases

 dns-nameservers 10.10.1.220 dns-search samdom.local 

Redireccionamiento de solicitudes dns


Si su servidor redirigirá las consultas DNS a Internet (y se utiliza INTERNAL_DNS Samba), debe agregar una línea desde su IP de ISP en la sección [global] en smb.conf:

 dns forwarder = ip 

En "Samba" 4.2, puede especificar solo una ip. A continuación, algunos, con un espacio.
Si el tráfico saliente se controla en su puerta de enlace, no olvide abrir el paso de paquetes udp del servidor al puerto 53.

Configurar Kerberos


Traemos /etc/krb5.conf a una forma similar:

 [libdefaults] default_realm = SAMDOM.LOCAL dns_lookup_realm = false dns_lookup_kdc = true krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] SAMDOM.LOCAL = { kdc = pdc admin_server = pdc default_domain = SAMDOM.LOCAL } [domain_realm] .samdom.local = SAMDOM.LOCAL samdom.local = SAMDOM.LOCAL 

Sincronización de tiempo


Si el paquete ntp no vale la pena, establezca:

 apt-get install ntp 

En mi caso no había directorio / var / lib / samba / ntp_signd /. Creado manualmente.

A continuación, debe otorgarle derechos:

 chown root:ntp /var/lib/samba/ntp_signd/ chmod 750 /var/lib/samba/ntp_signd/ 

A continuación, debe llevar el archivo /etc/ntp.conf a una forma similar:

 # Local clock (Note: This is not the localhost address!) server 127.127.1.0 fudge 127.127.1.0 stratum 10 # The source, where we are receiving the time from server 0.pool.ntp.org iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp ntpsigndsocket /var/lib/samba/ntp_signd/ # Access control # Default restriction: Only allow querying time (incl. ms-sntp) from this machine restrict default kod nomodify notrap nopeer mssntp # Allow everything from localhost restrict 127.0.0.1 # Allow that our time source can only provide time and do nothing else restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery 

Eliminar bofetadas y reiniciar


 apt-get remove slapd reboot 

Prueba


En la documentación, las pruebas se realizan desde la cuenta de administrador. Históricamente hemos desarrollado que las acciones administrativas provienen de domain_admin. A continuación, se mostrarán los comandos y su salida correcta.

Prueba de samba:

 root@debian:/root# smbclient -L localhost -U% Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.1.17-Debian) Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Server Comment --------- ------- Workgroup Master --------- ------- 

Si recibe un error aquí:
La conexión al loclhost falló (Error NT_STATUS_UNSUCCESSFUL)

compruebe si comienza la samba. En una prueba, olvidé eliminar (desactivar) bofetada y también vi este error.

Un cheque más:

 $ smbclient //localhost/netlogon -Udomain_admin -c 'ls' Enter Administrator's password: Domain=[SAMDOM] OS=[Unix] Server=[Samba xyz] . D 0 Tue Nov 1 08:40:00 2016 .. D 0 Tue Nov 1 08:40:00 2016 49386 blocks of size 524288. 42093 blocks available 

Prueba de DNS

 root@debian:/root# nslookup samdom.local Server: 10.10.1.220 Address: 10.10.1.220#53 Name: samdom.local Address: 10.10.1.220 

 $ host -t SRV _ldap._tcp.samdom.local. _ldap._tcp.samdom.example.com has SRV record 0 100 389 pdc.samdom.example.com. 

 $ host -t SRV _kerberos._udp.samdom.local. _kerberos._udp.samdom.example.com has SRV record 0 100 88 pdc.samdom.example.com. 

 $ host -t A pdc.samdom.local. dc1.samdom.example.com has address 10.10.1.220 

Prueba de Kerberos

 root@debian:/root# kinit domain_admin@SAMDOM.LOCAL Password for domain_admin@SAMDOM.LOCAL: Warning: Your password will expire in 41 days on  27  2015 14:34:46 

 root@debian:/root# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: domain_admin@SAMDOM.LOCAL Valid starting Expires Service principal 16.10.2015 15:07:12 17.10.2015 01:07:12 krbtgt/SAMDOM.LOCAL@SAMDOM.LOCAL renew until 17.10.2015 15:07:07 

Configuración adicional


Para que los nombres de dominio y grupos aparezcan en Linux, debe corregir /etc/nsswitch.conf en lugar de números

Las cadenas deben reducirse a la siguiente forma:
passwd: archivos winbind
grupo: archivos winbind

Tenga en cuenta que winbind se agrega solo a estas líneas. Para más detalles, consulte la documentación.
En mi caso, también eliminé la mención de ldap de este archivo.

 reboot 

Si, como yo, antes de classicupgrade dns, el servidor estaba ubicado en otra máquina y está utilizando un servidor DHCP, no olvide cambiar la configuración del servidor DHCP apuntando al servidor DNS

Configurar carpetas de red


No se recomienda a los desarrolladores usar el controlador de dominio AD como servidor de archivos. Sin embargo, en mi caso no había otros servidores.

La configuración está muy bien descrita en la documentación de "Samba" y debe buscar allí. En resumen, entonces:

Es necesario verificar el soporte de ACL samba.

 smbd -b | grep HAVE_LIBACL HAVE_LIBACL 

No olvide que la sección debe montarse con las opciones user_xattr y acl.

Solo los usuarios y grupos con SeDiskOperatorPrivilege pueden configurar los derechos de las bolas:

Por ejemplo, para otorgar tales derechos al grupo de Administradores de dominio, debe ejecutar el comando:
 net rpc rights grant "Samdom\Domain Admins" SeDiskOperatorPrivilege -U "Samdom\domain_admin" 

Directamente para agregar bolas que necesita:

Cree un directorio y asigne los derechos necesarios:

 # mkdir -p /srv/samba/Demo/ # chown root:"Domain Admins" /srv/samba/Demo/ # chmod 0770 /srv/samba/Demo/ 

agregar a smb.conf

 [Demo] path = /srv/samba/Demo/ read only = no 

Después de eso, vuelva a cargar las configuraciones de samba con el comando:

 smbcontrol all reload-config 

Como antes, las bolas se pueden ocultar agregando a su descripción:

 browseable = no 

A continuación, los derechos se distribuyen desde las ventanas de la máquina, desde una cuenta con SeDiskOperatorPrivilege . Para hacer esto, vaya a "administración de computadoras".
Aferrarse a una computadora remota (controlador de dominio pdc en nuestro caso). Distribuya los derechos a través de: "Carpetas compartidas" -> "Recursos compartidos".

Es probable que cuando vaya al elemento "Carpetas compartidas", reciba un error "El número de procedimiento está fuera de los límites permitidos (1745)". Lo ignoro porque no encontré nada inteligible en Internet y no causa problemas durante las pruebas y el funcionamiento.

Los problemas pueden ser posibles si comparte las carpetas de red antiguas de esta manera. Antes de la actualización clásica, los derechos de las bolas se establecían a través de smb.conf, usuarios de linux, grupo, otros y setfacl. Después de la actualización clásica, las escuelas con derecho a cambiar, cambiar el nombre, etc. comenzaron a aparecer gradualmente. El setfacl recursivo no ayudó, ya que aparecieron jambas con herencia de derechos.

Vale la pena señalar que en la documentación, se recomienda distribuir los derechos desde las ventanas de la máquina, a través del acceso remoto.

Como resultado, debido al volumen no muy grande de archivos, se tomó la decisión de transferir datos a una máquina Windows durante las horas no laborables, recrear carpetas de red de acuerdo con las recomendaciones de los desarrolladores de samba y volver a cargar los archivos.

Carpetas de inicio de usuario en el servidor


La gestión de las carpetas de inicio del usuario también ha cambiado.
Vale la pena señalar que el proceso desde la configuración también se describe muy bien en la documentación .
Describiré solo las características clave para mi caso.

Anteriormente, cada usuario tenía su propia pelota. Ahora solo se comparte la carpeta compartida, y los usuarios solo tienen acceso a su directorio.

La instalación se realiza utilizando las Herramientas de administración del servidor remoto de Microsoft (RSAT) . RSAT tiene una característica desagradable. Al actualizar Win 10 a una nueva versión, debe reinstalarse.

Las bolas de inicio se pueden recoger manualmente, a través de las propiedades del usuario en el complemento Usuarios y equipos. Pestaña de perfil. Disco U: \\ pdc \ user-shares \ username

Sin embargo, es más conveniente hacerlo a través de la política de dominio, que se describe muy claramente en la documentación anterior en el párrafo "Uso de una preferencia de política de grupo" .

No olvides que la bola común se puede ocultar agregando a su descripción:

 browseable = no 

Nivel de dominio arriba


El dominio se actualizó sin problemas al nivel 2008_R2 con el comando:

 samba-tool domain level raise --domain=2008_R2 --forest=2008_R2 

Puede ver el nivel con el comando:

 samba-tool domain level show 

Si smbd.log es bombardeado con errores CUPS


En mi caso, este problema apareció:

No se puede conectar al servidor local CUPS: 631

Corregido por este breve artículo.

Actualización posterior al problema y la solución de Debian 9


En

 apt-get dist-upgrade 

Hubo un problema, a saber, samba y winbind no querían actualizarse. Entró en un conflicto de dependencias.

El método del artículo ayudó al enlace que lamentablemente no guardé.
Aquí hay una cita directa de él:

si Samba está en modo AD-DC, falla y winbind falla.
siga estos comandos, luego intente ejecutar la actualización nuevamente

systemctl stop smbd nmbd winbind
systemctl deshabilitar smbd nmbd winbind
systemctl desenmascara samba-ad-dc
systemctl start samba-ad-dc
systemctl habilita samba-ad-dc


Después de actualizar la versión de SAMBA, se recomienda que: "Verificación de la base de datos de Samba AD DC".



# samba-tool dbcheck --cross-ncs

Desde que en Deb 9 SAMBA versión 4.5 recibí un montón de errores "replPropertyMetaData".
El proceso de solución de problemas se describe en la documentación:

wiki.samba.org/index.php/Updating_Samba#Fixing_replPropertyMetaData_Attributes

Y todo se reduce a la ejecución del comando:

samba-tool dbcheck --cross-ncs --fix --yes

Lista de fuentes utilizadas


Documentación de SAMBA:

Migración de un dominio Samba NT4 a Samba AD (actualización clásica)
Configurar Samba como un controlador de dominio de Active Directory
Configuración de un recurso compartido con ACL de Windows
Carpetas de inicio de usuario
Gran artículo:
Controlador de dominio Debian 8 (... que ya tiene un Samba4 incorporado)
Error de Samba: no se puede conectar al servidor local CUPS: 631
Un artículo de un autor inglés desconocido que describe cómo actualizar a Debian 9

Source: https://habr.com/ru/post/es418499/


All Articles