Contexte
Il y a un petit réseau local de l'entreprise, dans lequel il y a environ 10 ans un domaine sur 3rd Samba + LDAP + BIND (sur la passerelle) a été créé sur Debian 5. En fait, elle n'avait besoin que de l'authentification des utilisateurs et des boules de fichiers. Au fil des ans, le serveur est passé à de nouvelles versions de Debian sans aucun problème. Pour le moment, il a Debian 8 et Samba 4.2 à partir des packages.
Depuis Windows 7, l'introduction d'ordinateurs dans le domaine, sans la béquille bien connue avec la modification du registre, n'a pas fonctionné. La même béquille a fonctionné dans Win 8 et Win 10 jusqu'à la version 1803. En plus de l'impossibilité d'entrer des ordinateurs dans le domaine, d'autres problèmes se sont accumulés, et en conséquence, il a été décidé d'effectuer une mise à niveau classique. En raison de la simplicité de la structure LAN, il a été décidé d'utiliser le DNS Samba interne.
Je veux dire tout de suite que l'article n'est pas un guide exact, mais plutôt l'expérience de la réalisation de cette opération. La phase de pré-test est fortement recommandée. Dans mon cas, des images de serveur ont été prises pour être testées et déployées sur des machines virtuelles VirtualBox. Pour tester le comportement des clients de domaine existants, Win XP SP3 et Win 10 1709 et 1803 ont été créés.
Je tiens également à noter que des erreurs répétées ont été causées par des fautes de frappe courantes. Soyez prudent.
Description de l'environnement
Système d'exploitation: Debian 8
Domaine: samdom.local
Nom du serveur: pdc
IP du serveur: 10.10.1.220
Processus de transition
Mise à jour des packages vers les dernières versions + installation des manquants.
Dans mon cas, après la mise à jour, seul l'utilisateur krb5 devait être livré.
apt-get update apt-get upgrade apt-get install samba smbclient krb5-user winbind
Lors de l'installation de krb5-user, le système posera quelques questions sur le nom du serveur et le nom de domaine. Nous remplissons les données de notre serveur.
Arrêt Samba
service samba-ad-dc stop service smbd stop service nmbd stop service winbind stop
Transfert d'anciennes bases et configuration de samba
mv /var/lib/samba /var/lib/samba.NT mv /etc/samba/smb.conf /etc/samba/smb.conf.NT
J'ai déplacé les anciennes bases de données vers /var/lib/samba.NT, vous devez donc recréer le répertoire / var / lib / samba
mkdir /var/lib/samba
La documentation recommande de déplacer toutes les bases de données dans un dossier distinct. Dans mon cas, seul gencache_notrans.tdb se trouvait séparément, j'ai donc dû le transférer uniquement.
cp -p /run/samba/gencache_notrans.tdb /var/lib/samba.NT
La documentation indique également que seulement six bases de données sont nécessaires:
secrets.tdb
schannel_store.tdb
passdb.tdb
gencache_notrans.tdb
group_mapping.tdb
account_policy.tdb
Cependant, la présence d'autres fichiers dans le dossier n'a pas empêché le processus de transition.
Démarrage du processus de mise à niveau classique
samba-tool domain classicupgrade —dbdir=/var/lib/samba.NT --realm=samdom.local --dns-backend=SAMBA_INTERNAL /etc/samba/smb.conf.NT
Je note que la documentation ne recommande pas d'utiliser le domaine local de premier niveau., Mais dans mon cas, cela s'est produit historiquement.
Dans la feuille qui apparaît à l'écran, le mot de passe administrateur clignote, que vous pouvez noter si vous le souhaitez).
Si vous rencontrez des problèmes, avant de nouvelles tentatives de mise à niveau classique, vous devez vous rappeler de supprimer les fichiers de base de données et smb.conf créés au cours du processus.
rm -f /etc/samba/smb.conf rm -rf /var/lib/samba/*
Si tout s'est bien passé, vous pouvez passer à l'étape suivante.
Vérification et modification des configurations de serveur
Dans /etc/resolv.conf devrait être (s'il n'est pas créé automatiquement pour vous)
domain samdom.local nameserver 10.10.1.220
Dans / etc / hosts
127.0.0.1 localhost localhost.localdomain 10.10.1.220 pdc.samdom.local pdc
Le fichier / etc / hostname doit avoir un nom d'hôte abrégé
pdc
Dans / etc / network / interfaces
dns-nameservers 10.10.1.220 dns-search samdom.local
Rediriger les demandes DNS
Si votre serveur redirige les requêtes DNS vers Internet (et INTERNAL_DNS Samba est utilisé), vous devez ajouter la ligne de l'IP de votre fournisseur dans la section [globale] de smb.conf:
dns forwarder = ip
Dans "Samba" 4.2, vous ne pouvez spécifier qu'une seule IP. Dans la suite - quelques-uns, avec un espace.
Si le trafic sortant est contrôlé sur votre passerelle, n'oubliez pas d'ouvrir le passage des paquets udp du serveur vers le port 53.
Configurer Kerberos
Nous apportons /etc/krb5.conf sous une forme similaire:
[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
Synchronisation horaire
Si le package ntp n'en vaut pas la peine, alors définissez:
apt-get install ntp
Dans mon cas, il n'y avait pas de répertoire / var / lib / samba / ntp_signd /. Créé manuellement.
Ensuite, vous devez lui donner des droits:
chown root:ntp /var/lib/samba/ntp_signd/ chmod 750 /var/lib/samba/ntp_signd/
Ensuite, vous devez amener le fichier /etc/ntp.conf sous une forme similaire:
# 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
Suppression de slapd et redémarrage
apt-get remove slapd reboot
Test
Dans la documentation, les tests sont effectués à partir du compte administrateur. Nous avons historiquement développé que les actions administratives proviennent de domain_admin. Ensuite, les commandes et leur sortie correcte seront affichées.
Test de la samba: root@debian:/root# smbclient -L localhost -U% Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.17-Debian] Sharename Type Comment
Si vous obtenez une erreur ici:
La connexion à loclhost a échoué (erreur NT_STATUS_UNSUCCESSFUL)
vérifiez si la samba démarre. Dans un test, j'ai oublié de supprimer (désactiver) slapd et j'ai également vu cette erreur.
Encore une vérification:
$ 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
Test 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
Test 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
Configuration supplémentaire
Pour que les noms de domaine et les groupes apparaissent sous linux, vous devez corriger /etc/nsswitch.conf au lieu des nombresLes chaînes doivent être réduites à la forme suivante:
passwd: fichiers winbind
groupe: fichiers winbind
Veuillez noter que winbind n'est ajouté qu'à ces lignes. Pour plus de détails, consultez la documentation.
Dans mon cas, j'ai également supprimé la mention de ldap de ce fichier.
reboot
Si vous, comme moi, avant classicupgrade dns, le serveur était situé sur une autre machine et que vous utilisez un serveur DHCP, n'oubliez pas de modifier les paramètres du serveur DHCP pointant vers le serveur DNSConfigurer les dossiers réseau
Il n'est pas recommandé aux développeurs d'utiliser le contrôleur de domaine AD comme serveur de fichiers. Cependant, dans mon cas, il n'y avait pas d'autres serveurs.
Le paramètre est très bien décrit dans la
documentation de "Samba" et vous devez y regarder. Bref, alors:
Il est nécessaire de vérifier le support ACL samba. smbd -b | grep HAVE_LIBACL HAVE_LIBACL
N'oubliez pas que la section doit être montée avec les options user_xattr et acl.Seuls les utilisateurs et les groupes avec SeDiskOperatorPrivilege peuvent configurer les droits sur les boules:Par exemple, pour accorder ces droits au groupe Administrateurs du domaine, vous devez exécuter la commande:
net rpc rights grant "Samdom\Domain Admins" SeDiskOperatorPrivilege -U "Samdom\domain_admin"
Pour ajouter directement des balles dont vous avez besoin:Créez un répertoire et attribuez les droits nécessaires:
# mkdir -p /srv/samba/Demo/ # chown root:"Domain Admins" /srv/samba/Demo/ # chmod 0770 /srv/samba/Demo/
ajouter à smb.conf
[Demo] path = /srv/samba/Demo/ read only = no
Après cela, rechargez les configurations samba avec la commande:
smbcontrol all reload-config
Comme précédemment, les boules peuvent être cachées en ajoutant à sa description:
browseable = no
Ensuite, les droits sont distribués à partir des fenêtres de la machine, à partir d'un compte avec
SeDiskOperatorPrivilege . Pour ce faire, allez dans "gestion informatique".
Accrochez-vous à un ordinateur distant (contrôleur de domaine pdc dans notre cas). Distribuez les droits via: "Dossiers partagés" -> "Ressources partagées".
Il est probable que lorsque vous accédez à l'élément "Dossiers partagés", vous obtiendrez une erreur "Le numéro de procédure est en dehors des limites autorisées (1745)". Je l'ignore, car je n'ai rien trouvé d'intelligible sur Internet et cela ne pose pas de problème lors des tests et du fonctionnement.
Des problèmes peuvent être possibles si vous partagez les anciens dossiers réseau de cette manière. Avant la mise à niveau classique, les droits sur les balles étaient définis via smb.conf, les utilisateurs linux, group, other et setfacl. Après la mise à niveau classique, les écoles ayant le droit de changer, de renommer, etc. ont commencé à apparaître progressivement. Le setfacl récursif n'a pas aidé, car des jambages avec héritage sont apparus.
Il est à noter que dans la documentation, il est recommandé de répartir les droits depuis les fenêtres de la machine, via un accès à distance.
En conséquence, en raison du volume peu important de fichiers, il a été décidé de transférer des données vers une machine Windows pendant les heures non travaillées, de recréer des dossiers réseau sur la recommandation des développeurs de samba et de télécharger à nouveau les fichiers.
Dossiers de départ des utilisateurs sur le serveur
La gestion des dossiers de départ des utilisateurs a également changé.
Il convient de noter que le processus de configuration est également très bien décrit dans la
documentation .
Je ne décrirai que les principales caractéristiques de mon cas.
Auparavant, chaque utilisateur avait sa propre balle. Désormais, seul le dossier partagé est partagé et les utilisateurs n'ont accès qu'à leur répertoire.
La configuration est effectuée à l'aide
des outils d'administration de serveur distant Microsoft (RSAT) . RSAT a une caractéristique désagréable. Lors de la mise à niveau de Win 10 vers une nouvelle version, il doit être réinstallé.
Les balles à domicile peuvent être récupérées manuellement, via les propriétés de l'utilisateur dans le composant logiciel enfichable Utilisateurs et ordinateurs. Onglet Profil. Disque U: \\ pdc \ partages utilisateurs \ nom d'utilisateur
Cependant, il est plus pratique de le faire via la stratégie de domaine, qui est très clairement décrite dans la documentation ci-dessus dans le paragraphe
«Utilisation d'une préférence de stratégie de groupe» .
N'oubliez pas que la balle commune peut être cachée en ajoutant à sa description:
browseable = no
Niveau de domaine supérieur
Le domaine a été mis à niveau sans problème au niveau 2008_R2 avec la commande:
samba-tool domain level raise
Vous pouvez visualiser le niveau avec la commande:
samba-tool domain level show
Si smbd.log est bombardé d'erreurs CUPS
Dans mon cas, ce problème est apparu:
Impossible de se connecter à l'hôte local du serveur CUPS: 631
Corrigé par
ce court article.
Mise à niveau ultérieure vers le problème et la solution Debian 9
À
apt-get dist-upgrade
Il y avait un problème, à savoir que samba et winbind ne voulaient pas être mis à jour. Entré dans un conflit de dépendances.
La méthode de l'article a aidé le lien vers lequel je n'ai malheureusement pas enregistré.
En voici une citation directe:
si Samba est en mode AD-DC, il échoue et winbind.
effectuez ces commandes, puis essayez d'exécuter à nouveau la mise à niveau
systemctl stop smbd nmbd winbind
systemctl désactiver smbd nmbd winbind
systemctl démasque samba-ad-dc
systemctl démarrer samba-ad-dc
systemctl activer samba-ad-dc
Après la mise à jour de la version SAMBA, il est recommandé de: «Vérifier la base de données Samba AD DC».
# samba-tool dbcheck --cross-ncs
Depuis dans Deb 9 SAMBA version 4.5, j'ai eu un tas d'erreurs "replPropertyMetaData".
Le processus de dépannage est décrit dans la documentation:
wiki.samba.org/index.php/Updating_Samba#Fixing_replPropertyMetaData_AttributesEt cela se résume à l'exécution de la commande:
samba-tool dbcheck --cross-ncs --fix --yes
Liste des sources utilisées
Documentation SAMBA:
Migration d'un domaine Samba NT4 vers Samba AD (mise à niveau classique)Configuration de Samba en tant que contrôleur de domaine Active DirectoryConfiguration d'un partage à l'aide des listes de contrôle d'accès WindowsDossiers personnels des utilisateursExcellent article:
Contrôleur de domaine Debian 8 (... qui a déjà un Samba4 intégré)Erreur Samba: impossible de se connecter à l'hôte local du serveur CUPS: 631Un article d'un auteur anglais inconnu décrivant comment passer à Debian 9