Page suivante Page précédente Table des matières

3. Créer un serveur samba

3.1 Principe

Je dois dire que je n'ai eu aucune réelle difficulté à installer samba et à le faire fonctionner.

3.2 Premiers pas

Pour utiliser samba, il faut bien sur d'abord l'installer. Il doit être fourni avec toutes les distributions (?). Il faut ensuite le lancer au démarrage. Avec la SuSE il suffit de mettre à "yes" quelques variables au nom très évocateur dans rc.config, avec vi ou avec yast.

A ce moment, vous devez avoir deux "démons" en fonctionnement, smbd et nmbd. Pour le vérifier faites :

ps ax | grep mbd

et vous devez voir les numéros de ces deux processus.

3.3 Documentation

La documentation fournie avec samba est assez volumineuse, mais vous éviterez difficilement de la lire, il faut donc prévoir de le faire.

Il n'y a pas pour l'instant de fichier "info", mais des fichiers man (faites "locate smb") :

et de nombreux fichiers doc :

Si vous avez la suse, essayez aussi susehelp, mais ce système nécessite netscape (je crois, c'est ce qu'il lance chez moi).

N'oubliez pas que le répertoire /usr a un sous rep doc qui contient plein de choses. Dans le pire des cas, on peut installer les sources et aller lire les commentaires.

3.4 Lancer et arrêter samba

Le script de gestion de samba est /sbin/init.d/smb, avec les options start, stop, restart, reload, status. C'est un script shell, donc du texte, vous pouvez y jeter un coup d'oeil (avec less).

3.5 Configuration de samba

L'essentiel de la configuration se fait à travers le fichier /etc/smb.config. Le fichier man le plus important est donc man smb.conf. Vous avez aussi des fichiers d'exemple dans /usr/doc/packages/samba/examples.

Poste privé

Voici un commentaire de mon fichier personnel (trois postes, serveur linux + 2 windows 95)

[global]

workgroup = perso

guest account = nobody

#je n'ai pas encore compris le fonctionnement du compte guest ("invité")

keep alive = 30

os level = 2

#si j'ai bien compris, plus le chiffre est grand, plus votre serveur va chercher à s'imposer comme patron sur le réseau. Ici il est seul, pas de problème. Si il y a un serveur nt, il vaut sans doute mieux lui laisser la gestion "administrative" du réseau, donc un faible chiffre (2) par défaut.

security = user

#en rapport avec les deux types de sécurité des réseaux windows. Là non plus, je ne comprends pas bien le fonctionnement. Presque tout le mode utilise "user", alors...

printing = bsd

#je ne crois pas qu'on utilise autre chose sous linux (mais samba tourne sur tous les systèmes Unix!)

printcap name = /etc/printcap

# ça devrait être évident

load printers = yes

#ça, par contre, ce n'est pas forcément une bonne idée. Si, comme moi, vous avez de nombreux pilotes d'impression installés (yast en installe 3 par imprimante : raw, ascii et mono) cette option va tous les rendre accessible aux utilisateurs. Voir plus loin une autre méthode.

; Please uncomment the following entry and replace the

; ip number and netmask with the correct numbers for

; your ethernet interface.

; interfaces = 192.168.1.1/255.255.255.0

#ici vous pouvez mettre l'adresse et le masque de votre carte. Si vous n'avez qu'une carte, c'est facultatif, mais si vous en avez plusieurs il faut dire à samba lesquelles il doit gérer. Il faut bien mettre l'adresse de l'interface et non pas celle du réseau (donc les 4 groupes au complet).

; If you want Samba to act as a wins server, please set

wins support = yes

; wins support = no

; If you want Samba to use an existing wins server,

; please uncomment the following line and replace

; the dummy with the wins server's ip number.

; wins server = 192.168.1.1

#là, je ne sais pas trop. Il semble que ça marche dans tous les cas, même sans cette option. Je crois comprendre que le protocole samba incorpore un système de résolution des noms (peut-être un polling du réseau, qui demande à tous les postes "qui es-tu, toi ?"). Enfin, tout ça permet d'appeler un poste par son nom de machine (charles, chez moi), au lieu de son adresse ip.

prefered master = yes

#encore un système pour faire la nique à NT. Sur le réseau principal de mon lycée, j'avais peur de perturber le fonctionnement du serveur nt principal. En fait non, car j'ai un nom de domaine différent (dans nt, groupe de travail ou domaine, la troisième ligne du login windows). Du coup les deux serveurs ne se gênent pas.

[homes]

comment = répertoire personnel

#samba implémente une méthode pour que chaque utilisateur ai accès à son propre répertoire. Dans la liste des "services" fournis par samba (visibles dans le "voisinage réseau" de windows), homes est remplacé par le nom de login. Par contre, ce n'est pas le cas avec net use, je ne sais pas pourquoi.

browseable = no

#si je me souviens bien, si on met yes ici, le service homes est visible dans le voisinage réseau et on peut donc voir la liste des répertoires utilisateurs. Mis à "no", seul le répertoire personnel de l'utilisateur est visible.

read only = no

#en principe chaque utilisateur peut écrire dans son propre répertoire!

; The following share gives all users access to the Server's CD drive,

; assuming it is mounted under /cd. To enable this share, please remove

; the semicolons before the lines

;

[cdrom]

comment = Linux CD-ROM

path = /cdrom

read only = yes

locking = no

# si vous devez installer un cd sur plusieurs clients, il peut être intéressant de le mettre en place dans le serveur, ainsi vous pouvez faire le tour des clients et lancer l'installation sur plusieurs d'entre eux. Je préfère, quand c'est possible, une "installation administrative".

[hp]

comment = All Printers

#j'ai juste remplacé le service "printers" par "hp" et j'ai eu la flemme de modifier la remarque. Quand samba crée ses services, elle regarde si ils ont le nom d'un utilisateur. Sinon il regarde si ils ont un nom d'imprimante. J'ai, pour mon compte, dans le fichier /etc/printcap une entrée hp pour une imprimante deskjet. Faire un service hp, revient donc à montrer au réseau une imprimante hp. Si le service printers est absent ou possède un drapeau browseable=no, seule l'imprimante hp va être visible. Ca c'était quand cette imprimante était sur mon poste...

browseable = yes

printable = yes

public = yes

read only = yes

create mode = 0700

directory = /tmp

Poste serveur réseau lycée

[global]

socket options = TCP_NODELAY

; pour être pris pour NT

announce as = NT

domain master = yes

local master = yes

preferred master = yes

domain logons = yes

configuration de base

workgroup = 204

keep alive = 30

;pour ne pas géner le serveur nt officiel

os level = 2

security = user

printing = bsd

printcap name = /etc/printcap

load printers = yes

;il faut que je puisse administrer depuis un client. A l'usage, il semble que root et dod n'ont pas exactement le même effet, bien que dod soit membre du groupe root. Il y a une nuance que je saisis pas.

admin users = dod,root

; pour les profils errants (permet d'avoir toujours le même profil, quel que soit le poste utilisé comme client, le profil est stocké sur le serveur)

logon path = \\N%\%U

preserve case = yes

case sensitive = no

; Please uncomment the following entry and replace the

; ip number and netmask with the correct numbers for

; your ethernet interface.

;24 veut dire 24 bits (3x8, donc 255.255.255.0) - il y a trois sous réseaux. Ce réglage est essentiel.

interfaces = 192.168.0.250/24 10.003.204.250/24 194.254.31.10/255.255.255.128

; If you want Samba to act as a wins server, please set

; wins support = yes

wins support = no

;je ne sais pas comment fonctionne le protocole, mais, même sans serveur wins on peut appeler un poste par son nom depuis un client. je pense que le message est envoyé et que chacun se reconnaît au passage.

logon script = /smb/netlogon

; If you want Samba to use an existing wins server,

; please uncomment the following line and replace

; the dummy with the wins server's ip number.

; wins server = 192.168.1.1

;homes est bien exporté comme le répertoire personnel de l'utilisateur, mais pas avec le bon nom dans net use

[homes]

path = /smb/usr/%S

comment = répertoires personnels

browseable = no

writable = yes

create mode = 0750

; The following share gives all users access to the Server's CD drive,

; assuming it is mounted under /cd. To enable this share, please remove

; the semicolons before the lines

;

; [cdrom]

; comment = Linux CD-ROM

; path = /cd

; read only = yes

; locking = no

[printers]

comment = All Printers

browseable = no

printable = yes

public = no

read only = yes

create mode = 0700

directory = /tmp

[tmp]

comment = espace temporaire

path = /tmp

read only = no

public = yes

browseable = no

;Dans mon lycée, nous utilisons beaucoup de logiciels dos organisés de la façon suivante : au premier niveau (racine) figurent un répertoire par application, seul répertoire connu des élèves, où ils mettent temporairement leurs fichiers. Il est connu que ces répertoires sont effacés TRÈS souvent et que donc tout fichier important doit être conservé sur disquette. Les logiciels sont dans une arborescence /travail/<nom application>. ainsi les élèves ne travaillent pas dans le répertoire de l'application et risquent donc moins d'effacer des fichiers importants. La racine est nettoyée régulièrement de tout ce qui y est malencontreusement déversé. Je fais gros usage d'"append", et sous win95 de setver. Cette configuration n'est pas grosse (moins de 100 Mo). Quand j'ai pris cet ordinateur pour en faire un serveur, j'ai gardé le vieux disque (j'en ai ajouté un nouveau) avec sa config, elle me sert de sauvegarde. Il suffit de recopier le nécessaire depuis le réseau pour reconstituer un poste abîmé.

[dos]

comment = installation standard du dos

;montée sur le serveur ici

path = /mnt/dos

;il faut bien que les usagers puissent la lire

public = yes

;ma i n'ont pa b'soin d'i'écrire

writable = no

printable = no

browseable = yes

guest ok = yes

;je ne sais plus trop pourquoi j'ai mis ça, puisque root a tous les droits...

write list = @root

;tout ce qui peut servir à windows (y compris une copie complète de win95 et win98 et les installations administratives) est là.

[win95]

;vous remarquez que j'ai créé une partition spéciale montée sur /smb pour tous ce qui concerne samba

path = /smb/win95

comment = installations pour win95

public = yes

printable = no

browseable = yes

writable = no

write list = @root

guest ok = yes

;Mon idée était de mettre ici une copie des répertoires système de windows, de mettre ce répertoire dans le path (sur le client), pour pouvoir utiliser windows et ses applications depuis le serveur. Concrètement, je n'ai pas été enchanté du résultat et je n'utilise plus ça pour l'instant. De nos jours les clients sont plus puissants que le serveur, a rien ne sert d'encombrer le réseau.

[system]

path=/smb/win95/system

comment=fichiers système pour windows

public=yes

printable=no

browseable=no

writable=no

writelist=@root

guest ok = yes

;on recommande de mettre ici des fichiers de config. Je n'ai pas bien compris si ils sont lancés automatiquement ou s'il faut le faire à la main. Ca a beaucoup d'importance. Le réseau principal de mon lycée est sécurisé par l'utilisation des "poledit" (policies, en français stratégies système) de windows et de ce fait (ou pour une autre raison que je ne connais pas) la configuration des mes logiciels est régulièrement effacée du seul poste client de mon local administratif qui est sur ce réseau. Du coup je ne peux rien laisser dans le menu démarrer (c'est effacé) et je ne peux donc pas lancer mon script automatiquement. Si le contenu de logon se lance tout seul... il faut que j'essaie (mais j'ai tant de choses à essayer !).

[netlogon]

path = /smb/netlogon

writable=yes

write list = @root

guest ok = no

;fin de smb.conf

Chaque client possède un fichier de démarrage du genre

net use l: \\c5\win95

pour faciliter le travail des utilisateurs.

3.6 Deux réseaux

Dans mon lycée, mon serveur linux est maintenant au carrefour de deux réseaux. En effet, les salles de construction mécanique (calculs de mécanique, dessin industriel) font des TP d'informatique avec toutes sortes de logiciels dont beaucoup sont sous dos. Beaucoup de ces logiciels sont anciens mais parfaitement adaptés et nous n'avons aucune raison de les changer, ils ne fonctionnent généralement pas en réseau, une des raisons importante étant que les clients dos pour réseaux prennent trop de place en mémoire.

Les clients réseau ne sont donc connectés que quand windows est lancé, et les élèves n'ont pas besoin d'accéder au réseau. Pour l'instant seuls les professeurs ont accès au serveur, qui leur sert principalement comme lieu de stockage centralisé pour leurs fichiers (parfois très gros), et de serveur d'impression. Je m'occupe de ces appareils (une trentaine, du 386 au pentium II), en principe une heure par semaine...

Sur le serveur, outre l'imprimante, on trouve donc les répertoires personnel, une copie du répertoire dos des postes clients, tous les utilitaires windows ainsi qu'une copie de win95 et de win98 et les installations administratives. Tout est en lecture seule sauf pour moi.

D'autre part il y a le réseau "général" du lycée, avec de gros serveurs NT, environ 200 postes connectés, liaison fibre optique entre les bâtiments, 3 ou 4 administrateurs à plein temps... et une liaison à Internet via le rectorat de Toulouse. Le lycée est relié au rectorat par liaison numéris 128 ko permanente, ce qui nous donne un confort certain sur Internet.

Les collègues de construction m'ont donc demandé de pouvoir accéder à notre serveur linux, avec son gros disque, à partir des postes du réseau général (où nous n'avons que 2Mo par personne - avec les élèves il y a plus de deux mille utilisateurs !). C'est ce que suis arrivé à faire.

Mon principal problème a été que le réseau du lycée est sécurisé au maximum avec les stratégies de windows (poledit) et que les administrateurs ne me sont pas d'un grand secours. Il me fallait donc travailler avec la plus grande prudence pour ne pas perturber leur travail et sans pouvoir utiliser les outils habituels de contrôle du réseau (je ne suis pas administrateur du réseau NT).

J'y suis arrivé assez facilement grâce à un poste situé à l'abris des élèves, dans la même pièce que mon serveur. La protection de windows est une passoire, mais j'ai quand même été obligé de ruser, ne serait-ce que pour pouvoir utiliser l'explorateur (normalement interdit).

Enfin ça marche, je peux me logger sur mon serveur et, sur le poste de ma salle j'ai pu installer un fichier batch de démarrage pour fournir aux utilisateurs (professeurs) leurs répertoires.

3.7 Imprimer de Linux vers windows95

La suse utilise par défaut le filtre d'impression apsfilter qui est si efficace que je n'ai seulement jamais eu ne serait-ce que l'idée d'en essayer un autre.

Un coup d'oeil sur la documentation samba indiquant comment imprimer vers une imprimante windows, en utilisant samba_print m'ayant découragé, et cette option n'étant pas urgente, j'avais remis l'opération à plus tard.

Mais deux faits sont venus me faire changer : la suse 6 a un menu dans yast pour installer cette imprimante pour vous, et j'ai déplacé l'imprimante couleur vers la chambre de mon fils qui s'en sert plus que moi. Du coup, un yast et cette HP 690 fonctionne nickel de mon linux. Mais qu'avait-il donc fait ? Un défaut de yast est de ne pas avoir de fichier log : il n'explique pas comment il fait ce qu'il fait, même si, le plus souvent, il appelle des utilitaires classiques.

Si vous me lisez, vous devez commencer à me connaître, je n'aime pas travailler dans le noir, je suis donc allé fouiller. Voici ce que j'ai trouvé.

L'imprimante distante est installée exactement comme une imprimante ordinaire, mais l'option lp, indiquant l'adresse de l'imprimante, est lp=/dev/null.

Dans le fichier /etc/apsfilter.<nomimprimante>, figure la ligne : REMOTE_PRINTER = "/usr/bin/samba_print //max/hp 6752 -U jdd -N -P".

Et c'est tout. //max/hp est bien sur le nom de partage de l'imprimante et je ne connais pas les options de la fin, sauf que jdd est mon login d'utilisateur sur linux et sur le poste de mon fils.

Comment allez-vous utiliser ça sur un autre poste, je ne sais pas. Utilisez apsfilter !

3.8 Imprimer de windows vers samba

Voyez dans la configuration imprimante hp

3.9 améliorations

Pour l'instant, je n'utilise samba que de façon basique, faute de temps à y consacrer, mais j'envisage des améliorations.

Le filtre d'impression apsfilter installé par suse donne des résultats époustouflants de qualité sur une bête imprimante à jet d'encre, et encore mieux sur une laser bon marché comme la HP6L

Il faut donc que je vérifie si on ne pourrait pas (la réponse est surement oui) envoyer au serveur d'impression linux du PostScript en lui demandant de traduire. Il faudrait alors installer une imprimante hp PostScript toute simple dans windows et la brancher sur le bon filtre.

3.10 Un serveur Linux, avantages et inconvénients

Avantages

On peut réutiliser un poste ancien. Linux veut de la mémoire (au moins 32Mo) et un gros disque (selon nombre de clients et type de travail, au moins 2 Go, jusqu'à 10 ou 20 Go).

Je ne l'ai pas testé, mais il doit être possible d'utiliser plusieurs vieux appareils avec chacun un gros disque pour augmenter la capacité.

Le serveur ne peut pas être infecté par un virus windows (très gros avantage !). Au cas où un virus mixte win/linux apparaîtrait, le temps de réactivité de la communauté linux étant très rapide, il serait sans doute identifié et arrêté très vite.

Linux est TRÈS stable. J'ai planté Linux deux ou trois fois, toujours sous X avec des problèmes de test de carte vidéo (donc en cours d'installation, avec des pilotes inadaptés) ou des programmes en version préliminaire. Par contre, en 9 mois, il n'y a eu aucun redémarrage du serveur en service.

Avec un peu d'expertise (je n'en suis pas encore tout à fait là) on peut modifier profondément la configuration du serveur sans le redémarrer, donc sans que les clients ne s'en aperçoivent. C'est rarement le cas avec nt.

Le système multiconsoles de linux est une merveille pour l'administrateur qui peut tester son travail pour le client avec alt F2. Sous nt il faut se délogguer et se relogger comme user !

Windows (y compris nt) a une caractéristique insupportable : on ne peut pratiquement rien faire tourner en arrière plan. Si vous avez une impression en train et que vous devez partir (pour faire cours a vos élèves, par exemple), vous devez tout arrêter ou laisser l'appareil allumé. Linux, avec & (travail en arrière plan) permet de fermer la session proprement avant de partir, tout en laissant le travail se faire. (je ne maîtrise pas ça encore sous X, mais qui utilise X pour administrer ?).

L'ouverture de session est immédiate. Sous NT une grande partie des pilotes n'est chargé qu'au login (anti-virus, pilotes zip), ce qui entraîne un délai vite pénible en période de test.

inconvénients

Il est indispensable de posséder un poste client pas trop loin pour faire les tests et les installations administratives. C'est aussi largement vrai avec un serveur nt car il est impératif, avec les programmes windows de tester leur réaction aux lecteurs réseaux - beaucoup n'aiment pas !

Toutes les fonctions de nt ne sont pas implémentées dans samba, mais il ne doit pas en manquer beaucoup !

Certains logiciels (AutoCAD) sont proposés avec un système de gestion des licences qui ne tourne que sous NT.

Il faut connaître deux systèmes fondamentalement différents (linux et windows) alors que 95 et NT sont voisins (c'est sans doute le principal inconvénient).


Page suivante Page précédente Table des matières