Réseau Windows / Linux : Samba

20 Nov. 2004
Auteur : Hyacinthe MENIET
Responsable : TrustRobot
Score ( voter ) :
Connexes : Même auteur | Même responsable | Historique
Samba est une implémentation libre du protocole SMB (Server message Block) pour Unix. Le protocole SMB est le coeur de NetBIOS. Il va vous autoriser à partager vos fichiers et imprimantes entre Unix/linux et windows. Actuellement, il n'y a aucun support pour faire travailler Samba sur NetBEUI ou IPX/SPX. Vous devez donc passer par TCP/IP, à l'aide d'une carte Ethernet par exemple. Dans ce tutorial, je m'intéresse à la configuration domestique de samba, c'est le cas où vous avez, chez vous ou dans votre immeuble plusieurs postes linux/Windows et vous souhaitez qu'ils partagent des fichiers entre eux. généralement chaque poste est client et serveur à la fois.

1. Configuration des postes Windows :

Aucune configuration, particulière à faire, vous devez configurez vos postes Windows exactement comme s'ils partageaient des fichiers par Ethernet (TCP/IP) avec d'autres windows. Si vous ne savez pas comment faire cela, reportez-vous à l'un des nombreux sites de vulgarisation sur windows. Si vous avez des NT sur votre réseau (NT,2000,XP) n'oubliez pas de créer des utilisateurs pour que les machines Windows ou linux du réseau, puissent accéder aux ressources de vos machines.

2. Installation de samba :

Installation à partir des paquetages de sa distribution

Si vous êtes sous Mandriva, tapez simplement :
# urpmi samba samba-common samba-client samba-swat
Si vous êtes sous Fedora, tapez simplement :
# yum install samba samba-common samba-client samba-swat
Si vous êtes sous Debian, tapez simplement :
# apt-get install samba samba-common smbclient smbfs swat samba-doc
Si vous êtes sous Slackware, samba est présent sur vos cdroms (n/samba-xxx.tgz), installez-le par :
# installpkg /où_est/samba-xxx.tgz

Pour ceux qui souhaitent passer par les sources

Pour toutes les autres distributions, Vous passerez par les sources et téléchargerez la dernière version ICI . L'installation se résume alors à : $ cd /où_est_le_fichier $ tar -xzvf samba-xxx.tar.gz $ cd samba-xxx/source/ $ ./configure --with-fhs --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-static --enable-shared --with-manpages-langs=fr --with-syslog --with-smbwrapper --with-automount --with-libsmbclient --with-smbmount $ make $ su <password> # make install # touch /etc/samba/smb.conf A ce stade samba est installé, vous devez maintenant ajuster les droits sur certains programmes et lancer les daemons nécessaires à son fonctionnement, par :
# cd /usr/bin/ # chmod 4755 smbumount smbmnt # /usr/sbin/smbd -D # /usr/sbin/nmbd -D

3. Lancement automatique des daemons au démarrage :

Si vous avez choisi l'installation à partir des paquetages de votre distribution, tout est prêt et samba devrait se lancer automatiquement à chaque démarrage. Passez à la suite. Si vous êtes passez par les sources, vous pouvez créer un script qui lancera les daemons en vous référant à ceux de votre distribution. Sinon vous pouvez, tout simplement, rajouter les lignes suivantes à votre /etc/rc.d/rc.local (Il faut être root pour modifier /etc/rc.d/rc.local) :
if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd -a -r /etc/samba/smb.conf ]; then
  echo "Demarrage de samba ..."
  /usr/sbin/smbd -D
  /usr/sbin/nmbd -D
fi 

4. Configuration de swat :

La configuration de samba est sauvegardée dans /etc/samba/smb.conf, vous pouvez donc l'éditer et le modifier à votre guise. Je m'attacherai ici, à la configuration assistée par swat, un outil convivial livré avec samba. Si vous utilisez Debian ou Slackware (et la plupart des autres distributions), vous pouvez faire en sorte que ce soit le super daemon inetd qui lance swat quand il faut, pour cela, editez le fichier /etc/services et vérifiez qu'il contient la ligne :
swat    901/tcp    #SWAT
ainsi que le fichier /etc/inetd.conf qui doit contenir la ligne suivante :
swat stream tcp nowait.400 root /usr/sbin/swat swat
Si vous utilisez Mandriva ou Fedora, ce sera plutôt xinetd votre super daemon. Vous devrez toujours éditer /etc/services comme indiqué plus haut, assurez-vous également que vous avez un fichier /etc/xinetd.d/swat, si vous n'en avez pas, créez-en un qui ressemble à ceci :
# lancement à la demande, pour swap.

service swat
{
   port = 901
   socket_type = stream
   wait = no
   user = root
   server = /usr/sbin/swat
   log_on_failure @= USERID
   disable = no
} 
redémarrez inetd ou xinetd pour que les modifications soient prises en charge, par l'une ou l'autre de ces commades :
# /etc/rc.d/init.d/inetd restart # /etc/rc.d/init.d/xinetd restart
Ou redemarrez tout simplement la machine.

5. Configuration de samba :

Commencez comme avec Windows NT/2000/XP par créer des utiliateurs spécifiques au réseau :
# groupadd smbusers # useradd -g smbusers -s /bin/false administrateur # groupadd smbguests # useradd -g smbguests -s /bin/false smbguest
A ce stade vous avez 2 utilisateurs spécifiques à samba : administrateur (group smbusers) et smbguest (groupe smbguests). Inutile de leur affecter des mots de passe locaux, ils ne pourront jamais se connecter localement à la machine samba. Par contre il leur faut un mot de passe réseau, cf la suite. Il ne vous reste plus qu'à signaler à samba les utilisateurs, qui auront accès à samba. Il peut s'agir des utilisateurs "normaux" de votre linux (ceux qui ont des /home sur votre PC) mais aussi ceux du groupe smbusers. Pour chaque utilisateur tapez dans un terminal :
smbpasswd -a le_nom_de_l_utilisateur
Suivit de son mot de passe réseau (celui que vous taperez pour vous connecter au serveur samba, depuis un client linux ou windows). Vous pouvez désormais, lancer swat par http://votre_adresse_IP_locale:901 ou http://localhost:901. S'il vous demande un mot de passe, c'est celui de root qu'il faut indiquer.

5.1. Configurer Globals :

Pour ce faire Cliquez sur GLOBALS. Puis remplissez les zones de saisie en suivant les conseils suivants, certaines options sont visibles en cliquant sur "adavanced view":
Zone de saisie : Valeur :
workgroup Le_nom_de_votre_reseau
server string Le_nom_de_votre_serveur
map to guest Bad User
obey pam restrictions Yes
guest account smbguest
passwd program /usr/bin/passwd %u
passwd chat *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n
socket options IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
dns proxy No
ldap ssl no
Explications : Vous avez activé le partage de type USER : Quand le serveur dit au client qu'il fonctionne en mode de sécurité utilisateur, alors le client envoie tout d'abord une commande contenant un nom d'utilisateur et un mot de passe. A ce moment de la connexion, le serveur n'a aucune idée du service auquel le client veut accéder. Donc il doit baser sa procédure d'authentification uniquement sur ces deux éléments, le mot de passe et le nom d'utilisateur ou le nom de machine. Une fois que l'accès a été autorisé au client, alors celui-ci peut se connecter à n'importe quel share (auquel il a droit) sans pour autant devoir renvoyer une nouvelle fois le mot de passe. Dans toutes les autres zones, laissez la valeur par défaut. Cliquez sur Commit Changes pour valider ces changements.

5.2 Configuration des /home :

Pour permettre aux utilisateurs réguliers de votre linux d'accéder à leurs répertoires /home respectifs. Il vous suffit de Cliquer sur SHARES . Dans la boîte déroulante située entre les boutons Choose Share et Delete Share, sélectionnez homes et cliquez sur Choose Share. Si vous n'avez pas de homes, inscrivez homes en face de create share, puis appuyez sur create share. Une fois parvenu, cliquez sur "adavanced view". Les seules zones que vous devrez renseigner sont :
Zone de saisie : Valeur :
comment Home Directories
create mask 0750
directory mask 0750
browseable No
Dans toutes les autres zones, laissez la valeur par défaut. Cliquez sur Commit Changes pour activer ces changements.

5.3 Créer un partage accessible à tous

Pour avoir un répertoire public accessible à tous, il faut vous assurez que le dit répertoire est accessible au moins en lecture/exécution, par :
chmod 755 /mnt/pub
De retour sous swat, placez-vous, dans la page Shares et remplissez la zone suivant Create Share avec un nom significatif (par exemple public ), puis cliquez sur Create Share . Vous obtenez une nouvelle page à remplir :
Zone de saisie : Valeur :
comment Public
path /mnt/pub
read only no
guest ok Yes
Dans toutes les autres zones, laissez la valeur par défaut. Cliquez sur Commit Changes pour activer ces changements.

5.4 Créer un partage avec droits restreints :

Assurez-vous simplement que le répertoire cible est accessible en lecture/écriture/exécution, par :
chmod 777 /mnt/vip
Placez-vous, dans la page Shares et remplissez la zone suivant Create Share avec un nom significatif (par exemple vip ), puis cliquez sur Create Share . Vous obtenez une nouvelle page à remplir.
Zone de saisie : Valeur :
comment vip
path /mnt/vip
valid users looser nestor levitsky @smbusers
invalid users @windows e-deby root
read list @smbusers looser
write list nestor levitsky
guest ok No
Dans toutes les autres zones, laissez la valeur par défaut. Cliquez sur Commit Changes pour activer ces changements.

5.5 Création d'un partage d'imprimante :

Vous créez simplement un nouveau partage : printers, avec les options suivantes :
Zone de saisie : Valeur :
comment All Printers
path /tmp
create mask 0700
printable Yes
browseable No
guest ok yes

5.6 Imprimer en utilisant samba et cups :

Pour l'impression en réseau, réportez-vous au tutorial suivant.

5.7 Quelques commandes utiles :