
Lectures recommandées (en anglais) :
- À la maison, il est possible de monter un petit réseau hétérogène (Windows, Linux et même Mac), surtout lorsqu'un membre de la famille préfère conserver son ordinateur Windows.
- Supposons un réseau simple, comme celui que j'avais monté chez moi à l'époque. Comme vous pouvez le constater dans le diagramme, le routeur était un vieux 486 et le serveur un vieux Pentium 90, encore fonctionnel, mais dont je ne me sers plus aujourd'hui. Sur ce petit réseau il y avait donc un ordi Windows (avec un utilistateur appelé nat), un ordi Linux (avec un utilistateur appelé jmv) et un serveur Samba tournant sous Linux, ainsi qu'une imprimante connectée à l'ordi Linux. Nous utiliserons cet exemple pour la configuration de Samba, sauf que, contrairement à ce que nous montre l'image, nous supposerons que l'imprimante est connectée sur le serveur Samba plutôt que sur l'ordi Linux.

- Un réseau fonctionnel. Vos ordis doivent être capables de communiquer ensemble
- Samba installé
- CUPS installé et fonctionnel sur le serveur, pour le partage d'imprimante(s)
- Le ou les ordis Windows doivent être configurés pour fonctionner en réseau (avec mot de passe utilisateur)
- Autant que possible, le serveur Linux doit avoir dans sa liste un utilisateur portant le même nom que celui de l'ordi Windows
- Le ou les ordis Windows doivent avoir le même nom de "workgroup" que l'ordi Linux. Voir l'onglet "Identification" dans les paramètres réseau du panneau de contrôle
- Il y a un fichier de configuration important : smb.conf, dont le chemin est habituellement /etc/samba/smb.conf. Pour le modifier, il suffit de l'ouvrir avec son éditeur favori, sous root.
- Il comporte deux grandes sections : [global] et [homes], la première étant la configuration globale du serveur et la deuxième permettant de configurer l'accès aux partages (fichiers et imprimantes) de façon plus pointue. Il est à noter que les paramètres de la section [homes] ont préséance sur ceux de la section [global]. Il est aussi important de se rappeler que les ordis Windows doivent faire partie du même "workgroup"
- Voici donc comment nous allons configuer notre serveur Samba, en commençant par la section [global] :
[global] workgroup = BIERE netbios name = HOUBLON server string = Serveur Samba %v sur %L password server = None username map = /etc/samba/smbusers log file = /var/log/samba/%m.log max log size = 50 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = No valid users = nat, jmv guest ok = No hosts allow = 192.168.1., 127. hide dot files = yes printcap name = cups printing = cups security = share (ou user) encrypt passwords = yes*
* Si l'on donne le paramètre encrypt passwords = yes, il faut aussi faire la commande suivante sur le serveur Samba :
smbpasswd -a nom_de-l'utilisateur
Depuis Windows 98 SE, le paramètre encrypt passwords = yes doit être utilisé
- On passe ensuite à la section [homes], où l'on définit les partages de fichiers et d'imprimantes. Encore une fois, un exemple simple :
[homes] comment = Répertoires partagés read only = No browseable = No [printers] comment = Toutes les imprimantes path = /var/spool/samba printable = Yes browseable = No [jmv] comment = Répertoire perso path = /home/jmv valid users = jmv read only = No
[nat] comment = Répertoire perso path = /home/nat valid users = nat read only = No
[flash] comment = Barette de mémoire path = /mnt/flash valid users = jmv, nat read only = No [cdrom] comment = lecteur CD path = /mnt/cdrom valid users = @buveurs volume = cd-rom commun [Canon] comment = Imprimante réseau path = /var/spool/samba read only = No printable = Yes printer name = Canon share modes = No [Epson] comment = Imprimante réseau2 path = /var/spool/samba read only = No printable = Yes printer name = Epson share modes = No
En réalité, les imprimantes ne sont pas de vraies imprimantes réseau. Elles sont connectées au serveur Samba sur les ports LPT et sont disponibles pour les autres ordi sur le réseau.
- Il faut maintenant (re)démarrer Samba. Sous Fedora (et en tant que root) :
/sbin/service smb restart
Pour bien d'autres distributions,
/etc/init.d/smb restart
- On peut vérifier notre configuration à l'aide de la commande testparm
- Un serveur Samba n'est pas destiné seulement aux machines Windows. L'utilisateur d'un ordi Linux peut également s'en servir et partager ses fichiers avec un utilisateur de Windows.
- smbmount permet de monter un lecteur réseau dans un répertoire du disque local d'un ordinateur Linux.
- Dans sa plus simple expression, la commande est la suivante
smbmount //nom_NetBios_de_la_machine_distante/nom_du_répertoire_partagé chemin_du_répertoire_local
- Mais on préférera y ajouter des options utiles comme le nom de l'utilisateur, son mot de passe, les droits de lecture et d'écriture, etc., ce qui donnera la commande suivante :
smbmount //nom_NetBios_de_la_machine_distante/nom_du_répertoire_partagé chemin_du_répertoire_local -o uid=nom_d'utilisateur,password=mot_de_passe,rw sans espace après les virgules
- Si on n'utilise pas l'option password, la machine distante demandera un mot de passe pour Samba. Les options uid et rw sont importantes pour avoir le droit d'écriture dans le dossier partagé
- Cette commande sert également à monter des dossiers partagés se trouvant sur des ordis Windows :-). Par exemple, elle m'a été utile pour monter un lecteur de carte de mémoire flash (pour un appareil photo numérique) qui ne fonctionnait que sous Windows.
Les instructions pour partager une imprimante avec CUPS se trouvent à l'adresse suivante : http://www.tldp.org/HOWTO/Debian-and-Windows-Shared-Printing/sharing_with_windows.html#share_cups_config. En fait, ces instructions devraient s'appliquer à n'importe quelle distribution, puisqu'elles nous viennent de Debian et qu'elles fonctionnent avec Fedora et Gentoo.
Les points à retenir
Sous la rubrique [printers]
browseable = yes (pas obligatoire)
printable = yes
path = /chemin/du_spool/de_l'imprimante (dans mon cas, /var/spool/samba)
Pour bien d'autres distributions,
/etc/init.d/smb restart
Il faut "décommenter" la ligne où se trouve
application/octet-stream application/vnd.cups-raw 0 -
pour que CUPS accepte des commandes d'impression de documents préformatés
Dans le fichier /etc/cups/mime.types :
il faut ensuite enlever la marque de commentaire (#) devant la ligne suivante :
application/octet-stream
Enfin, il faut dire à CUPS d'accepter les connexions des autres machines du réseau. Ajoutez les lignes suivantes à votre fichier /etc/cups/cupsd.conf :
<Location /printers>
AuthType None
Order Deny,Allow
Deny From None
Allow From [adresse IP de votre réseau, avec un astérisque (*) à la place du dernier chiffre]
</Location>
Pour bien d'autres distributions,
/etc/init.d/cups restart ou /etc/init.d/cupsd restart
- Si la ligne de commande vous rebutte, il existe quelques interfaces graphiques vous permettant de configurer votre serveur Samba, dont les plus connues sont SWAT (Samba Web Administration Tool) et Webmin. Ici nous verrons comment faire fonctionner SWAT.
- SWAT a tout d'abord besoin de inetd (vieux) ou xinetd qui est un « super démon » permettant de contrôler d'autres démons et de leur assurer plus de sécurité. Les services gérés par xinetd se configurent habituellement à l'aide d'un fichier se trouvant dans le répertoire /etc/xinet.d/. Dans le cas qui nous occupe, ce fichier s'appelle bien évidemment swat. Voici un exemple de fichier de configuration de SWAT sous xinetd :
# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
# to configure your Samba server. To use SWAT, \
# connect to port 901 with your favorite web browser.
service swat {
port = 901
socket_type = stream
wait = no
only_from = localhost 192.168.1.0
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no
} Notes :
Ce fichier doit être édité sous root
Il y a deux paramètres importants à modifier, et c'est only from et disable (voir plus bas)
service swat (le nom du service)
{
port = 901 (le port, évidemment, qui est déjà paramétré à 901 si le fichier existe déjà)
socket_type = stream
wait = no
only_from = localhost 192.168.1.0 (l'IP du réseau doit être écrite au complet [i.e. le « 0 » à la fin])
user = root (ne pas en inscrire d'autres, sinon ça ne marche pas! Je l'ai essayé)
server = /usr/sbin/swat (le programme)
log_on_failure += USERID
disable = no (mettre à "no" pour activer le service. IMPORTANT!!)
}
Il ne reste plus maintenant qu'à redémarrer xinetd :
Sous Fedora, /sbin/service xinetd restart
Sous plusieurs autres distributions, /etc/init.d/xinetd restart
... et à pointer votre navigateur préféré sur http://localhost:901 pour administrer facilement votre serveur Samba à l'aide d'une interface graphique.
Guy Lessard et Jean-Marc Vaillancourt
Club Linux-Gatineau
Dernière mise à jour : le 28 novembre 2010