Gcolpart.com by reg

Windows dansera la Samba


News
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 ;)

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


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 samba
Parmi 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 :

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: nobody
Ensuite, 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 user
Des 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\%U 
Il faut maintenant entrer un mot de passe Samba pour root (on évitera le code root UNIX) :
# smbpasswd -a root
Notons 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/netlogon
Il faut faire très attention aux droits : Puis on ajoute ces partages de bases à notre smb.conf (ainsi que le partage homes) :
[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 pc
Ensuite 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:00000001
On 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/IP
Ensuite, 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 :

samba et win98

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\%U
Ils 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 :

samba et win2000

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
samba et winxp

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) :

samba et winxp

Puis cliquer sur le bouton "Ajouter..."
Si vous voulez savoir quels utilisateurs vous pouvez ajouter, cliquez sur "Parcourir...", vous obtiendrez ceci :

samba et winxp

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) :

samba et winxp

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 ;)

samba et winxp

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 user
L'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 user
On 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.reg
Attention, 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)


powered by Apache     powered by Debian     Valid XHTML 1.1     Valid CSS     ecrit avec Vim    
Copyright (c) 2002-2014 Gregory Colpart. Infogerance serveur