Samba et W$nt/2k/xp

Je n'ai que peu d'expérience des Window$ professionnels.
Je n'y ai été confronté (de force) qu'avec la livraison de machines sous XP.
Après avoir galéré et pas mal fouiné, j'ai préparé ce petit compte-rendu des solutions trouvées.
Pour l'essentiel, les démarches doivent être les mêmes sous W$nt et 2k.


L'environnement W$nt/2k/xp apporte des fonctionnalités et impose des contraintes qu'il fait prendre en compte dans le cadre de Samba.

Dans le cas d'un serveur Samba non contrôleur de domaine, il n'y a pas ou peu de changement:
Lors de l'accès à un partage, l'utilisateur se voit proposer de fournir à la fois un login et un mot de passe (alors que sous w$9x/me seul la saisie du mot de passe est proposée).
<<FAIRE UNE CAPTURE>>
Cela permet d'accéder à des partages sous une autre identité que la sienne propre.

Dans le cas d'un serveur Samba Contrôleur de Domaine, les clients doivent intégrer le domaine.
Cela signifie entre autres qu'il doit exister un compte pour la machine en plus du compte utilisateur.
Pour XP, d'autres contraintes encore sont à prendre en compte.
Nous allons voir comment procéder.

Enfin, certaines actions nécessitent des droits administrateur sur la machine cliente et nous allons préciser une "astuce".


Intégrer le domaine Samba:

Côté serveur:

Imaginons que le serveur Linux/Samba se nomme Augustin et que le domaine/groupe de travail défini à la ligne "workgroup = fresnel_samba" du fichier /etc/samba/smb.conf se nomme fresnel_samba

Nous disposons par ailleurs d'un client nommé nec08 sous W$xp.

Pour intégrer le domaine fresnel_samba, il faut disposer des droits administrateurs sur Samba.
C'est-à-dire qu'en principe seul l'administrateur du domaine peut faire intégrer le domaine aux machines de son parc informatique.
Un compte administrateur doit exister pour le serveur Samba.
Il faut pour cela créer un compte d'administrateur samba (avec un mot de passe différent de celui d'accès à Linux, par précaution):

[steph@Augustin steph]$ su
Password:
[root@Augustin steph]# smbpasswd -a root
New SMB password:
Retype new SMB password:
Password changed for user root.
[root@Augustin steph]#

Nous avons ici fait de l'utilisateur root de Linux un utilisateur de Samba.

Pour ne pas intégrer à la main sur le serveur toutes les machines du réseau local, on peut placer la ligne suivante dans le fichier /etc/samba/smb.conf:

 add user script = /usr/sbin/useradd -d /dev/null -g machines -c 'Machine Account' -s /bin/false -M %m$

Redémarrez votre serveur samba après modification:

[root@Augustin steph]# samba restart
...
[root@Augustin steph]#

Remarques:

  1. Il faut veiller à ce qu'un groupe "machines" existe.
    Au besoin le créer en tant que root:
    [root@Augustin steph]# groupadd machines
    [root@Augustin steph]#

  2. Si vous souhaitez intégrer les machines à la main depuis le serveur, il faut créer un compte pour la machine pour Linux et pour Samba (cela ne dispense pas ensuite les clients de joindre le domaine):

    [root@Augustin root]# useradd -g machines -c "Compte Machine" -d /dev/null -s /bin/false nec08$
    [root@Augustin root]# smbpasswd -a -m nec08
    Added user nec08$.
    [root@Augustin root]#

    Pour le useradd, on ajoute bien un "$" à la fin du nom alors qu'on ne ne met pas pour le smbpasswd.

    Vous pouvez ensuite contrôler dans les fichiers /etc/passwd, /etc/shadow et /etc/samba si vous souhaitez contrôler la présence de votre nouveau compte machine.


Côté client:

Le cas XP:

Côté client, dans le cas d'une machine w$xp (testé sur xp pro, car il me semble que des changements sont intervenus pour contrevenir à une astuce qui permettait contre les souhaits de Micro$oft à un xp home de joindre un domaine), il est nécessaire d'effectuer quelques modifications au niveau de la base de registre.
Cela consiste à exécuter le fichier de registre suivant:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000
"requirestrongkey"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000
"requirestrongkey"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000
"requirestrongkey"=dword:00000000


Voici le fichier sambaXP.reg (rappel: ce point ne concerne que xp).

Vous pouvez en trouver un exemplaire à l'adresse http://us1.samba.org/samba/ftp/docs/Registry/WinXP_SignOrSeal.reg


Remarques:

  1. Il est nécessaire d'être administrateur de la machine xp pour pouvoir exécuter ce fichier de registre.

  2. Si vous souhaitez intégrer le domaine samba nommé fresnel_samba, il faut préalablement que le groupe de travail soit différent de fresnel_samba.
    Il n'est en effet pas possible de passer du groupe de travail fresnel_samba au domaine fresnel_samba.
    Si c'est votre situation, commencez par passer du groupe fresnel_samba à un groupe quelqconque (toto par exemple).
    Après un redémarrage, vous pourrez passer au domaine fresnel_samba.


L'intégration du domaine:

D'un clic-droit sur l'icone du Poste de travail, sélectionnez Propriétés système<<A VERIFIER>>.
Vous obtenez alors:

Dans l'onglet Nom de l'ordinateur, cliquez sur Modifier.
Vous obtenez alors:

Le nom du groupe de travail est différent du nom du domaine que nous souhaitons intégrer.
Il suffit donc de cocher Domaine et d'en préciser le nom:

Puis, en validant, on se voit invité à fournir le couple login/password de l'administrateur Samba:

Après validation, il faut un peu de temps avant d'obtenir une réponse, mais on finit par obtenir un message de bienvenue:

Si tel n'est pas le cas, avez vous bien respecté tous les points précédents?

Pour la suite, lors de la validation il vous est rappelé que vous devrez redémarrer pour que l'intégration du domaine soit prise en compte:

Un point d'exclamation sur fond jaune le rappelle encore dans l'onglet Nom de l'ordinateur:


Et lorsque vous quittez effectivement les Propriétés système, un dernier rappel est affiché:


Après redémarrage, si vous souhaitez vous connecter avec un compte défini sur le domaine, veillez à sélectionner dans le troisième champ de la fenêtre de login: fresnel_samba
Si ce troisième champ n'est pas apparent, développez la fenêtre pour pouvoir effectuer ce choix <<A "CAPTURER">>.


Les Profiles, le partage Home,...

Profiles

Pour w$nt/2k/xp, il faut ajouter quelques lignes dans le fichier /etc/samba/smb.conf

Ces OS ont besoin d'un partage sur lequel stocker les profiles d'utilisateurs.
Il faut donc décommenter le partage: <<A VERIFIER/REFAIRE>>

[Profiles]
    path = /home/samba/profiles
    browseable = no
    guest ok = yes
    writable = yes

Il y a de plus une option dans la section globale pour préciser le chemin vers les "profiles" A REVOIR


Home

Le partage Home est automatiquement "monté" dans un lecteur Z:
<<Ne faut-il pas un logon home,...? A REFAIRE>>

Si vous avez à la fois des machines nt/2k/xp et 9x/me, on pourra utiliser un script comme le suivant pour n'effectuer la création d'un lecteur réseau pour le home que lorsqu'il est nécessaire:

if "%OS%"=="Windows_NT" goto fin

rem Pour les Wnt/W2k/Wxp, le home est automatiquement en Z:
net use h: /home

rem Pour les Wnt/W2k/Wxp, la mise à jour nécessite
rem des droits administrateurs, donc on procède autrement.
rem Ici, c'est pour les W9x/Wme uniquement:
net use m: \\Augustin\majnorton
If exist \\Augustin\pc$\majok.txt goto dejamaj
:maj
m:
majnorton /q
cd \
echo "majOK" >>\\Augustin\pc$\majok.txt
goto fin
:dejamaj
@echo La mise à jour a déjà été faite.
:fin

rem Un partage pour tous:
net use p: \\Augustin\public

c:
cd \windows

Voici un exemplaire de ce script: scriptlogin.bat


Remarque:

Quelques précautions pour faire de notre Samba le patron sur le réseau:

   local master = yes
   preferred master = yes
   os level = 255

Et ce qui concerne le Contrôleur de Domaine:

    domain master = yes
   domain logons = yes
   logon script = script%G.bat


Astuce:

C'est un peu hors sujet ici en ce qui concerne samba, mais il s'agissait de trouver une solution à la mise à jour automatique des signatures de virus Norton.
J'ai indiqué une solution dans le cadre w$9x/me (voir ici).
En voici une autre adaptée à w$xp (et probablement nt/2k).

Le script de mise à jour, à partir d'un symcdefsi32.exe ou symcdefsx86.exe téléchargé et renommé en majnorton.exe, consiste à exécuter "majnorton /q" pour ne pas afficher de demande de confirmation.

Pour cela, considérons le fichier script_majnorton.cmd contenant seulement \\Augustin\majnorton\majnorton /q et procédons comme suit:

  1. Copier le fichier script_majnorton.cmd dans le dossier (à créer au besoin) :
         C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Startup
    Le dossier GroupPolicy est caché par défaut.

  2. Lancer gpedit.msc via Menu démarrer/Exécuter.

  3. Aller dans Configuration Ordinateur > Paramètres Windows > Scripts > Démarrage
    Cliquer sur Ajouter > Parcourir
    La fenêtre s'ouvre sur startup et le fichier script_majnorton.cmd doit apparaître.
    Le sélectionner.
    Enfin valider et relancer Window$.

Après redémarrage le script est exécuté.
Voici un exemplaire de ce script: script_majnorton.cmd


Remarques:

  1. Cela signifie qu'à chaque démarrage la mise à jour est effectuée d'après le téléchargement effectué sur le serveur.
    Si on procède par déconnexion/reconnexion, ce n'est pas un gros problème, mais si on redémarre souvent, cela freine quand même la machine avant que l'on se voie proposer la fenêtre de login.
    Il est possible d'adapter le script de la même façon que je l'ai fait pour des machines w$9x/me (voir ici pour les détails côté serveur):

    rem \\Augustin\majnorton\majnorton /q

    net use m: \\Augustin\majnorton
    If exist \\Augustin\pc$\majok.txt goto dejamaj
    :maj
    m:
    majnorton /q
    cd \
    echo "majOK" >>\\Augustin\pc$\majok.txt
    goto fin
    :dejamaj
    c:
    cd \winnt

    <<A TESTER/VERIFIER>>

    Voici un exemplaire de ce script: script_majnorton.cmd



  2. Je dois l'astuce concernant gpedit.msc à Patrice Tréton.
    Je n'ai fait que bricoler les scripts.

  3. Cette astuce doit permettre d'exécuter d'autres scripts/actions avec les droits administrateur avant même le login.


Liens:

Le site de ... <<RECHERCHER>>


Des clés de registres utiles: http://perso.wanadoo.fr/doc.jm/StratDem.htm