Dernière mise à jour : 05/08/2002
Nouvelle version de l'article sur Samba, je vais essayer de couvrir la partie partage d'informations (création de partages de Linux vers Windows et vice-versa) mais aussi comment paramétrer un PDC (Domaine Primaire d'Autentification) pour connecter des stations Windows vers un serveur Linux. Le projet Samba avance très vite et possède de nombreuses fonctions qui devraient vous intéresser même dans le cadre d'un réseau local si le reste de votre famille n'est pas encore convertie à la fièvre du pingouin.
Liens et projets
Il faut distinguer deux projets Samba, la version Samba classique qui s'occuppe plus du partage de fichiers et le fork (séparation des deux projets) de Samba TNG (The Next Generation) qui se veut plus orienté authentification Windows et émulation d'autres plateformes. Voici donc les liens des deux projets :
- http://www.samba.org/ - Projet original de Samba orienté partage d'informations.
- http://www.samba-tng.org/ - Samba TNG orienté authentification d'utilsateurs et domaines.
La plupart des distributions récentes comportent les packages de Samba qui devraient vous permettre un partage d'informations en peu de temps. Vous pouvez aussi récupérer les sources sur le premier lien et les installer avec un simple : ./configure ; make ; make install ; ldconfig. Tout sera alors installé dans /usr/local/* à moins d'avoir spécifié un --prefix. Attention : Si vous avez une version pré-packagée (.rpm, .deb, .tgz), elle fera précédence sur la version que vous installez. Assurez vous donc de la désinstaller.
Paramétrage de Samba (partage de données)
Dans un mileu peu sécurisé où vous avez juste besoin de partager un répertoire pour des utilisateurs Windows, vous pouvez sécuriser la share au niveau droits et permissions en outrepassant la sécurité utilisateur. Ce n'est pas vraiment conseillé dans une entreprise mais fera l'affaire dans un réseau familial. Editez donc votre smb.conf, selon votre distribution, il devrait se trouver à un de ces endroits : /etc/smb.conf, /etc/samba/smb.conf, /usr/local/etc/samba/smb.conf et changez les paramètres suivants :
-
workgroup = toto (remplacer par le domaine NT)
hosts allow = 192.168. 127. (remplacer par le masque de votre réseau, laissez 127. pour le local)
security = share (plus facile a parametrer que user, voir plus bas)
[partage] (mettre le nom de votre partage, évitez les espaces)
comment = mon partage (indiquer le commentaire apparaissant sous windows)
path = /opt/smb/partage (chemin physique du partage)
public = yes (vous pouvez préciser no, lisez la doc pour plus dinfos)
writable = yes (seulement si vous voulez accepter l'écriture ...)
printable = no (nécessaire seulement pour les imprimantes)
create mask = 0777 (ce masque crée un partage controlable par tout le monde)
Avec ces changements, vous venez de paramétrer un serveur Samba acceptant les connections du domaine toto et des machines ayant une adresse IP commencant par 192.168. Vous avez ensuite paramétré un partage étant dans /opt/smb/partage de type public (visible par tout le monde), writable (tout le monde peut y écrire) mais non imprimable (normal, ce n'est pas une imprimante). Sachez que pour que n'importe quel utilisateur puisse écrire, il faut aussi physiquement modifier les droits du partage : chmod 777 /opt/smb/partage/. Sans ce changement, les utilisateurs windows ne pourront pas écrire dans le partage.
Pour valider les partages, redémarrer le démon Samba. La plupart des distributions le mettent en : /etc/init.d/smb (ou samba), auquel cas il ne reste qu'à un faire un restart dessus (s'il n'est pas démarré, le système le fera pour vous) : /etc/init.d/smb restart. Vous pouvez vérifier que tout s'est bien passé en interrogeant tail /var/log/messages. S'il retourne une erreur, utilisez : testparm qui se charge de vérifier les erreurs de syntaxe dans votre fichier de configuation samba.
Vous pouvez aussi monter un partage windows vers Linux. Comme la plupart des montages, vous devrez être root pour que cela puisse marcher normalement. Imaginons que vous ayez une machine appellée SERVEUR qui soit un Windows quelconque avec un partage appellé donnees. Pour le monter, vous devrez fournir un utilisateur et mot de passe connu de la station Windows (à moins que cela soit un Windows 95/98/Me qui ne reconnaît que Guest en utilisateur). La commande mount sera alors à utiliser avec le type de fichier smbfs (logique) et la commande est du type :
-
mount -t smbfs -o username=steph,password=monpass \\SERVEUR\donnees /mnt/montage
Notez ici que la fin de la commande (/mnt/montage) définit l'endroit où vous montez le partage sur votre station Linux. Ce point doit avoir les droits suffisants pour vous autoriser à accéder voire écrire dans le partage. Vérifiez bien les droits qui ont été mis du coté de la machine Windows.
Controlleur de Domaine Samba
La configuration d'un controlleur de domaine s'avère nécessaire si vous désirez avoir un ensemble de machines Windows qui se connecteront sur votre serveur Linux émulant un serveur Windows. Assurez vous de n'avoir aucun autre controlleur de domaine dans les parages, sinon il va y avoir interférences. Voici les lignes à modifier dans votre smb.conf :
-
[global]
smb passwd file = /etc/samba/smbpasswd
passwd program = /usr/bin/passwd %u
domain master = yes
add user script = /usr/sbin/useradd -d /dev/null -g 1004 -s /bin/false -M %u
printing = cups
dns proxy = no
encrypt passwords = yes
logon path = \\%L\Profiles\%U
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = lpstat
max log size = 50
logon script = %U.bat
passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n
domain guest group = nobody @guest
security = user
domain admin group = root @wheel
domain logons = yes
unix password sync = Yes
workgroup = DOMAINETUX server string = Samba Server %v
local master = yes
netbios name = TUX
log file = /var/log/samba/log.%m
load printers = yes
username map = /etc/samba/smbusers
os level = 33
logon home = \\%L\%U\.profile
Dans cet exemple, j'ai configuré mon serveur TUX pour répondre au nom NetBios (Windowsien donc) de TUX, du domaine DOMAINETUX. La plupart des autres lignes tombent sous le sens, si vous devez néanmoins ensuite rajouter une station Windows 2000/XP, il vous faudra créer la station sur le serveur par la commande qui suit (dans l'exemple, la station s'appelle tux2 en minuscules, le $ est à ajouter au nom de la station). Vous devez aussi créer un compte samba root avec le même mot de passe que le serveur (seconde commande) :
-
useradd -d /dev/null -s /bin/false tux2$
smbpasswd -a root
Il ne vous reste alors qu'à aller sur la station Windows et dans les propriétés, changer de GROUPE de TRAVAIL vers DOMAINE et entrer : DOMAINETUX (c'est le nom de mon domaine dans l'exemple). Vous allez ensuite devoir entrer un nom d'utilisateur et un mot de passe qui est celui de root (nous l'utilisons car il est le seul à être autorisé à créér des comptes sur le serveur). Si vous consultez /etc/samba/smbpassd vous devriez trouver une référence ressemblant à celle-ci (commençant par le nom de votre machine) :
-
tux2$:502:ADD9127D4E1CA0E1636470050142B901:13689A202FFB97F9AA32F487F83A9214:
[W]:LCT-3D4DE2DD:
Félicitations, vous venez d'enregistrer votre première machine sur le domaine Samba. Il ne vous reste qu'à créer et enregistrer vos utilisateurs. Vous devez pour cela créer l'utilisateur toto par exemple, qui sera autorisé à se connecter sur le domaine DOMAINETUX (mon exemple). Si vous regardez de nouveau la configuration, le logon home est \\%L\%U\.profile, assurez vous donc qu'il existe.
Et bien voilà pour le moment, la prochaine étape sera d'introduire un annuaire LDAP similaire à celui des Active Directories sous Windows 2000/XP. N'hésitez pas à écrire pour me donner vos commentaires/critiques/suggestions.