|
Il y a actuellement 4 visiteurs connectés sur le site !
Le serveur samba
Introduction:
Un des principaux intérêts des réseaux est la possibilité de partager des fichiers.
SaMBa est un ensemble de programmes qui permettent de connecter à un serveur LINUX, des stations fonctionnant sous des systèmes divers : Windows 3.11, Windows 9x, Windows Nt, OS/2, Mac....
Samba ne permet d'accéder à à la station Windows qu'à travers le protocole TCP/IP, ce qui semble bien normal .
Il a besoin aussi du protocole NETBIOS
Sur chaque machine cliente, il faut tout d'abord ajouter TCP/IP et NETBIOS si ces protocoles sont absents. Bien vérifier que NetBios est activé avec TCP/IP (Voisinage réseau/Propriétés TCP/IP, onglet NetBios).
Il faut affecter une adresse IP à chaque station dans le même sous-réseau que le serveur Samba-Linux.
Comment fonctionne samba ?
Le protocole de communication permettant cette communication entre Windows est Linux s'appelle SMB (Server Message Block). Mis au point par Microsoft en 1987, en reprenant un concept mis au point par IBM en 1985 (NetBIOS), ce protocole s'appuie sur NetBIOS (ainsi que TCP/IP). L'intérêt de TCP/IP provient du fait qu'il a été très largement adopté. Ainsi TCP/IP est déjà implémenté sur la plupart des systèmes d'exploitation (Unix, Linux, AmigaOS, MacOS, OS/2, ...). selon le schéma suivant
| Applications |
| SMB |
|
IPX/SPX |
| Pilote Réseau |
Architecture de samba:
Samba est constitué d'un serveur et d'un client, ainsi que de quelques outils permettant de réaliser des services pratiques ou bien de tester la configuration.
* Le serveur est constitué de deux applications (appelées démons):
o smbd, noyau du serveur, fournissant les services d'authentification et d'accès aux ressources
o nmbd, permettant de montrer les services offerts par Samba (affichage des serveurs Samba dans le voisinage réseau, ...)
* le client: smbclient est un client pour linux fournissant une interface permettant de transférer des fichiers, accèder à des imprimantes
* smbtar: permettant d'effectuer un transfert de ou vers un fichier TAR sous linux
* testparm vérifiant la syntaxe du fichier smb.conf, le fichier de configuration de Samba
Installation de samba:
Avant d'installer Samba, il faut bien évidemment récupérer les fichiers RPM ou bien les sources, et ajouter les protocoles TCP/IP et NetBIOS sur les machines clientes afin de leur permettre d'accèder aux services de Samba.
L'installation (contrairement à la configuration) est très simple à mettre en oeuvre. Il suffit dans un premier temps de récupérer les fichiers RPM, puis dans un second temps de les installer:
urpmi samba-server
urpmi samba-common
urpmi samba-client
Premier demarrage de samba:
Après installation, le serveur de Samba devrait normalement être apte à démarrer (sans aucun partage de fichiers ou d'imprimante) en lançant la commande suivante:
/etc/rc.d/init.d/smb start
Le serveur devrait alors renvoyer les lignes suivantes:
Starting SMB services:
Starting NMB services:
La commande suivante permet de contrôler que les deux démons sont correctement lancés
/etc/rc.d/init.d/smb status
smbd (pid 1054) is running...
nmbd (pid 1056) is running...
Il existe une commande permettant de redémarrer Samba:
/etc/rc.d/init.d/smb restart
On lui préfèrera les deux commandes suivantes:
/etc/rc.d/init.d/smb stop
/etc/rc.d/init.d/smb start
Configuration de samba:
La configuration de Samba se fait à l'aide d'un fichier de configuration unique: smb.conf. Ce fichier est situé dans le répertoire /etc/samba/smb.conf
On va utiliser swat , un outil de paramétrage assisté pour le paramétrage de samba
urpmi samba-swat
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, 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
only_from = 127.0.0.1
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 commandes :
# /etc/rc.d/init.d/inetd restart
# /etc/rc.d/init.d/xinetd restart
Ensuite il vous faudra ajouter des utilisateurs pour samba : admin (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,
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.
Configuration de swat:
Vous arrivez alors sur la page web de SWAT :

Les partages de répertoires se font avec les boutons du haut
Dans un premier temps, vous pouvez vérifier les variables globales de Samba avec GLOBALS :

Le nom du workgroup doit être le même que celui des machines clients pour qu'elles puissent accéder au serveur.
Le netbios name sera le nom sous lequel le serveur apparaîtra dans le voisinage réseau.
Pour configurer les répertoire nous choisissons la commande SHARES :

Nous pouvons ici modifier la configuration des partages de fichiers et en créer de nouveau. Si nous affichons les propriétés du répertoire "partage" du serveur :

Il est à noter Les parties importantes :
* Path : C'est le chemin d'accès absolu sur le serveur pour ce répertoire. Tous les sous-répertoires seront aussi accessibles !
* valid user : Ce sont les noms des utilisateurs qui auront accès à ce répertoire.
* read only : Cette commande supplante toutes les attributions de droits au niveau du serveur. Si vous le mettez à "yes", personne n'aura le droit décrire dans ce répertoire.
* host allow : Vous pouvez ici préciser quels sont les numéros ip qui pourront accéder au répertoire. Ici, tous les numéros ip commençant pas 10.4.26 ont le droit d'accéder au serveur. Si quelqu'un tente d'accéder au serveur de l'extérieur avec un mauvais numéro ip, il sera rejeté !
* browseable : Indique si ce répertoire apparaît par défaut dans le voisinage réseau des machines Windows 95/98. Si vous le mettez à "No", l'utilisateur devra donner le chemin d'accès précis au répertoire (et donc connaître son existence et son nom complet) pour pouvoir y accéder.
Une fois que vous avez créé un nouveau partage, il faut redémarrer Samba. Vous pouvez faire cela directement dans la page web accessible par STATUS :

Partager un lecteur de CD ROM:
Vous pouvez aussi partager un lecteur de CD-ROM (celui-ci devant être préalablement monté) , en créant par exemple une section [cd-rom] comme suit:
[CD-ROM]
# commentaire visible depuis le voisinage reseau
comment = lecteur de CD-ROM
# chemin d'accès au lecteur
path = /mnt/cdrom
# accessible à tous
public = yes
# impossibilité d'écrire sur la ressource
writable = no
create mask = 0750
Test de la configuration:
Pour tester un fichier de configuration, rien ne vaut la commande testparm. Lorsque le programme testparm s'execute, il affiche les sections définissant les partages, puis vous demande d'appuyer sur entrée pour visualiser la définition des services.
Pour visualiser correctement les résultats, l'idéal est de faires une redirection de la commande dans un fichier texte. Tapez la commande suivante : "testparm > /tmp/testparm.txt"
Le programme semble alors bloqué. De fait, il attend que vous appuyez sur entrée. Editez le fichier /tmp/testparm.txt. Voilà la liste des paramètres par défaut, ainsi que ceux qu'il nous faut configurer ...
Vérifiez au passage qu'il n'y a pas trop d'erreurs dans ce résultat avant de continuer. Si tel est le cas, il nous faut revoir le fichier smb.conf.
Accéder à une ressource Samba sous Linux:
Le client Samba (smbclient) permet de fournir une interface en ligne de commande pour accéder aux ressources Samba à partir d'une machine de type Unix.
smbclient permet en premier lieu de vérifier l'existence d'une serveur Samba sur le réseau et de lister les ressources qu'il partage grâce à la commande:
smbclient nom_serveur_smb
Une fois les ressources identifiées, il est possible d'accèder à chacune d'entre elles par la commande:
smbclient \\\nom_serveur_smb\\ressource -U nom_utilisateur
Un mot de passe devrait être demandé à l'utilisateur. Il suffit ensuite d'envoyer des commandes FTP afin d'envoyer/recevoir des fichiers ou bien de parcourir les répertoires de la ressource.
L'accès à une imprimante se fait par la commande
smbclient \\\nom_serveur_smb\\ressource -P
* l'impression du fichier /usr/local/samba/lib/etc.conf se fait par la commande:
print /usr/local/samba/lib/etc.conf
* la visualisation de la queue d'impression:
queue
* l'arrêt de smbclient:
exit
Monter une ressource Samba partagee:
Les utilitaires smbmount et smbumount permettent de monter de démonter des ressources SMB en tant que système de fichiers distant (pour peu que le noyau supporte le système de fichiers SMB).
Pour monter une ressource la syntaxe est la suivante:
smbmount //nom_serveur_windows/nom_ressource /mnt -f 777
Il est nécessaire de rajouter une entrée dans le fichier /etc/hosts pour nom_serveur_windows avec son adresse IP, pour que smbmount puisse marcher correctement.
Enfin, il est nécessaire de passer quelques paramètres pour assurer la compatibilité des droits de MS-Windows avec les droits Un*x. La clause -f 777 met tous les fichiers en lecture-écriture pour tout le monde.
On peut bien sûr la combiner avec l'option -u uid et -g gid qui permettrons de définir les droits précis des fichiers de la ressource pour pallier les carences de MS-Windows dans ce domaine.
Pour démonter une ressource la syntaxe est la suivante:
smbumount /point_de_montage
Creation des utilisateurs Samba et acces aux comptes de ces utilisateurs:
Créer un utilisateur sur la machine serveur Samba sous Linux Mandrake version 10 (serveur) :
Graphiquement :
En ligne de commande taper mcc en se loggant en tant que root (ou passer par le menu « configure your computer »),nous voilà dans le Centre de Contrôle Mandrake , ensuite aller dans « système » puis « Utilisateurs et groupes » enfin « ajouter utilisateur ».
OU
En ligne de commande taper :
adduser Nom_Utilisateur
Ensuite entrer le mot de passe de l'utilisateur dans le fichier smbpasswd dans le répertoire /etc/samba de la manière suivante (en ligne de commande):
smbpasswd -a Nom-Utilisateur
En réponse :
New SMB password : Donner le même mot de passe que lors de l'ajout de l'utilisateur
Retype new SMB password :idem
Créer le même utilisateur avec le même passe sur la machine Windows (Client) :
Aller dans « panneau de configuration » puis dans compte utilisateur pour créer un utilisateur avec les droits « administrateur »
Renouveler autant de fois l'opération précédente qu'il y a d'utilisateur à créer.
Remarque : En cas d'utilisateurs déjà existant sur la machine Windows, le recréer uniquement sur le serveur Linux et surtout ne pas renommer un utilisateur, soit il est déjà existant soit il faut le créer. A chaque création d'utilisateur sous windows, redémarrage de la station.
Samba facile
J'utilise aussi cette interface agréable pour configurer samba
http://vuillod.frederic.free.fr/SambaFacile/ecrans.htm
Astuces Samba en vrac
Raccourci pour monter samba
Montage de la partition à la main :
mount -t smbfs -o username=toto,password=le_mot_de_passe
//nom_machine/nom_partage /point/de/montage
Très pratique : on met la commande dans un script et on met ça en icône sur le
bureau : il suffit de cliquer dessus pour être connecté.
Dans fstab, c'est presque pareil :
//nom_machine/nom_partage /point/de/montage smbfs username=toto,
password=le_mot_de_passe 0 0
La machine XP dispose de son propre firewall, quels sont les ports qu'il
faut ouvrir afin d'accéder aux ressources partagées ?
Les ports netbios : 137 à 139 en TCP et UDP
et le port microsoft-ds : 445 en TCP
Il est aussi en plus convivial, installer et utiliser LinNeighborhood.
Sources de l'article
|