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
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
Configuración adicional
Para que los nombres de dominio y grupos aparezcan en Linux, debe corregir /etc/nsswitch.conf en lugar de númerosLas 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 DNSConfigurar 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
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_AttributesY 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 DirectoryConfiguración de un recurso compartido con ACL de WindowsCarpetas de inicio de usuarioGran artículo:
Controlador de dominio Debian 8 (... que ya tiene un Samba4 incorporado)Error de Samba: no se puede conectar al servidor local CUPS: 631Un artículo de un autor inglés desconocido que describe cómo actualizar a Debian 9