Projet

Général

Profil

Scribe AD » Historique » Version 59

Joël Cuissinat, 23/01/2018 11:11

1 35 Gérald Schwartzmann
h1. Travaux des options 1 à 5
2 35 Gérald Schwartzmann
3 1 Benjamin Bohard
{{>toc}}
4 34 Gérald Schwartzmann
5 58 Benjamin Bohard
h2. Tableau récapitulatif
6 58 Benjamin Bohard
7 58 Benjamin Bohard
!tableau_options_seth.png!
8 58 Benjamin Bohard
9 38 Gérald Schwartzmann
h2. Option 1 : Scribe membre de l'AD Seth (eole-ad)
10 37 Gérald Schwartzmann
11 38 Gérald Schwartzmann
h2. Option 2 : Scribe AD
12 37 Gérald Schwartzmann
13 38 Gérald Schwartzmann
h2. Option 3 : 
14 37 Gérald Schwartzmann
15 38 Gérald Schwartzmann
h2. Option 4 :
16 37 Gérald Schwartzmann
17 38 Gérald Schwartzmann
h2. Option 5 :
18 37 Gérald Schwartzmann
19 34 Gérald Schwartzmann
h1. Scribe membre de l'AD Seth (eole-ad)
20 34 Gérald Schwartzmann
21 40 Gérald Schwartzmann
Installer un Seth DC avec un Scribe membre (les comptes sont créés sur l'AD)" + intégration de LSC pour la synchronisation #22659
22 40 Gérald Schwartzmann
23 34 Gérald Schwartzmann
h2. Actions
24 34 Gérald Schwartzmann
25 34 Gérald Schwartzmann
h3. Utilisation d'un Scribe 2.6.2
26 34 Gérald Schwartzmann
27 36 Gérald Schwartzmann
* Utilisation de l'infra etb1 avec des postes joints au domaine NT de Scribe
28 1 Benjamin Bohard
* Configuration du serveur Amon
29 36 Gérald Schwartzmann
* Installation d'Eole-AD sur le serveur Scribe en production
30 36 Gérald Schwartzmann
* Modification du mot de passe admin dans l'EAD 2 de Scribe
31 36 Gérald Schwartzmann
* Retrait des postes du domaine NT
32 36 Gérald Schwartzmann
* Jonction de poste Windows au domaine AD de Seth
33 47 Fabrice Barconnière
** manuelle AD %{color:green}OK%
34 49 Fabrice Barconnière
** joineole AD avec installation client Scribe %{color:red}KO%
35 49 Fabrice Barconnière
** joineole AD sans installation du client Scribe %{color:green}OK%
36 49 Fabrice Barconnière
* Connexion au domaine
37 49 Fabrice Barconnière
** connexion %{color:green}OK%
38 49 Fabrice Barconnière
** accès aux partages GUEST %{color:red}KO%
39 49 Fabrice Barconnière
*** @joineole@ positionne des clés de registre qui posent problème
40 49 Fabrice Barconnière
<pre>
41 52 Fabrice Barconnière
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
42 49 Fabrice Barconnière
"DNSNameResolutionRequired"=dword:00000000
43 52 Fabrice Barconnière
"DomainCompatibilityMode"=dword:00000001
44 49 Fabrice Barconnière
</pre>
45 49 Fabrice Barconnière
*** Après modification des clés de registre %{color:green}OK%
46 49 Fabrice Barconnière
<pre>
47 52 Fabrice Barconnière
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
48 49 Fabrice Barconnière
"DNSNameResolutionRequired"=dword:00000001
49 49 Fabrice Barconnière
"DomainCompatibilityMode"=dword:00000000
50 49 Fabrice Barconnière
</pre>
51 49 Fabrice Barconnière
* Installation du client Scribe après jonction au domaine
52 49 Fabrice Barconnière
** Sans modifier les attributs d'exécution des fichiers @/home/client_scribe/cliscribe-setup.exe@ et @/home/a/admin/perso/client/cliscribe-updater-setup.exe@ %{color:red}KO%
53 49 Fabrice Barconnière
** Ajout des attributs +x aux installeurs %{color:green}OK%
54 44 Fabrice Barconnière
** controle-VNC AD %{color:green}OK%
55 47 Fabrice Barconnière
* Modification de mots de passe dans l'EAD 2
56 51 Fabrice Barconnière
** synchro sur AD %{color:green}OK%
57 47 Fabrice Barconnière
* Importation annuelle des bases dans l'EAD 2
58 50 Fabrice Barconnière
** Synchro des comptes et des mots de passe vers AD %{color:green}OK%
59 44 Fabrice Barconnière
60 36 Gérald Schwartzmann
h3. Problèmes rencontrés
61 1 Benjamin Bohard
62 46 Fabrice Barconnière
* Configuration du serveur Amon pour la prise en charge d'un sous-domaine DNS #22731
63 53 Fabrice Barconnière
* Incompatibilité de LSC avec Java 8 et 9 #22730
64 36 Gérald Schwartzmann
* La variable ad_server n'était pas initialisée pour la jonction au domaine, jonction au domaine de l'AD impossible #22704
65 36 Gérald Schwartzmann
* Problème de résolution des zones forward sur Amon #22707
66 39 Gérald Schwartzmann
* La demande de modification des mots au redémarrage du poste Windows ne fonctionne pas sur AD
67 39 Gérald Schwartzmann
* ClientScribe empêche l'accès aux partages GUEST
68 39 Gérald Schwartzmann
* Les postes n'exécutent plus les scripts ou exécutables présent sur les partages Scribe s'ils n'ont pas l'attribut +x
69 36 Gérald Schwartzmann
70 57 Fabrice Barconnière
h2. Pistes de travail et correctifs à prévoir
71 34 Gérald Schwartzmann
72 34 Gérald Schwartzmann
* Changement à faire sur le module Amon
73 54 Fabrice Barconnière
** -Développement sur la partie DNS pour la prise en charge de sous-zones- #22731
74 34 Gérald Schwartzmann
75 34 Gérald Schwartzmann
* Changement à faire sur le module Scribe
76 1 Benjamin Bohard
** -Faire fonctionner LSC avec Java 8 ou 9 ou backporter le paquet Java 7 et modifier la dépendance du paquet eole-ad- #22730
77 57 Fabrice Barconnière
** Tester une migration avec un classicupgrade pour éviter la réinitialisation des MDP, la sortie des machines du domaine NT et la jonction au nouveau domaine.
78 57 Fabrice Barconnière
*** Utiliser un Scribe en production en mode NT
79 57 Fabrice Barconnière
*** effectuer l'opération classicupgrade sur le serveur Seth (instancié à confirmer lors des tests) :
80 57 Fabrice Barconnière
https://wiki.samba.org/index.php/Migrating_a_Samba_NT4_Domain_to_Samba_AD_(Classic_Upgrade)#Upgrading_on_a_new_server
81 57 Fabrice Barconnière
*** effectuer l'installation et la configuration de eole-ad sur Scribe en suivant la même procédure
82 1 Benjamin Bohard
83 39 Gérald Schwartzmann
* EAD 2
84 39 Gérald Schwartzmann
** Faire fonctionner le changement de mot de passe à l'ouverture de session
85 39 Gérald Schwartzmann
86 55 Fabrice Barconnière
* JoinEole
87 55 Fabrice Barconnière
** Ne pas positionner les clés de registre si on est sur AD pour permettre l'accès aux partages GUEST
88 34 Gérald Schwartzmann
89 56 Fabrice Barconnière
* Résoudre le problème des fichiers exécutables sur les partages
90 56 Fabrice Barconnière
91 34 Gérald Schwartzmann
h1. Scribe AD
92 18 Emmanuel GARETTE
93 1 Benjamin Bohard
h2. Actions
94 1 Benjamin Bohard
95 2 Benjamin Bohard
h3. Migration du Scribe NT vers Scribe AD
96 1 Benjamin Bohard
97 1 Benjamin Bohard
h4. Procédure classicupgrade
98 3 Benjamin Bohard
99 3 Benjamin Bohard
La procédure classicupgrade nécessite des interventions complémentaires (pouvant être scriptées).
100 3 Benjamin Bohard
101 20 Benjamin Bohard
En partant d’un Scribe fonctionnel instancié avec import de comptes et un poste joint au domaine.
102 3 Benjamin Bohard
103 3 Benjamin Bohard
h5. stopper et désactiver les services de samba en mode NT (smbd, nmbd, winbind),
104 10 Benjamin Bohard
105 3 Benjamin Bohard
<pre>
106 3 Benjamin Bohard
systemctl stop nmbd
107 3 Benjamin Bohard
systemctl stop smbd
108 3 Benjamin Bohard
systemctl stop winbind
109 3 Benjamin Bohard
systemctl disable nmbd
110 3 Benjamin Bohard
systemctl disable smbd
111 3 Benjamin Bohard
systemctl disable winbind
112 3 Benjamin Bohard
</pre>
113 3 Benjamin Bohard
114 24 Philippe Caseiro
h5. mettre à jour la version de samba (Optionnel pour des raison de tests)
115 1 Benjamin Bohard
116 24 Philippe Caseiro
A faire uniquement si vous voulez tester avec la version samba 4.7
117 24 Philippe Caseiro
118 23 Benjamin Bohard
<pre>
119 23 Benjamin Bohard
cat >>/etc/apt/source.list.d/samba.list<<EOF
120 23 Benjamin Bohard
deb [ arch=amd64 ] http://test-eole.ac-dijon.fr/samba samba-4.7
121 23 Benjamin Bohard
EOF
122 23 Benjamin Bohard
</pre>
123 23 Benjamin Bohard
124 23 Benjamin Bohard
<pre>
125 23 Benjamin Bohard
Maj-Auto
126 23 Benjamin Bohard
CreoleCat -t smb.conf
127 23 Benjamin Bohard
</pre>
128 23 Benjamin Bohard
129 3 Benjamin Bohard
h5. installer les outils nécessaires :
130 10 Benjamin Bohard
131 3 Benjamin Bohard
<pre>
132 11 Benjamin Bohard
apt-get install krb5-user ldb-tools
133 3 Benjamin Bohard
</pre>
134 3 Benjamin Bohard
135 3 Benjamin Bohard
h5. patcher nsswitch.conf.default, ldap.conf
136 3 Benjamin Bohard
137 3 Benjamin Bohard
<pre>
138 3 Benjamin Bohard
--- distrib/nsswitch.conf.default	2017-05-15 11:18:44.000000000 +0200
139 3 Benjamin Bohard
+++ modif/nsswitch.conf.default	2018-01-09 15:12:53.260292570 +0100
140 3 Benjamin Bohard
@@ -7,8 +7,8 @@
141 3 Benjamin Bohard
 ########################################################
142 3 Benjamin Bohard
 # /etc/nsswitch.conf
143 3 Benjamin Bohard
 
144 3 Benjamin Bohard
-%set %%active_winbind = %%getVar('activer_winbind', 'non') == 'oui'
145 3 Benjamin Bohard
-%set %%active_ldap =  %%getVar('ldap_nss', 'non') == 'oui'
146 3 Benjamin Bohard
+%set %%active_winbind = True
147 3 Benjamin Bohard
+%set %%active_ldap =  False
148 3 Benjamin Bohard
 
149 3 Benjamin Bohard
 passwd:         compat %slurp
150 3 Benjamin Bohard
 %if %%active_ldap
151 3 Benjamin Bohard
</pre>
152 3 Benjamin Bohard
153 12 Benjamin Bohard
<pre>
154 12 Benjamin Bohard
--- distrib/ldap.conf	2017-04-05 12:25:55.000000000 +0200
155 12 Benjamin Bohard
+++ modif/ldap.conf	2018-01-10 14:39:19.008000000 +0100
156 12 Benjamin Bohard
@@ -13,7 +13,7 @@
157 12 Benjamin Bohard
 
158 12 Benjamin Bohard
 %if %%active_ldap == 'oui'
159 12 Benjamin Bohard
 host %%adresse_ip_ldap
160 12 Benjamin Bohard
-base %%ldap_base_dn
161 12 Benjamin Bohard
+base DC=etb1,DC=lan
162 12 Benjamin Bohard
 port %%ldap_port
163 12 Benjamin Bohard
 timelimit 10
164 12 Benjamin Bohard
 bind_time_limit 10
165 12 Benjamin Bohard
@@ -23,8 +23,8 @@
166 12 Benjamin Bohard
 pam_login_attribute uid
167 12 Benjamin Bohard
 pam_password md5
168 12 Benjamin Bohard
 nss_map_attribute gecos displayName
169 12 Benjamin Bohard
-nss_base_passwd %%ldap_base_dn?sub
170 12 Benjamin Bohard
-nss_base_group %%ldap_base_dn?sub
171 12 Benjamin Bohard
+nss_base_passwd DC=etb1,DC=lan?sub
172 12 Benjamin Bohard
+nss_base_group DC=etb1,DC=lan?sub
173 12 Benjamin Bohard
 #fixe #1809
174 12 Benjamin Bohard
 nss_initgroups_ignoreusers root
175 12 Benjamin Bohard
  %if %%ldap_tls == 'oui'
176 12 Benjamin Bohard
</pre>
177 12 Benjamin Bohard
178 3 Benjamin Bohard
h5. déplacer la configuration samba actuelle dans un répertoire de travail
179 3 Benjamin Bohard
180 3 Benjamin Bohard
<pre>
181 3 Benjamin Bohard
mv /etc/samba/ /etc/samba.PDC/
182 3 Benjamin Bohard
</pre>
183 3 Benjamin Bohard
184 3 Benjamin Bohard
h5. renommer le fichier de configuration smb.conf de ce répertoire de travail,
185 3 Benjamin Bohard
186 3 Benjamin Bohard
<pre>
187 3 Benjamin Bohard
mv /etc/samba.PDC/smb.conf /etc/samba.PDC/smb.PDC.conf
188 3 Benjamin Bohard
</pre>
189 3 Benjamin Bohard
190 3 Benjamin Bohard
h5. copier les bases de données de samba dans un sous-répertoire du répertoire de travail
191 3 Benjamin Bohard
192 3 Benjamin Bohard
<pre>
193 14 Benjamin Bohard
mkdir /etc/samba.PDC/dbdir/
194 13 Benjamin Bohard
cp -p /var/lib/samba/private/secrets.tdb /etc/samba.PDC/dbdir/
195 13 Benjamin Bohard
cp -p /var/lib/samba/private/schannel_store.tdb /etc/samba.PDC/dbdir/
196 13 Benjamin Bohard
cp -p /var/lib/samba/private/passdb.tdb /etc/samba.PDC/dbdir/
197 15 Benjamin Bohard
#cp -p /var/lib/samba/var/lock/gencache_notrans.tdb /etc/samba.PDC/dbdir/
198 15 Benjamin Bohard
cp -p /var/lib/samba/group_mapping.tdb /etc/samba.PDC/dbdir/
199 15 Benjamin Bohard
cp -p /var/lib/samba/account_policy.tdb /etc/samba.PDC/dbdir/
200 1 Benjamin Bohard
</pre>
201 3 Benjamin Bohard
202 8 Benjamin Bohard
h5. lancer la commande samba-tool domain classicupgrade
203 8 Benjamin Bohard
204 1 Benjamin Bohard
<pre>
205 8 Benjamin Bohard
realm=$(CreoleGet nom_domaine_local)
206 33 Benjamin Bohard
</pre>
207 32 Benjamin Bohard
208 32 Benjamin Bohard
Pour samba 4.3.11 :
209 32 Benjamin Bohard
<pre>
210 8 Benjamin Bohard
samba-tool domain classicupgrade --dbdir=/etc/samba.PDC/dbdir --use-xattrs=yes --realm=${realm^^} --dns-backend=SAMBA_INTERNAL /etc/samba.PDC/smb.PDC.conf
211 8 Benjamin Bohard
</pre>
212 32 Benjamin Bohard
213 32 Benjamin Bohard
Pour samba 4.7 (on enlève l’option pour xattrs) :
214 32 Benjamin Bohard
<pre>
215 32 Benjamin Bohard
samba-tool domain classicupgrade --dbdir=/etc/samba.PDC/dbdir --realm=${realm^^} --dns-backend=SAMBA_INTERNAL /etc/samba.PDC/smb.PDC.conf
216 32 Benjamin Bohard
</pre>
217 32 Benjamin Bohard
218 8 Benjamin Bohard
219 29 Benjamin Bohard
h5. créer le patch smb.conf à partir du nouveau fichier créer par samba-tool (bien renseigner le forwarder dns)
220 8 Benjamin Bohard
221 21 Benjamin Bohard
<pre>
222 21 Benjamin Bohard
[global]
223 21 Benjamin Bohard
  realm = ETB1.LAN
224 21 Benjamin Bohard
  workgroup = DOMPEDAGO
225 21 Benjamin Bohard
  netbios name = SCRIBE
226 21 Benjamin Bohard
227 21 Benjamin Bohard
  # disable netbios legacy protocol, only port 445 !
228 21 Benjamin Bohard
  disable netbios = yes
229 21 Benjamin Bohard
  smb ports = 445
230 21 Benjamin Bohard
231 21 Benjamin Bohard
232 21 Benjamin Bohard
  vfs objects = acl_xattr
233 21 Benjamin Bohard
  map acl inherit = Yes
234 21 Benjamin Bohard
  store dos attributes = Yes
235 21 Benjamin Bohard
  winbind separator = /
236 21 Benjamin Bohard
237 21 Benjamin Bohard
  server role = active directory domain controller
238 21 Benjamin Bohard
  dns forwarder = 192.168.232.2
239 21 Benjamin Bohard
240 21 Benjamin Bohard
  # active TLS (pour LDAPS et la maj des mot de passe !
241 21 Benjamin Bohard
  tls enabled = yes
242 21 Benjamin Bohard
  tls keyfile = /var/lib/samba/private/tls/key.pem
243 21 Benjamin Bohard
  tls certfile = /var/lib/samba/private/tls/cert.pem
244 21 Benjamin Bohard
  tls cafile = /var/lib/samba/private/tls/ca.pem
245 21 Benjamin Bohard
246 21 Benjamin Bohard
[netlogon]
247 21 Benjamin Bohard
  comment = Network Logon Service
248 21 Benjamin Bohard
  path = /home/sysvol/ac-test.fr/scripts
249 21 Benjamin Bohard
  read only = No
250 21 Benjamin Bohard
  guest ok = yes
251 21 Benjamin Bohard
252 21 Benjamin Bohard
[sysvol]
253 21 Benjamin Bohard
  comment = Sysvol Service
254 21 Benjamin Bohard
  path = /home/sysvol
255 21 Benjamin Bohard
  read only = No
256 21 Benjamin Bohard
  guest ok = yes
257 21 Benjamin Bohard
258 21 Benjamin Bohard
[homes]
259 21 Benjamin Bohard
  path = "/home/a/%u"
260 21 Benjamin Bohard
  comment = Home Directories
261 21 Benjamin Bohard
  read only = no
262 21 Benjamin Bohard
  root preexec = /usr/share/eole/sbin/create_adhome.sh "%u" "/home/a/"
263 21 Benjamin Bohard
  invalid users = nobody guest
264 21 Benjamin Bohard
265 21 Benjamin Bohard
</pre>
266 21 Benjamin Bohard
267 26 Benjamin Bohard
h5. installer le script pour la création du home
268 26 Benjamin Bohard
269 26 Benjamin Bohard
<pre>
270 26 Benjamin Bohard
#!/bin/bash
271 26 Benjamin Bohard
login=${1}
272 26 Benjamin Bohard
homebasedir=${2}
273 26 Benjamin Bohard
userdir="${homebasedir}/${login}"
274 26 Benjamin Bohard
[ -d "${userdir}" ] && exit 0
275 26 Benjamin Bohard
mkdir -p "${userdir}"
276 26 Benjamin Bohard
setfacl -Rbk "${userdir}"
277 26 Benjamin Bohard
chmod 700 "${userdir}"
278 26 Benjamin Bohard
setfacl -m u:${login}:rwx "${userdir}"
279 26 Benjamin Bohard
setfacl -dm u:${login}:rwx "${userdir}"
280 26 Benjamin Bohard
</pre>
281 26 Benjamin Bohard
282 8 Benjamin Bohard
h5. stopper et désactiver le service slapd
283 8 Benjamin Bohard
284 8 Benjamin Bohard
<pre>
285 8 Benjamin Bohard
systemctl stop slapd
286 8 Benjamin Bohard
systemctl disable slapd
287 8 Benjamin Bohard
</pre>
288 8 Benjamin Bohard
289 8 Benjamin Bohard
h5. créer le compte reader
290 8 Benjamin Bohard
291 8 Benjamin Bohard
<pre>
292 8 Benjamin Bohard
cat /root/.reader
293 8 Benjamin Bohard
samba-tool user create reader
294 8 Benjamin Bohard
</pre>
295 8 Benjamin Bohard
296 8 Benjamin Bohard
h5. modifier les variables
297 8 Benjamin Bohard
298 8 Benjamin Bohard
Le base DN est maintenant du type DC=etb1,DC=lan.
299 8 Benjamin Bohard
300 8 Benjamin Bohard
Le compte reader est maintenant du type CN=reader,CN=Users,DC=etb1,DC=lan.
301 8 Benjamin Bohard
302 25 Philippe Caseiro
h5. modifier les scripts de posttemplate 02-annuaire et 04-fichier et 00-annuaire en pretemplate
303 8 Benjamin Bohard
304 8 Benjamin Bohard
exit 0 ajouté en tête des fichiers pour ne pas faire les traitements.
305 8 Benjamin Bohard
306 8 Benjamin Bohard
h5. activer et démarrer le service samba-ad-dc
307 8 Benjamin Bohard
308 8 Benjamin Bohard
<pre>
309 8 Benjamin Bohard
systemctl enable samba-ad-dc
310 8 Benjamin Bohard
systemctl start samba-ad-dc
311 8 Benjamin Bohard
</pre>
312 8 Benjamin Bohard
313 8 Benjamin Bohard
h5. reconfigure
314 8 Benjamin Bohard
315 8 Benjamin Bohard
h5. stopper le service nmbd
316 8 Benjamin Bohard
317 8 Benjamin Bohard
Le service nmbd est démarré automatiquement par creole
318 8 Benjamin Bohard
<pre>
319 8 Benjamin Bohard
systemctl stop nmbd
320 3 Benjamin Bohard
</pre>
321 1 Benjamin Bohard
322 10 Benjamin Bohard
h4. Points à traiter
323 10 Benjamin Bohard
324 10 Benjamin Bohard
h5. service nmbd
325 10 Benjamin Bohard
326 10 Benjamin Bohard
Le service nmbd est géré par creole et sa désactivation manuelle n’est pas suffisante
327 10 Benjamin Bohard
328 10 Benjamin Bohard
h5. variables creole
329 10 Benjamin Bohard
330 10 Benjamin Bohard
Les variables concernant l’annuaire sont verrouillées (même après import du fichier de configuration : valeurs par défaut).
331 10 Benjamin Bohard
332 10 Benjamin Bohard
Il n’est pas possible de modifier, hors des patchs, les valeurs pour le base DN, le protocole (ldaps), etc.
333 10 Benjamin Bohard
334 22 Benjamin Bohard
h5. mise à jour samba
335 22 Benjamin Bohard
336 22 Benjamin Bohard
Conflit avec eole-fichier-common-pkg pour la fourniture du fichier smbd.service
337 22 Benjamin Bohard
338 31 Benjamin Bohard
h5. configuration de samba
339 31 Benjamin Bohard
340 31 Benjamin Bohard
Vérifier que le fichier de configuration est adéquate pour un contrôleur de domaine avec des partages.
341 31 Benjamin Bohard
342 30 Benjamin Bohard
h5. création des homes
343 10 Benjamin Bohard
344 30 Benjamin Bohard
Le client cherche à se connecter sur un partage nommé <REALM>\<user>.
345 10 Benjamin Bohard
346 30 Benjamin Bohard
Les clients doivent pouvoir remonter leur ancien home (<user>).
347 10 Benjamin Bohard
348 9 Philippe Caseiro
h2. Pistes de travail pour la migration de l'annuaire
349 9 Philippe Caseiro
350 9 Philippe Caseiro
Proposition de méthode pour arriver a un Scribe AD en utilisant malgré-tout une
351 9 Philippe Caseiro
partie du travail déjà fait par l'équipe samba dans sa procédure
352 9 Philippe Caseiro
classicupgrade.
353 9 Philippe Caseiro
354 9 Philippe Caseiro
La procédure proprement dite n'est pas suffisante pour nous et l'utilisation
355 9 Philippe Caseiro
brute de l'outil samba non plus, cet outil réalise le provisionning AD et les
356 9 Philippe Caseiro
initialisations des fichiers db, hors pour bien faire nous avons besoin que samba ai
357 9 Philippe Caseiro
connaissance des schemas complémentaires du scribe (radius, eole, ent ...).
358 9 Philippe Caseiro
avant la migration des comptes. Pour lui ajouter les dit schémas il faut que
359 9 Philippe Caseiro
les fichiers db soient initialisées, donc l'utilisation de l'outil est
360 9 Philippe Caseiro
impossible. Par chance il utilise la lib python samaba, ce qui nous ouvre des
361 9 Philippe Caseiro
possibilités. Sans oublié que l'outil samba crée la configuration pour samba
362 9 Philippe Caseiro
a partir de l'ancienne et cette fonctionnalités ne nous ai pas vraiment utile.
363 9 Philippe Caseiro
364 9 Philippe Caseiro
Donc l'idée est de recréer une procédure de migration complête pour nos
365 9 Philippe Caseiro
besoins.
366 9 Philippe Caseiro
367 9 Philippe Caseiro
Il faut donc refaire le provisionning de l'AD ce qui est fait dans Seth donc
368 9 Philippe Caseiro
nous pouvons utiliser cette base de travail
369 9 Philippe Caseiro
370 9 Philippe Caseiro
Migrer les shemas complémentaires actuels au format lisible par samba4.
371 9 Philippe Caseiro
372 9 Philippe Caseiro
Créer un script de migration des comptes qui ajoute les schemas, utilise la
373 9 Philippe Caseiro
lib python samba4 pour migrer les comptes et ensuite mettre à jour les comptes
374 9 Philippe Caseiro
avec les attributs supplémentaires de l'ancien annuaire.
375 17 Emmanuel GARETTE
376 17 Emmanuel GARETTE
377 17 Emmanuel GARETTE
h3. Remplacement du Client Scribe :
378 17 Emmanuel GARETTE
379 17 Emmanuel GARETTE
* application de policies : https://dev-eole.ac-dijon.fr/issues/22666
380 17 Emmanuel GARETTE
381 17 Emmanuel GARETTE
Le portage des règles Esu en policies AD va être compliqué et aléatoire. Il existe beaucoup de manières d'implémenter ces règles (fichier INI, fichier XML, Register.pol, ...). Il va falloir tester règle par règle comment c'est généré via RSAT.
382 17 Emmanuel GARETTE
383 17 Emmanuel GARETTE
Si on veut générer les règles depuis Gaspacho il va falloir : 
384 17 Emmanuel GARETTE
385 17 Emmanuel GARETTE
# connaitre le format de chaque règle ;
386 17 Emmanuel GARETTE
# créer des parsers pour chaque format ;
387 17 Emmanuel GARETTE
# écrire les fichiers ".gasp" pour que les règles soient prise en compte dans Gaspacho ;
388 17 Emmanuel GARETTE
# créer les GPO suivant les groupes gaspacho + associer les différents critères de sélection (utilisateur/machine) ;
389 17 Emmanuel GARETTE
# lancer les différents parsers quand on applique les règles Gaspacho ;
390 17 Emmanuel GARETTE
391 17 Emmanuel GARETTE
392 17 Emmanuel GARETTE
* exécuter des scripts au démarrage de la machine/connexion des utilisateurs : https://dev-eole.ac-dijon.fr/issues/22665
393 17 Emmanuel GARETTE
394 17 Emmanuel GARETTE
L'exécution de script de démarrage est pris en compte par le système de GPO. Cela peut être des scripts "machines" (au démarrage ou arrêt du serveur) ou "utilisateurs" (à l'ouverture ou fermeture de la session).
395 17 Emmanuel GARETTE
396 17 Emmanuel GARETTE
Il faut un mécanisme pour générer les scripts comme c'était fait sous Scribe.
397 17 Emmanuel GARETTE
De plus nous n'avons pas réussi a lancer un Script diffuser via le partage netlogon. Il va falloir trouver un moyen de les diffuser.
398 17 Emmanuel GARETTE
399 19 Emmanuel GARETTE
* mappage des partages : https://dev-eole.ac-dijon.fr/issues/22667
400 19 Emmanuel GARETTE
401 19 Emmanuel GARETTE
C'est un fichier XML par GPO possiblement générable.
402 19 Emmanuel GARETTE
403 19 Emmanuel GARETTE
* pouvoir lancer des commandes à distance : https://dev-eole.ac-dijon.fr/issues/22665
404 19 Emmanuel GARETTE
405 19 Emmanuel GARETTE
Il y a plusieurs pistes possible mais aucune n'ont été testé avec succès.
406 19 Emmanuel GARETTE
407 19 Emmanuel GARETTE
* observation des postes : https://dev-eole.ac-dijon.fr/issues/22664
408 19 Emmanuel GARETTE
409 19 Emmanuel GARETTE
Nécessite l'exécution de commande a distance.
410 58 Benjamin Bohard
411 59 Joël Cuissinat
h1. Portage des actions EAD2 vers EAD3
412 58 Benjamin Bohard
413 58 Benjamin Bohard
https://dev-eole.ac-dijon.fr/issues/22725
414 58 Benjamin Bohard
https://dev-eole.ac-dijon.fr/issues/22670
415 58 Benjamin Bohard
https://dev-eole.ac-dijon.fr/issues/22727
416 58 Benjamin Bohard
https://dev-eole.ac-dijon.fr/issues/22726
417 58 Benjamin Bohard
https://dev-eole.ac-dijon.fr/issues/22733
418 58 Benjamin Bohard
https://dev-eole.ac-dijon.fr/issues/22728
419 58 Benjamin Bohard
420 58 Benjamin Bohard
h2. Gestion des comptes et groupes
421 58 Benjamin Bohard
422 58 Benjamin Bohard
Le changement le plus important est le passage à une infrastructure séparant le contrôleur de domaine et le serveur de fichiers.
423 58 Benjamin Bohard
424 58 Benjamin Bohard
Les actions pour la gestion des comptes et groupes impactent le contrôleur de domaine et le serveur de fichier. Une action unique doit agir sur deux serveurs.
425 58 Benjamin Bohard
426 58 Benjamin Bohard
Le code doit être repensé pour permettre de déclencher des traitements répartis sur différents serveurs à partir d’une même action dans l’interface.
427 58 Benjamin Bohard
428 58 Benjamin Bohard
La piste de salt-syndic a été étudiée pour répartir les traitements composant une action sur les serveurs concernés.
429 58 Benjamin Bohard
430 58 Benjamin Bohard
h2. Les applications externes
431 58 Benjamin Bohard
432 1 Benjamin Bohard
Pas de problème particulier pour les applications externes (CUPS, Sympa, EOP, etc.).
433 59 Joël Cuissinat
434 59 Joël Cuissinat
435 59 Joël Cuissinat
h1. Gestion (directe) des comptes AD via l'EAD2 (options 2 et 3)
436 59 Joël Cuissinat
437 59 Joël Cuissinat
h2. Remplacement de l'appel à @smbldap-useradd@ par @samba-tool user create@
438 59 Joël Cuissinat
439 59 Joël Cuissinat
Objectif du POC : Créer un enseignant directement dans AD à l'aide de la commande "backend" suivante :
440 59 Joël Cuissinat
441 59 Joël Cuissinat
<pre>
442 59 Joël Cuissinat
/usr/share/eole/backend/creation-prof.py -u <login> -m "Eole12345\$" -p Prénom -f Nom
443 59 Joël Cuissinat
</pre>
444 59 Joël Cuissinat
445 59 Joël Cuissinat
Librairies python concernées :
446 59 Joël Cuissinat
* /usr/lib/python2.7/dist-packages/scribe/enseignants.py
447 59 Joël Cuissinat
* /usr/lib/python2.7/dist-packages/scribe/eoleuser.py
448 59 Joël Cuissinat
** méthode _add : remplacement de l'utilisation de smbldap-tools par samba-tools dans "if self.has_samba:"
449 59 Joël Cuissinat
450 59 Joël Cuissinat
Arguments reçus par la fonction :
451 59 Joël Cuissinat
@{'syncpassword': True, 'disciplines': '', 'change_pwd': False, 'int_id': '', 'mail_acad': '', 'profil': '1', 'etab': None, 'mail': 'internet', 'patronyme': '', 'nom': 'Nom', 'shell': False, 'quota': '0', 'entpersonjointure': '', 'groups': [], 'date': '00000101', 'password': 'Eole12345$', 'prenom': 'Pr\xc3\xa9nom', 'admin': False, 'classe': '', 'entlogin': True, 'civilite': '1', 'login': 'prof4'}@
452 59 Joël Cuissinat
453 59 Joël Cuissinat
Commande smbldap appelée par la fonction :
454 59 Joël Cuissinat
<pre>
455 59 Joël Cuissinat
/usr/sbin/smbldap-useradd -a -A 1 -D U: -H U -o ou=local,ou=personnels -s /bin/false -d /home/p/prof4 -C \\\\ac-test\\prof4\\perso -F  -g professeurs -G DomainUsers <login>
456 59 Joël Cuissinat
</pre>
457 59 Joël Cuissinat
458 59 Joël Cuissinat
Commande samba-tool "équivalente" :
459 59 Joël Cuissinat
<pre>
460 59 Joël Cuissinat
samba-tool user create <login> "Eole12345\$" --use-username-as-cn --given-name=Prénom --surname=Nom
461 59 Joël Cuissinat
</pre>
462 59 Joël Cuissinat
463 59 Joël Cuissinat
ATTENTION : L'option : --use-username-as-cn est importante si on veut être sûr que le CN soit <login>.
464 59 Joël Cuissinat
465 59 Joël Cuissinat
Autres options disponibles à étudier :
466 59 Joël Cuissinat
* --must-change-at-next-login
467 59 Joël Cuissinat
* --userou='OU=OrgUnit'
468 59 Joël Cuissinat
* --rfc2307-from-nss & [--nis-domain=samdom --unix-home=/home/User5            --uid-number=10005 --login-shell=/bin/false --gid-number=10000] : compatibilité Unix ?
469 59 Joël Cuissinat
* --profile-path/--script-path/--home-drive/--home-directory
470 59 Joël Cuissinat
* --description/--mail-address
471 59 Joël Cuissinat
472 59 Joël Cuissinat
473 59 Joël Cuissinat
h2. Gestion de l'annuaire AD avec python-ldap
474 59 Joël Cuissinat
475 59 Joël Cuissinat
Objectif du POC : Créer une libraire python permettant de gérer les attributs ldap des utilisateurs
476 59 Joël Cuissinat
477 59 Joël Cuissinat
<pre><code class="python">
478 59 Joël Cuissinat
# -*- coding: utf-8 -*-
479 59 Joël Cuissinat
import ldap
480 59 Joël Cuissinat
481 59 Joël Cuissinat
adbase = "DC=ac-test,DC=fr"
482 59 Joël Cuissinat
binddn = "CN=Administrator,CN=Users,DC=ac-test,DC=fr"
483 59 Joël Cuissinat
passwd = "Eole12345!"
484 59 Joël Cuissinat
485 59 Joël Cuissinat
def connect():
486 59 Joël Cuissinat
    # OPT_REFERRALS=0 is mandatory for AD
487 59 Joël Cuissinat
    ldap.set_option(ldap.OPT_REFERRALS, 0)
488 59 Joël Cuissinat
    ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
489 59 Joël Cuissinat
    connexion = ldap.initialize('ldaps://localhost')
490 59 Joël Cuissinat
    connexion.simple_bind_s(binddn, passwd)
491 59 Joël Cuissinat
    return connexion
492 59 Joël Cuissinat
493 59 Joël Cuissinat
494 59 Joël Cuissinat
def get_attr(user, attr):
495 59 Joël Cuissinat
    """
496 59 Joël Cuissinat
    Renvoie la valeur de l'attribut attr
497 59 Joël Cuissinat
    pour l'utilisateur AD user
498 59 Joël Cuissinat
    """
499 59 Joël Cuissinat
    connexion = connect()
500 59 Joël Cuissinat
    res = connexion.search(adbase, ldap.SCOPE_SUBTREE,
501 59 Joël Cuissinat
                          '(samaccountname={0})'.format(user),
502 59 Joël Cuissinat
                          [attr])
503 59 Joël Cuissinat
    try:
504 59 Joël Cuissinat
        return connexion.result(res, 60)[1][0][1][attr][0]
505 59 Joël Cuissinat
    except TypeError:
506 59 Joël Cuissinat
        return
507 59 Joël Cuissinat
508 59 Joël Cuissinat
def set_attr(user, attr, value):
509 59 Joël Cuissinat
    """
510 59 Joël Cuissinat
    Modifie la valeur de l'attribut attr
511 59 Joël Cuissinat
    pour l'utilisateur AD user
512 59 Joël Cuissinat
    """
513 59 Joël Cuissinat
    connexion = connect()
514 59 Joël Cuissinat
    if value == '':
515 59 Joël Cuissinat
        value = []
516 59 Joël Cuissinat
    user_dn = "CN={},CN=Users,{}".format(user, adbase)
517 59 Joël Cuissinat
    data = [((ldap.MOD_REPLACE, attr, value))]
518 59 Joël Cuissinat
    connexion.modify(user_dn, data)
519 59 Joël Cuissinat
520 59 Joël Cuissinat
def delete(user):
521 59 Joël Cuissinat
    """
522 59 Joël Cuissinat
    suppression d'un utilisateur AD
523 59 Joël Cuissinat
    """
524 59 Joël Cuissinat
    connexion = connect()
525 59 Joël Cuissinat
    user_dn = "CN={},CN=Users,{}".format(user, adbase)
526 59 Joël Cuissinat
    connexion.delete(user_dn)
527 59 Joël Cuissinat
</code></pre>