« Samba » : différence entre les versions
Ligne 764 : | Ligne 764 : | ||
Si le problème survient sur un fichier winbind, arrêter le service winbind : | Si le problème survient sur un fichier winbind, arrêter le service winbind : | ||
service winbind stop | <code>service winbind stop</code> | ||
Si le problème survient sur un autre fichier, arrêter le service samba : | Si le problème survient sur un autre fichier, arrêter le service samba : | ||
service smb stop | <code>service smb stop</code> | ||
Supprimer ensuite le fichier qui ne fonctionne pas : | Supprimer ensuite le fichier qui ne fonctionne pas : | ||
rm test.tdb | <code>rm test.tdb</code> | ||
Récupérer la dernière version correcte depuis la sauvegarde : | Récupérer la dernière version correcte depuis la sauvegarde : | ||
cp /root/backup/samba/cache/test.tdb.bak test.tdb | <code>cp /root/backup/samba/cache/test.tdb.bak test.tdb</code> | ||
Vérifier le fichier : | Vérifier le fichier : | ||
tdbbackup -v test.tdb | <code>tdbbackup -v test.tdb</code> | ||
Si tout est ok, redémarrer le service qui a été arrêté : | Si tout est ok, redémarrer le service qui a été arrêté : | ||
service winbind start | <code>service winbind start | ||
service smb start</code> | |||
service smb start |
Version du 1 octobre 2008 à 14:03
Partager ses fichiers et imprimantes avec Samba
Vous disposez à la maison ou dans votre entreprise de machines sous Linux et d'autres sous Windows. Comment faire en sorte de faire communiquer tout ce petit monde ? Samba va vous permettre de centraliser et rendre accessibles vos fichiers et imprimantes à partir de toutes ces machines.
L'article se propose de donner les éléments nécessaires pour configurer ce partage dans un contexte de groupe de travail (le plus simple) mais en sécurisant un minimum l'accès à ces ressources, et donc une authentification des utilisateurs. Nous verrons dans un premier temps la configuration en mode texte, qui a l'avantage de vous expliquer les arcanes du fonctionnement du serveur. Vous pourrez également utiliser les interfaces graphiques, ce qui vous permettra d'obtenir le même résultat.
Le projet Samba
Le projet démarre en 1992, grâce à Andrew TRIDGELL. Etudiant en physique, il développe un protocole de partage de fichiers qui émulait les systèmes Digital. 18 mois plus tard, il apprendra que ce protocole fonctionne également avec Windows.
Depuis le projet compte des développeurs dans le monde entier et bénéficie également de financements d'entreprise pour l'implémentation de fonctionnalités compatibles Windows.
Installer Samba
Nous allons travailler à partir d'une distribution Mandrake 10.0. Les postes clients peuvent être indifféremment sous Windows 95/98 et/ou Windows 2000/XP/2003.
Récupération et installation des paquetages Samba.
Lors de l'installation de votre distribution, vous avez pu choisir d'installer un certain nombre de serveurs, dont Samba. Nous allons donc commencer par véfifier la présence des paquetages nécessaires.
# rpm -qa | grep samba
samba-server-3.0.2a-3mdk
samba-common-3.0.2a-3mdk
samba-client-3.0.2a-3mdk
Si vous obtenez quelque chose de similaire, c'est que tout est déjà prêt. Vous pouvez alors passer à la section suivante. Dans le cas contraire, nous allons installer les paquetages depuis le CD de votre distribution (ou tout autre support contenant votre distribution) :
# urpmi samba
Un des paquetages suivants est nécessaire :
1- samba-server-3.0.2a-3mdk.i586
2- samba2-server-2.2.8a-14mdk.i586
Que choisissez-vous ? (1-2)1
Pour satisfaire les dépendances, les paquetages suivants vont être installés (14 Mo):
samba-common-3.0.2a-3mdk.i586
samba-server-3.0.2a-3mdk.i586
Est-ce correct ? (O/n) o
Préparation... ##################################################
1:samba-common ##################################################
2:samba-server ##################################################
L'installation propose un choix entre Samba2 et Samba3. La dernière version apporte des améliorations considérables et des fonctionnalités supplémentaires, comme la gestion des groupes. Ces fonctionnalités sont surtout utilisées dans une configuration orientée entreprise mais après tout, ne nous refusons rien !
Nous allons également installer la partie cliente. Elle contient tous les outils qui permettent notamment le montage et le parcours des ressources Samba.
# urpmi samba-client
Préparation... ##################################################
1:samba-client ##################################################
Premier test de votre installation
Maintenant que Samba est installé, démarrons le serveur :
# /etc/rc.d/init.d/smb start
Lancement du service SaMBa : [ OK ]
Lancement du service NMB : [ OK ]
Deux démons sont lancés, nécessaires au fonctionnement du serveur Samba : smbd et nmbd.
- smbd permet le partage des fichiers et imprimantes
- nmbd permet quant à lui le parcours du réseau et la résolution de noms Netbios...
# /etc/rc.d/init.d/smb status
smbd (pid 970) is running... nmbd (pid 972) is running...
La commande ci-dessus permet de vérifier que Samba fonctionne correctement. Vous devez voir apparaitre les deux dernières lignes.
Automatiser le lancement de Samba
La dernière phase de l'installation consiste pour nous à vérifier que Samba sera bien lancé automatiquement à chaque démarrage de la machine (ce qui évite bien des surprises !). Pour le vérifier, exécutons la commande ci-dessous :
# chkconfig --list smb
smb 0:Arrêt 1:Arrêt 2:Arrêt 3:Arrêt 4:Arrêt 5:Arrêt 6:Arrêt
Elle indique les niveaux de fonctionnement auxquels le serveur est démarré. Dans le cas où Samba n'est pas démarré aux niveaux souhaités, ici il n'est jamais démarré, il suffit de reconfigurer l'initialisation du serveur :
# chkconfig --level 345 smb on
Dans ce cas, Samba est démarré aux niveaux 3, 4 et 5, ce qui correspond aux niveaux standards de fonctionnement des services réseau.
Si la ligne de commande vous insupporte, vous pouvez utiliser, en root, la commande drakxservices :
Schema1 : configurer le démarrage de Samba
Cliquez sur la case à cocher "Au démarrage" sur la ligne smb pour démarrer le service dès le démarrage.
Installation du serveur d'impression
Pour terminer la phase d'installation, nous allons voir comment installer et configurer rapidement le serveur d'impression cups. Encore une fois, l'installation des paquetages est réalisée grâce à la commande urpmi, suivie du démarrage du serveur :
# urpmi cups cups-drivers
installation de /var/cache/urpmi/rpms/cups-1.1.20-5mdk.i586.rpm
/var/cache/urpmi/rpms/cups-drivers-1.1-133mdk.i586.rpm
Préparation... ##################################################
1:cups ##################################################
2:cups-drivers ##################################################
# service cups start
Lancement du service d'impression CUPS : [ OK ]
Ci-dessous la configuration et la gestion d'une imprimante :
Schema2 : interface d'administration de cups
La configuration est relativement simple. Sur votre machine, tapez l'url : http://localhost:631. Cliquez sur "Administrer les imprimantes" et laissez-vous guider pour ajouter votre ou vos imprimantes :).
Le fichier de configuration principal
Le fichier de configuration à connaitre pour Samba est /etc/samba/smb.conf. Nous allons en détailler les grandes rubriques. Celui-ci, on le verra, est modifiable soit à l'aide d'un éditeur de texte soit d'une interface graphique.
Le fichier est découpé en grandes sections indiquées de cette manière : [section]. Les différents paramètres sont ensuite inscrits de la manière suivante : paramètre = valeur. Toute ligne commencée par un "#" ou ";" est considérée comme un commentaire. Par convention, le ";" est utilisé pour commenter les lignes de configuration.
Nous allons passer en revue les différentes sections en énonçant les paramètres les plus courants. Les outils graphiques proposés pour paramétrer Samba que nous verrons par la suite, ne font que mettre à jour ce fichier de configuration.
Section de configuration générale
La première section est annoncée par [global]. Elle contient les éléments généraux de la configuration du serveur Samba : nom du groupe de travail, réseaux autorisés, utilisateurs administrateurs...
- workgroup : nom du groupe de travail ou du domaine
- netbios name : nom netbios du serveur Samba, par défaut égal au nom de la machine (hostname)
- server string : description affichée lors du parcours réseau, il s'agit d'un commentaire
- printing : système d'impression utilisé pour le serveur d'impression : sous Linux on trouvera lprng et de plus en plus, cups (le choix réalisé dans cet article).
- log file / max log size / log level : configuration des logs du serveur : respectivement le nom du fichier de log, sa taille maximum et le niveau des logs (plus le niveau est élevé, plus la quantité d'informations est importante)
- hosts allow (deny) : entrer ici la liste des adresses IP des machines (ex : 192.168.0.3) ou réseaux ( ex : 192.168.0.) autorisés à se connecter au serveur Samba (et inversement si on utilise le paramètre hosts deny). Le paramètre est important surtout si votre machine est accessible de l'extérieur. Le protocole Netbios fait l'objet de nombreuses attaques. Pensez également à configurer votre firewall pour bloquer les ports 137, 138 et 139 de l'extérieur.
- security : c'est une des options les plus importantes du fichier, qui pourra être bloquante si elle est mal renseignée. Elle indique le mode de discussion du client Windows avec le serveur Samba. Dans les versions 3.x de Samba, le défaut est user, et share pour Samba 2.x. Dans la version qui nous intéresse, on utilisera le mode user si les noms de comptes utilisés pour se connecter au serveur ont un compte équivalent sur la machine Linux (existence d'une entrée dans /etc/passwd). Dans le cas contraire, on préférera share. Il existe également 2 autres types possibles : domain et server que nous n'aborderons pas ici et qui sont réservés dans un fonctionnement de Samba en tant que contrôleur de domaine. Ci-dessous quelques explications sur les implications de ce choix :
- share : ce mode ne nécessite pas d'authentification par un compte valide. Si le paramètre guest only est renseigné, alors tout nouvel utilisateur sera identifié par le biais de cet utilisateur invité.
- user : dans ce cas de figure, l'utilisateur doit s'authentifier systématiquement. Son compte windows devra disposer d'un compte correspondant sur le serveur (on parle aussi en bon français de mapping)
- encrypt passwords / unix password sync / passwd program / passwd chat : configuration des mots de passe. On aura recours aux mots de passes encryptés.
La synchronisation des mots de passe permet la synchronisation entre le mot de passe de l'utilisateur Samba et son compte sur le système Linux. En l'autorisant, on permet à l'utilisateur de modifier son mot de passe à partir de la machine cliente et donc d'un poste client sous Windows.
Enfin passwd program et passwd chat indiquent le programme utilisé pour réaliser cette modification ainsi que le dialogue qui s'établira avec le serveur. Les paramètres par défaut conviennent parfaitement. - character set / client code page : permettent de faire correspondre un code page Windows avec un character set UNIX, pour utiliser notamment les caractères accentués. Par défaut, on utilisera :
client code page = 850
character set = ISO8859-1
- ou
character set = UTF-8
, selon la locale de votre machine.
Section de configuration des partages de fichiers
Nous allons maintenant passer aux sections de partages de fichiers. Nous aurons une section par partage défini. A l'intérieur de chacune de ces sections, nous trouverons les options qui définissent le dit partage.
Nous allons donner un nom à chaque partage. Attention il existe un nom de partage de fichiers spécifique : [homes]. Il définit le partage des répertoires personnels des utilisateurs, sans avoir à spécifier le chemin dans les options. De manière générale, on aura donc [monpartage].
Ci-dessous le détail des options les plus courantes utilisées :
- path : chemin d'accès du partage - il n'est pas à spécifier pour le partage [homes]
- comment : commentaire décrivant le partage qui apparait lors du parcours du réseau Samba (voisinage réseau sous Windows), il s'agit uniquement d'un commentaire
- browseable : le partage sera visible lors du parcours du réseau
- read only : limite l'accès en lecture uniquement
- write list : limite l'accès en écriture aux données du partage aux utilisateurs et/ou groupes d'utilisateurs spécifiés. Un groupe sera mentionné de cette façon : @nom_du_groupe.
Configuration des partages d'imprimantes
Votre serveur Samba peut également vous servir à partager des imprimantes. Nous traiterons ici du cas où ces imprimantes sont gérées par cups.
Le partage d'imprimante peut se faire à plusieurs niveaux :
- partage de la ressource (partage intitulé [printers]), mais qui nécessite d'avoir installé les drivers sur le poste client,
- partage des drivers, dans ce dernier cas vous n'avez plus besoin d'installer de driver sur le client Windows, le partage est intitulé [print$].
Vous pouvez décider de partager uniquement la ressource ou bien les drivers et la ressource.
[global]
...
# système d'impression utilisé
printing = cups
# administrateur des imprimantes
printer admin = root
...
# partage des ressources d'impression
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
guest ok = Yes
printable = Yes
browseable = Yes
# partage des drivers des imprimantes
[print$]
path = /var/lib/samba/printers
browseable = yes
read only = yes
write list = root
Pour mettre les drivers à disposition sur le serveur Samba, il vous faut vous procurer les drivers Postcript Adobe. Pour les télécharger : http://www.adobe.com/support/downloads. Une fois extraits, nous allons les copier dans /usr/share/cups/drivers.
Nous allons ensuite procéder à la création effective du partage des imprimantes cups par Samba grâce à la commande cupsaddsmb :
# cupsaddsmb -a
...
passwd:
...
#
Pour vérifier que le lien a bien été réalisé, vous avez plusieurs possibilités.
- la commande smbclient va vous lister, entre autres, les imprimantes partagées :
# smbclient -L localhost
Password:
Anonymous login successful
Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a]
Sharename Type Comment
--------- ---- -------
print$ Disk
public Disk Public Stuff
IPC$ IPC IPC Service (Samba Server 3.0.2a)
ADMIN$ IPC IPC Service (Samba Server 3.0.2a)
hp4050n Printer
hplaser4000 Printer hplaser4000
Anonymous login successful
Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a]
...
- la commande rpcclient permet, selon l'option choisie, d'énumérer les imprimantes et drivers partagés :
# rpcclient -d=0 -U root -c 'enumprinters' localhost
Password:
flags:[0x800000]
name:[\\pingu\hp4050n]
description:[\\pingu\hp4050n,hp4050n,]
comment:[]
flags:[0x800000]
name:[\\pingu\hplaser4000]
description:[\\pingu\hplaser4000,hplaser4000,hplaser4000]
comment:[hplaser4000]
# rpcclient -d=0 -U root -c 'enumdrivers' localhost
Password:
[Windows 4.0]
Printer Driver Info 1:
Driver Name: [hplaser4000]
Printer Driver Info 1:
Driver Name: [hp4050n]
[Windows NT x86]
Printer Driver Info 1:
Driver Name: [hplaser4000]
Printer Driver Info 1:
Driver Name: [hp4050n]
[Windows NT x86]
Printer Driver Info 1:
Driver Name: [hplaser4000]
Printer Driver Info 1:
Driver Name: [hp4050n]
- enfin la commande testprns permet de vérifier qu'un nom d'imprimante est valide c'est-à-dire utilisable car correctement reconnu sur le système.
# testprns hp4050n
Looking for printer hp4050n in printcap file /etc/printcap
Printer name hp4050n is valid.
# testprns bidule
Looking for printer bidule in printcap file /etc/printcap
Printer name bidule is not valid.
Commandes utiles
Monter des ressources du serveur dans un système de fichiers Linux
Il est possible d'utiliser une un partage de fichiers smb (Samba, Windows©) comme faisant partie du système de fichiers Linux local : il suffit de monter la ressource. Pour que cela fonctionne, il faut que le noyau de Linux ainsi que Samba aient été compilés avec le support du système de fichiers smbfs (ce qui est le cas du noyau et des paquetages Samba de Mandrake ainsi que de nombreuses autres distributions).
L'opération peut être réalisée avec la commande classique mount mais uniquement en tant que root.
Exemple :
# mount -t smbfs \\\\pingu\\homes /mnt/samba -o username=anne
Cet exemple permet de monter le répertoire personnel de l'utilisateur anne partagé par le serveur samba sur le répertoire /mnt/samba. Le montage nécessite de spécifier le type de système de fichiers (-t smbfs) et l'identité utilisée pour accéder au partage (-o username=anne). Ce système de fichiers peut être démonté grâce à la commande umount.
# umount /mnt/samba
Ce montage peut être effectué en "non root" grâce à la commande smbmount, à condition que le répertoire de montage soit accessible en écriture pour l'utilisateur, ainsi que le partage lui-même..
Exemple :
$ smbmount \\\\pingu\\homes /home/anne/samba
Le système de fichiers sera démonté toujours en utilisateur grâce à la commande smbumount.
$ smbumount home/anne/samba
Tester la syntaxe de smb.conf : testparm
La commande testparm permet de tester les options utilisées dans le fichier ainsi que la syntaxe. Elle spécifie également, après parcours du fichier, les partages effectifs, le status du serveur.
Testons la validité de notre fichier de configuration :
# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Parcourir le réseau : smbclient
smbclient est une commande qui permet d'accéder aux ressources partagées par le serveur. Elle est notamment très utile pour tester le bon fonctionnement des partages avec votre serveur Samba.
# smbclient \\\\pingu\\homes -U anne
Password:
Domain=[PINGU] OS=[Unix] Server=[Samba 3.0.2a]
smb: \>
La commande ci-dessus est un accès au répertoire personnel sur le serveur en tant qu'utilisateur anne.
Machines visibles sur le réseau netbios : findsmb
La commande findsmb va vous permettre de lister les machines visibles grâce aux requêtes smb de votre serveur (script effectuant une combinaison de commandes nmblookup et smbclient).
Exemple :
# findsmb
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
---------------------------------------------------------------------
Domain=[LINUXERIES] OS=[Unix] Server=[Samba 3.0.2a]
Domain=[LINUXERIES] OS=[Unix] Server=[Samba 3.0.2a]
192.168.0.3 PINGU +[ LINUXERIES ]
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
192.168.0.100 PLOPLAND-OAAHXLR+[ WORKGROUP ]
Nous pouvons voir ci-dessus 2 machines : PINGU et PLOPLAND-OAAHXLR.
Résoudre les noms netbios : nmblookup
La commande nmblookup permet de résoudre les noms netbios en IP. La commande peut permettre de vérifier le bon fonctionnement de la configuration de votre serveur ou de vos machines clientes.
Exemple :
# nmblookup pingu
192.168.10.52 pingu<00>
Au nom netbios pingu correspond l'adresse IP 192.168.10.52. indique que la machine est simple station de travail.
Lister les connexions au serveur : smbstatus
La commande smbstatus permet de générer une liste des connexions au serveur au moment précis où vous tapez la commande.
# smbstatus
Samba version 3.0.2a
PID Username Group Machine
-------------------------------------------------------------------
6909 lealinux lealinux pingu (192.168.0.3)
6916 bidule bidule pingu (192.168.0.3)
Service pid machine Connected at
-------------------------------------------------------
lealinux 6909 pingu Sun Jun 27 16:50:06 2004
bidule 6916 pingu Sun Jun 27 16:50:20 2004
No locked files
Ci-dessus, on peut voir 2 connexions actives au serveur Samba provenant des utilisateurs lealinux et bidule, effectuées en local.
Exemple de configuration
Pour terminer sur la configuration texte de votre serveur Samba, ci-dessous un exemple type de fichier /etc/samba/smb.conf pour une utilisation courante :
- authentification par utilisateur
- utilisation de cups en tant que serveur d'impression, root étant administrateur
- partage des imprimantes et de leurs drivers
- partage des répertoires maison dont l'accès est réservé à leur propriétaire
- partage public accessible à tous
[global]
# nom de l'espace de travail
workgroup = LINUXERIES
# commentaire sur l'espace de travail
server string = Samba Server %v
# Configuration du partage des ressources d'impression
printcap name = cups
load printers = yes
printing = cups
printer admin = root
# Configuration des logs du serveur
log file = /var/log/samba/log.%m
max log size = 50
# Configuration de l'authentification
# type utilisé
security = user
# mots de passe encryptés - pour permettre de modifier le mot de passe à partir de la machine cliente
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
unix password sync = Yes
pam password change = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Partage des repertoires personnels
[homes]
comment = Home Directories
browseable = no
writable = yes
# Partage des ressources d'impression
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# to allow user 'guest account' to print.
guest ok = yes
writable = no
printable = yes
create mode = 0700
# Partage des drivers d'impression
[print$]
path = /var/lib/samba/printers
browseable = yes
write list = @adm root
guest ok = yes
inherit permissions = yes
# Partage accessible à tous
[public]
path = /home/public
public = yes
only guest = yes
writable = yes
printable = no
Test de votre installation depuis Windows©
Passons maintenant à la phase de test à partir d'un de vos clients Windows. Cliquez sur le voisinage réseau de votre poste Windows.
Schema3 : visualisation des partages sur un poste client Windows
Cliquez ensuite sur le nom du workgroup correspondant au nom de votre serveur Samba. Vous allez alors pouvoir visualiser l'ensemble des partages configurés, à condition que ces ressources soient "browseable" et que vous ayez les droits nécessaires.
Attention tout changement intervenant sur ces ressources peut mettre un certain temps avant mise à jour de l'affichage. Netbios est en effet un protocole extremement bavard et basé sur ce qu'on appelle le broadcast. Il interpelle tout le reseau à des moments déterminés pour la mise à jour des ressources.
Gestion des utilisateurs et des groupes
Cette notion va permettre de sécuriser l'accès aux données. Toute la problématique repose sur la nécessité de disposer de comptes sur le système Linux qui vont correspondre aux utilisateurs sur les machines Windows. On parle aussi de synchronisation de ces deux types de comptes. Il en sera de même pour les groupes.
Les différents types d'utilisateurs Samba
Il existe plusieurs types d'utilisateurs et donc de droits. Nous distinguerons l'administrateur, les utilisateurs et les invités (guest) :
Exemple :
[global]
...
guest account = nobody
...
[monpartage]
comment = mon joli partage
path = /home/public
guest ok = yes
Synchroniser les utilisateurs
Pour synchroniser les utilisateurs Windows / Linux, on utilisera la commande smbpasswd.
Dans un premier temps, on ajoute l'utilisateur au fichier /etc/samba/smbpasswd ainsi que son mot de passe qui sera le même pour Linux et Windows. Pour ce faire, utilisez l'option -a.
Exemple :
# smbpasswd -a anne
New SMB password:
Retype new SMB password:
Added user anne.
Vous pouvez vérifier le contenu de /etc/samba/smbpasswd :
# cat /etc/samba/smbpasswd
anne:500:C4315DF197EED860C2265B23734E0DAC:9C08AB50A2F8864881B0418E3A63B77B:[U ]:LCT-40DC451B:
Renouvelez l'opération pour chaque utilisateur devant accéder au serveur Samba.
Dans le cas de figure ci-dessus, la méthode utilisée implique que l'utilisateur porte le même nom sur les 2 systèmes, anne dans notre cas. Il est toutefois possible de conserver un nom d'utilisateur sur Windows différent. On aura alors recours à un fichier supplémentaire : /etc/samba/smbusers.
Exemple :
# cat /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
anne = leanne
Il est ensuite possible de changer le mot de passe de l'utilisateur, à partir de Windows ou bien du serveur Samba grâce à la commande smbpasswd :
# smbpasswd anne
New SMB password:
Retype new SMB password:
#
Gestion des groupes
Depuis la version 3.x de Samba, les groupes sont maintenant entièrement gérés. Là encore nous allons devoir synchroniser les groupes UNIX et Windows grâce à la commande net :
# net groupmap add unixgroup=nom_unix ntgroup=nom_windows
Ainsi si je dispose d'un groupe utilisateurs sur Linux, et que ce groupe se nomme utilisateurs ordinaires sur Windows, on procédera de la manière suivante :
# net groupmap add unixgroup=utilisateurs ntgroup='utilisateurs ordinaires'
No rid or sid specified, choosing algorithmic mapping Successully added group utilisateurs ordinaires to the mapping db
Pour lister les correspondances existantes :
# net groupmap list
utilisateurs ordinaires (S-1-5-21-567158280-4275195276-2466317430-2001) -> utilisateurs
Pour supprimer une correspondance :
# net groupmap delete ntgroup='utilisateurs ordinaires'
Sucessfully removed utilisateurs ordinaires from the mapping db
Outils graphiques de configuration d'un serveur Samba
Il existe de nombreux outils graphiques qui vont vous permettre de procéder aux mêmes manipulations mais sans utiliser d'éditeur de texte. Les intitulés des actions à réaliser reprennent généralement les mêmes dénominations que les paramètres utilisés dans le fichier smb.conf décrit ci-dessus.
KSambaPlugin
KsambaPlugin est un outil graphique écrit en GTK pour KDE. Il permet de configurer entièrement un serveur Samba. Il s'agit d'un module supplémentaire pour le centre de contrôle de KDE. Il procure également des propriétés supplémentaires à Konqueror, qui lui permettent d'en faire un outil de parcours réseau Samba (voir section suivante de l'article). Pour l'installer :
# urpmi ksambaplugin
Préparation... ##################################################
1:ksambaplugin ##################################################
Pour l'utiliser, allez dans le menu KDE "Système >> Configuration >> Configurez votre bureau". Cliquez alors sur le menu "Réseau >> Configuration de Samba". Passez ensuite en mode superutilisateur. Vous avez alors accès à la configuration de votre serveur Samba sous forme de 5 onglets :
Schema4 : Ksamba - interface de configuration
- configuration de base : c'est la section [global]
- configuration des partages de fichiers : nous retrouvons la section [homes] et tout autre partage de fichiers
- configuration des imprimantes partagées : cet onglet permet la configuration des partages [print$] et [printers]
- configuration des comptes utilisateurs : créer, modifier supprimer des utilisateurs et des groupes tout en assurant la synchronisation
- paramètres de configuration avancée : paramétrage avancé du serveur
Schema5 : Ksamba - configuration des utilisateurs
Module Samba pour Webmin
Webmin est un utilitaire accessible par interface web qui va vous permettre de configurer l'ensemble de votre machine (système et réseau). Il est constitué d'un ensemble de modules dont celui consacré au serveur Samba.
Pour installer Webmin, réutilisons urpmi puis démarrons webmin :
# urpmi webmin
Préparation... ##################################################
1:webmin ##################################################
# service webmin start
Lancement de Webmin [ OK ]
Pour accéder à webmin, tapez dans la barre d'URL de votre navigateur : https://localhost:10000
Authentifiez-vous alors en tant que root avec votre mot de passe. Cliquez sur l'onglet "serveurs" puis "Samba Windows File Sharing"
Schema6 : Webmin - liste des partages du serveur
Vous avez alors décrit rapidement l'ensemble des ressources partagées, avec la possibilité de modifier cette configuration. Comme pour KsambaPlugin, l'ensemble du serveur est paramétrable.
Schema7 : Webmin - menu principal de configuration de samba
Outil graphique de parcours des ressources Samba
Konqueror est maintenant un bon moyen d'accéder à un serveur Samba, il suffit pour cela de taper dans la zone URL smb://user@serveur/ ou smb://user:password@serveur/ pour accéder au serveur "serveur" en tant que "user".
Schema8 : parcours des ressources Samba avec Konqueror
L'utilisation est relativement aisée, il vous suffit de cliquer sur les fichiers et/ou répertoires, comme pour un système de fichiers local.
Gestion des jetons sous DOS pour intégrer une installation administratives de vos clients sous windows 2000 & XP
Complément de Mose
"je suis de l'ancienne école" et j'ai réalisé un petit programme sous DOS à améliorer
existant :
j'ai env. 20Pc en réseaux avec un serveur linux et samba un logon.bat sur le serveur lancé sur chaque stations au logon de celles-ci
Besoins
sous un serveur linux avec samba j'ai procédé à des installations administratives de Ooo pour mes clients windows 2000 et XP uniquement. Mise sous logon.bat avec une commande IF EXIST pour ne pas écraser plusieurs fois les installations précédentes.
le problème c'est que si j'ai par exemple 20 clients qui ce connectent le matin avec une mise à jour de Ooo, je fais ramer mon serveur, ce qui n'est pas acceptable.
je n'ai pas d'argent pour l'achat d'un logiciel de gestion d'installation...
Etude
bridage du nombres d'installation automatique en même temps, j'ai mis au points un algorithme que voici,
Programme
et voilà la partie la plus intéressante le programme proprement dit
echo off
rem Fait par Oc le 3 aout 2006
echo .
echo .
echo Processus de don de jetons pour installation automatique
echo Ne pas fermer cette fenetre merci
echo .
echo .
rem ------------------------------------------------------
echo initialisation des variables
set nbmaxjetons=5
rem Nombre Max d'utilisateurs pouvant lancer l'installation en même temps
set jeton=0
set path_jeton=H:\Log\jetons
rem dossier de stocage des jetons sur mon serveur avec les droits R/W pour tout les utilisateurs
echo .
echo .
rem ------------------------------------------------------
echo demande de jeton pour l'installation
set /a nbmaxjetons=%nbmaxjetons%+1
- debut
set /a jeton=%jeton%+1
echo demande jeton Numéro %jeton%
if "%jeton%"=="%nbmaxjetons%" (goto fin)
if NOT EXIST "%path_jeton%\jeton%jeton%" (echo %USERNAME%,%COMPUTERNAME% >> %path_jeton%\jeton%jeton% >> %path_jeton%\jeton%jeton% & goto suite) ELSE (goto debut)
- suite
rem ------------------------------------------------------
echo Vérification du jeton %jeton%
echo %USERNAME%,%COMPUTERNAME% > %TEMP%\jeton%jeton%
rem ------------------------------------------------------
echo lancement des programmes d'installation administratives
rem pause
rem exemple : if NOT EXIST "%ProgramFiles%\install_log\ooo-202.log" (echo installation de Ooo en cours & echo %date%,%time%,%USERNAME%,%COMPUTERNAME%,installation de Ooo en cours>>%log_path% & start /WAIT H:\autoinstall\client\Standart\openoffice\install-jre-Ooo.bat) ELSE (echo instalation de Ooo n'est pas a faire & echo %date%,%time%,%USERNAME%,%COMPUTERNAME%,instalation de Ooo n'est pas a faire>>%log_path%)
rem exemple : c'est un peut long et j'ai pas mis mes variables d'installation dans cette exemple
rem exemple : mais je lui demande de faire une commande SI, des log de l'installation et de lancer ou pas le fichier « install-jre-Ooo.bat »
echo .
echo .
rem ------------------------------------------------------
echo Liberation du jeton Numero %jeton%
rem del "%path_jeton%\jeton%jeton%"
del "%TEMP%\jeton%jeton%"
- fin
echo fin
les limites de ce programme :
le même jeton pris par 2 PC en même temps « c'est très rare, mais ça peut arriver »
la non libération du jeton via d'un problème de plantage ou intervention d'utilisateurs (j'ai réglé en partie le problème en inscrivant dans le jeton le nom de l'utilisateur et le Nom du PC)
je met ce petit programme dans vos mains sous licences GPL modifiable a volonté mais dans l'esprit du libre
Conclusion
Voilà donc votre serveur Samba fonctionnel. Nous n'avons abordé ici qu'une infime partie des possibilités offertes. Sachez que les dernières versions permettent d'apporter les mêmes fonctionnalités qu'un serveur NT, voire 2000 : contrôleur de domaine (PDC, BDC), serveur de netlogon (authentification centralisée), serveur de résolution de noms netbios (WINS)... Bref de quoi passer de votre configuration personnelle à une véritable architecture d'entreprise !
Quelques adresses utiles
- Le site officiel de Samba
- La documentation officielle de Samba (une mine d'or !) : Samba-HOWTO-Collection sur la section documentation du site
- Le site officiel de cups
Copyright
Copyright © 02/11/2004, Anne
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |
Autres ressources
Sauvegarder les fichiers de travail de samba et restauration en cas de problème
Principe général
Samba stocke ses informations dans des fichiers avec l’extension tdb. Ces fichiers sont stockés à deux endroits :
/var/cache/samba : fichiers de travail
/etc/samba/secrets.tdb : fichier contenant les codes d’accès à samba (SID...).
Une sauvegarde de ces fichiers est effectuée une fois par semaine. Les fichiers sont stockés dans /root/backup/samba/cache/ et /root/backup/samba/etc/. Les fichiers sauvegardés portent l’extension tdb.bak.
Script de sauvegarde
cat backup_samba
mkdir -p /root/backup/samba/cache
cd /root/backup/samba/cache
tdbbackup /var/cache/samba/*.tdb 2>/var/log/errortdb
mv -f /var/cache/samba/*.bak .
mkdir -p /root/backup/samba/etc
cd /root/backup/samba/etc
tdbbackup /etc/samba/secrets.tdb 2>>/var/log/errortdb
mv -f /etc/samba/secrets.tdb.bak .
if [ -s /var/log/errortdb ]; then
mail -s "Echec sauvegarde fichiers tdb sur serveur" root </var/log/errortdb
fi
Des optimisations pourraient être réalisées, notamment en récupérant automatiquement le nom du serveur et en modifiant la boite de destination du mél (en cas d’erreur), en la positionnant sur root (avec redirection dans les paramètres de configuration de postfix).
La sauvegarde est déclenchée une fois par semaine par la ligne suivante, insérée dans le crontab :
00 3 * * 0 /root/backup_samba
Que faire en cas de problème ?
On peut suspecter un problème sur les fichiers samba quand samba ne fonctionne plus tout à fait normalement. Par exemple, sur un serveur d’impression, on n’a plus la possibilité d’installer une imprimante.
Diagnostiquer le problème
Se positionner dans le dossier /var/cache/samba, et lancer la commande :
tdbbackup -v *.tdb
En cas d’erreur, on aura un message du type :
Restoring test.tdb
Résoudre le problème
Si le problème survient sur un fichier winbind, arrêter le service winbind :
service winbind stop
Si le problème survient sur un autre fichier, arrêter le service samba :
service smb stop
Supprimer ensuite le fichier qui ne fonctionne pas :
rm test.tdb
Récupérer la dernière version correcte depuis la sauvegarde :
cp /root/backup/samba/cache/test.tdb.bak test.tdb
Vérifier le fichier :
tdbbackup -v test.tdb
Si tout est ok, redémarrer le service qui a été arrêté :
service winbind start
service smb start