Windows dansera la Samba
Merci de me faire part de vos critiques, suggestions, questions ou remerciements sur howto@gcolpart.com
Attention, cette documentation est publiée dans l'espoir d'être utile mais SANS AUCUNE GARANTIE. Si vous désirez avoir un support professionnel, adressez vous à un professionnel des logiciels libres comme Evolix par exemple ;)
Attention, cette documentation est publiée dans l'espoir d'être utile mais SANS AUCUNE GARANTIE. Si vous désirez avoir un support professionnel, adressez vous à un professionnel des logiciels libres comme Evolix par exemple ;)
Samba est un outil UNIX destiné à apprivoiser le monde fermé de Windows.
Il sert surtout de serveur de fichiers et de serveurs d'impression.
Il peut également contrôler les sessions ouvertes sur les machines Windows en tant que PDC (Primary Domain Controller).
- Installation
- Configurer Samba
- Configurer Samba en PDC
- Joindre les clients Windows
- Serveur d'impression
- Liens
Installation
Installez Samba soit en compilant les sources en vous rendant sur samba.org, soit en utilisant des paquets pour votre système (RPM, DEB...)
Sous Debian, on pourra faire :
apt-get install sambaParmi les dépendances installées, on notera les paquets libacl1, libattr1, libcomerr2, libcupsys2-gnutls10, libkrb53, libldap2, libpam0g, libpopt0, etc.
Lors d'une installation avec Debian, debconf vous posera plusieurs questions qui ressembleront à ceci :
- Comment voulez-vous lancer Samba ? je vous conseille en deamon
- Faut-il créer une base de données /var/lib/samba/passdb.tdb ? répondre oui (en fait, cela dépend de la façon dont vous voulez gérer vos utilisateurs)
Configuration de SAMBA
Éditez le fichier /etc/smb.conf et pour tester que ce ficher ne comporte pas d'erreur de syntaxe, utilisez la commande testparm
Voici les paramètres essentiels pour un serveur de fichiers classique (c'est-à-dire qui nécessite une authentification) :
workgroup: NOM_DOMAINE netbios name: NOM_MACHINE server string: Mon ptit serveur samba security: USER guest account: nobodyEnsuite, on peut facilement créer des partages de fichiers, qui apparaitront dans le voisinage réseau des machines Windows.
Pour accéder à ces partages, il vous faut entrer un login et password.
Le login doit etre présent en tant qu'utilisateur UNIX sur le serveur SAMBA et présent dans la base de gestion des utilisateurs Samba (smbpasswd, tdb, LDAP, etc.). Pour mettre un utilisateur dans la base de gestion des utilisateurs Samba, on utilisera la commande suivante :
# smbpasswd -a userDes manipulations peuvent s'avérer nécessaires pour que les clients Windows puissent accéder à Samba, notamment des clés de registre qui sont précisées dans la section suivante, mais ça ne devrait pas être la cas à ce stade.
Configurer SAMBA en PDC
Deux fichiers sont la base du serveur samba: smb.conf et smbpasswd
La section [global] du smb.conf pour configurer un serveur Samba en tant que PDC ressemble à celle-ci :
[global] # le nom du domaine workgroup = NOM_DOMAINE # le nom "netbios" du serveur (nom que Windows va lire # dans son voisinage réseau ) netbios name = NOM_MACHINE # un nom au choix explicitant la machine server string = Mon ptit serveur samba encrypt passwords = Yes # savoir ou sont les logs log file = /var/log/samba/log.%m max log size = 50 # ordre de résolution des noms NETBIOS name resolve order = wins host lmhosts bcast # pour pouvoir synchroniser l'horloge des clients sur celle du serveur # voir les scripts time server = Yes # IMPORTANT car spécifie que root peut joindre le domaine sur les clients domain admin group = root # permettre d'utiliser les profils errants sur le serveur samba domain logons = Yes # nombre pour battre les autres serveurs Windows os level = 95 preferred master = True domain master = True dns proxy = No # pour que le serveur samba soit aussi serveur WINS # càd résolve les noms NETBIOS grâce au demon nmbd wins support = Yes logon script = %U.bat # Répertoire utilisé par win9x pour stocker les profils logon path = \\%L\profiles\%U logon drive = Z: # Répertoire utilisé par winNT,XP pour stocker les profils logon home = \\%L\profiles\%UIl faut maintenant entrer un mot de passe Samba pour root (on évitera le code root UNIX) :
# smbpasswd -a rootNotons que l'on doit faire cela car pour joindre les machines Windows au domaine, il faudra préciser un utilisateur qui a l'UID égal à zéro !
Une fois cela fait il faut déterminer les utilisateurs qui pourront se connecter à samba et ou seront stockés leurs profils itinérants :
# addgroup smb # mkdir /var/samba # mkdir /var/samba/profiles # mkdir /var/samba/netlogonIl faut faire très attention aux droits :
- Le répertoire netlogon peut appartenir à root.root en lecture seule pour tout le monde
- Alors que le répertoire profiles doit être en lecture-écriture aux utilisateurs samba
- Il est donc conseillé de faire appartenir profiles au groupe smb précédemment créé ,:
# chown -R root.smb profiles # chmod 775 profiles
[netlogon] comment = Repertoires scripts path = /var/samba/netlogon browseable = No [profiles] comment = Homes windows path = /var/samba/profiles browseable = No read only = No [homes] comment = Répertoires personnels path = /home/%U browseable = No read only = No
Il faut maintenant ajouter les noms de machines qui pourront se connecter à samba.
Vous voulez par exemple joindre un poste portant le nom NOM_CLIENT
Créons tout d'abord un répertoire pour ces machines :
# addgroup pcEnsuite on ajoute un utilisateur spécial nom_client$ :
# adduser --ingroup pc --shell /dev/false \ --no-create-home --force-badname nom_client$Puis on l'ajoute à /etc/samba/smbpasswd :
# smbpasswd -m -a nom_client$Notons que sous Windows, le nom de la machine, appelé nom NETBIOS, est toujours en majuscule. Mais sous UNIX, on peut entrer le nom en minuscule. Ne pas oublier le $ à la fin du nom.
Joindre les clients Windows au serveur Samba
Voilà notre Samba bien configuré et "chaud" pour aller maitriser le diable de Windows.
- Pour un client Windows 98, il faut modifier cette clé dans le registre :
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] "EnablePlainTextPassword" = dword:00000001On utilisera regedit et on parcourera l'arborescence des clés jusqu'à voir VNSETUP dans la partie droite. Il suffit de cliquer dessus et de lui donner la valeur 1. Si cette clé n'existait pas, il faut la créer en utilisant le menu Édition, Nouveau puis DWORD.
Ensuite, il suffit d'aller dans l'option Réseau du Panneau de Configuration
Les composants réseaux apparaissants sont :
Client pour les réseaux Microsoft La carte réseau TCP/IPEnsuite, dans TCP/IP puis Propriétés, il faut définir l'adresse IP, le masque de sous-réseau, le serveur WINS (si besoin), le routeur et le(s) serveur(s) DNS.
Dans Client pour les réseaux Microsoft puis Propriétés, valider le paramètre Ouvrir la sessions sur un domaine Windows NT et entrer NOM_DOMAINE (du smb.conf) en tant que Domaine Windows NT comme cela :
Ensuite, on peut choisir de stocker plus ou moins de paramètres (icones bureaux, menu démarrer,etc...) grâce aux options de Windows 98
À noter que les profils errants sont stockés là où le précise la variable logon home de smb.conf
Il faut donc préciser :
logon home = \\%L\profiles\%UIls sont également stockés localement dans C:\WINDOWS\Profiles
-Pour un client WindowsNT4 (non testé personnellement), il faut modifier cette clé :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters] "EnablePlainTextPassword" = dword:00000001
-Pour un client Windows 2000 PRO (NT5), il n'y a pas grand chose à faire si Samba est bien configuré. Pendant l'installation, on va vous demander à quel domaine appartient la machine. L'identification va échouer et l'on vous précisera de recommencer plus tard. Après un reboot, vous pouvez vous joindre au domaine et ajouter un utilisateur. Ensuite, l'administrateur de la machine pourra ajouter des utilisateurs au domaine à sa guise dans le Panneau de configuration puis Utilisateurs et mots de passe comme cela :
Bien que je n'en ai pas eu besoin, on recommande de modifier cette clé pour Windows 2000 PRO mais aussi pour Windows XP PRO (non SP1) :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\ Services\LanmanWorkstation\Parameters] "EnablePlainTextPassword" = dword:00000001
-Pour un client Windows XP PRO (SP1), attardons nous un peu plus.
Lors de l'installation de Windows, spécifiez juste que la machine appartient au domaine NOM_DOMAINE et n'ajoutez pas encore d'utilisateur. N'oubliez pas non plus de configurer votre adresse IP, masque, passerelle et serveurs DNS, WINS.
Ensuite, connectez vous en tant qu'Administrateur.
Modifiez la clé de registre suivante :
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Netlogon\Parameters] "requiresignorseal"= dword:00000000
Différents HOWTO sur Internet conseillent de modifier également d'autres clés mais lors des différentes instalations que j'ai faite, je n'en ai pas eu besoin.
À titre d'information, voici tout de même ces clés (en espérant qu'un jour un administrateur Microsoft m'expliquera exactement à quoi servent ces clés) :
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\Netlogon\Parameters] "requiresignorseal"=dword:00000000 "requirestrongkey"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters] "requiresignorseal"=dword:00000000 "requirestrongkey"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters] "requiresignorseal"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System] "CompatibleRUPSecurity"=dword:00000001
[HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "CompatibleRUPSecurity"=dword:00000001
Une procédure facultative est d'ajouter manuellement les utilisateurs Samba sur la machine Windows.
Cela permet de contrôler plus finement le groupe des utilisateurs (administrateur, utilisateur avec/sans pouvoir, invités,...) mais c'est assez lourd à faire dès que si l'on a beaucoup de machines. Par défaut, avec ma configuration de Samba, les utilisateurs sont des utilisateurs avec pouvoir.
Pour faire cela, ouvrer Gestion de l'ordinateur depuis le menu Administration de l'ordinateur (dans le panneau de configuration) :
Puis cliquer sur le bouton "Ajouter..."
Si vous voulez savoir quels utilisateurs vous pouvez ajouter, cliquez sur "Parcourir...", vous obtiendrez ceci :
En entrant un login Samba, vous pouvez lancer une recherche sur le domaine et obtenir les utilisateurs présents sur le serveur Samba, (une croix rouge indique les utilisateurs non valides, c'est-à-dire sans mot de passe Samba) :
Bref, vous voilà prêt à ajouter tous les utilisateurs que vous désirez pour pouvoir leur spécifier des droits spécifiques. Cela est en fait surtout utile pour la gestion des groupes. En effet, on peut créer des groupes UNIX/Samba sur le serveur Samba et les faire appartenir à des groupes précis sur les clients Windows. Ceci est intéressant car les droits NT sont complétements différents des droits UNIX et on arrive à les gérer si la gestion des ACL est activée sur le serveur Samba.
Si vous voulez joindre une machine déjà installée, modifier la clé du registre indiquée ci-dessus. Puis connectez-vous en tant qu'administrateur Windows. Cliquer droit sur poste de travail, propriétés puis sur l'onglet "Nom de l'ordinateur", cliquez sur le bouton Modifier. Placez vous sur "DOMAINE" et entrez le nom du domaine de smb.conf (ici NOM_DOMAINE), puis OK.
Si tout se passe bien, vous devez voir s'ouvrir un fenêtre de login, sinon c'est que vous avez loupé une étape. Entrez le login root et son mot de passe Samba créé auparavant et vous aurez peut-être le superbe message bienvenue dans le domaine NOM_DOMAINE. Ensuite, votre machine Windows mérite bien un petit reboot ;)
Pour retirer le poste du domaine, la même procédure sera appliquée (on devra aussi entrer un login et password mais il pourra s'agir de root de n'importe quel utilisateur Samba qui est administrateur sur la machine locale d'où l'un des nombreux intérêts de restreindre ce type de comptes...
Revenons sur la façon de définir quels utilisateurs pourront venir se connecter sous Samba avec un profil errant. Ajoutons un utilisateur user. Notez que user doit etre un utilisateur UNIX.
# adduser --ingroup smb userL'option --shell /dev/false sera précisé si le serveur ne sert que de serveur Samba. Si il sert de serveur NIS ou encore de serveur SSH, on ne le mettra évidemment pas. En ce qu concerne le mot de passe Samba, notons qu'il peut être différent du mot de passe UNIX. On pourra synchroniser les mots de passe UNIX et Samba en utilisant l'option passwd sync dans le fichier smb.conf :
# smbpasswd -a userOn créé un script appelé user.bat dans /var/samba/netlogon
Il s'agit d'un script BATCH DOS qui s'éxecutera a l'ouverture de la session.
Par exemple :
REM reglage heure windows sur serveur samba NET TIME \\NOM_MACHINE /SET /YES REM pour monter le home de user sur H: NET USE H: \\NOM_MACHINE\user REM executer des cles de registre regedit /s \\NOM_MACHINE\netlogon\aqs.regAttention, il faut que ce fichier soit au format DOS c'est-à-dire avec les caractères retour à la ligne DOS !
Le grand moment est arrivé :
Loguer vous en tant que user (par exemple) au domaine NOM_DOMAINE avec votre mot de passe Samba.
Soyez attentif aux messages d'erreurs éventuels, vous aurez la première fois un message : %REMOVE_NODIR_ERROR% (constaté sous Win XP pro non SP1) ce qui est normal car il n'avait pas de profile jusqu'ici. Il crée ainsi un répertoire user dans /var/samba/profiles contenant le profil errant d'user.
Bien vérifier ensuite que tout se passe bien a la connexion/déconnexion des utilisateurs Windows.
Beaucoup de problèmes sont des problèmes de droits UNIX mal réglés.
Notez qu'ici root peut très bien se loguer... Cela peut sembler problématique même si il n'accède qu'au ressources partagées par Samba. Mais bon, vous utilisez Windows, vous êtes déjà à un niveau de sécurité critique ;)
Configurer un serveur d'impression
Il faut bien sur avoir installer au préalable votre imprimante, voir mon HOWTO imprimer
Ensuite à l'aide swat ou manuellement ajouter dans l'onglet global :
printing = cups
Puis créer un onglet pour l'imprimante :
[imprim] comment = imprimante du reseau dgcolpart path = /tmp guest ok = Yes printable = Yes print command = lpr -h -P'%p' %s printer name = imprim
Ne pas oublier de redémarrer samba. Ensuite, votre imprimante est disponible depuis Windows mais vous devez installer tout de même installer les pilotes de l'imprimante sur chaque client Windows...
Prenons par exemple un client Windows XP. Il faut ouvrir Imprimantes et Télécopieurs du Panneau de configuration. Cliquez sur Ajout d'imprimante et sélectionnez reconnaître "Une imprimante réseau ou imprimante connextée à un autre ordinateur".
Ensuite Windows reconnait tout seul l'imprimante sur \\NOM_MACHINE\imprim
Ensuite, il vous faut donc installer le pilote (vous pouvez créer un partage contenant les pilotes pour que l'installation soit automatique)
Liens
Voici une liste de liens intéressants pour configurer Samba:
Le site officiel de Samba (en anglais)
SMB HOWTO en français
Projet de traduction de la documentation de Samba 3
Site de l'académie de Créteil (section Stations Windows en réseau Linux)
Le tutoral de Léa
Le livre Using Samba d'O'reilly en ligne (en anglais)
Aide sur Samba (non mis à jour)