« Samba » : différence entre les versions
m (→Section de configuration générale : + UTF-8) |
Aucun résumé des modifications |
||
(24 versions intermédiaires par 9 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
= Partager ses fichiers et imprimantes avec Samba = | = Partager ses fichiers et imprimantes avec Samba = | ||
par [[Utilisateur:Ennael|Anne]] | |||
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. | 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. | ||
Ligne 22 : | Ligne 21 : | ||
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. | 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. | ||
<div class="code"> | <div class="code"> | ||
# rpm -qa | grep samba | |||
samba-server-3.0.2a-3mdk | |||
samba-common-3.0.2a-3mdk | |||
samba-client-3.0.2a-3mdk | |||
</div> | |||
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) : | 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) : | ||
<div class="code"> | <div class="code"> | ||
# urpmi samba | |||
Un des paquetages suivants est nécessaire : | Un des paquetages suivants est nécessaire : | ||
1- samba-server-3.0.2a-3mdk.i586 | 1- samba-server-3.0.2a-3mdk.i586 | ||
Ligne 39 : | Ligne 43 : | ||
Préparation... ################################################## | Préparation... ################################################## | ||
1:samba-common ################################################## | 1:samba-common ################################################## | ||
2:samba-server ################################################## | 2:samba-server ################################################## | ||
</div> | </div> | ||
Ligne 47 : | Ligne 50 : | ||
Nous allons également installer la partie cliente. Elle contient tous les outils qui permettent notamment le montage et le parcours des ressources Samba. | Nous allons également installer la partie cliente. Elle contient tous les outils qui permettent notamment le montage et le parcours des ressources Samba. | ||
<div class="code" | <div class="code"># urpmi samba-client | ||
Préparation... ################################################## | Préparation... ################################################## | ||
1:samba-client ################################################## | 1:samba-client ################################################## | ||
</div> | </div> | ||
Ligne 59 : | Ligne 59 : | ||
Maintenant que Samba est installé, démarrons le serveur : | Maintenant que Samba est installé, démarrons le serveur : | ||
<div class="code" | <div class="code"># /etc/rc.d/init.d/smb start | ||
Lancement du service SaMBa : [ OK ] | Lancement du service SaMBa : [ OK ] | ||
Lancement du service NMB : [ OK ] | Lancement du service NMB : [ OK ] | ||
</div> | </div> | ||
Ligne 72 : | Ligne 69 : | ||
* nmbd permet quant à lui le parcours du réseau et la résolution de noms Netbios... | * nmbd permet quant à lui le parcours du réseau et la résolution de noms Netbios... | ||
<div class="code" | <div class="code"># /etc/rc.d/init.d/smb status | ||
smbd (pid 970) is running... nmbd (pid 972) is running... | |||
</div> | |||
La commande ci-dessus permet de vérifier que Samba fonctionne correctement. Vous devez voir apparaitre les deux dernières lignes. | La commande ci-dessus permet de vérifier que Samba fonctionne correctement. Vous devez voir apparaitre les deux dernières lignes. | ||
Ligne 80 : | Ligne 79 : | ||
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 : | 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 : | ||
<div class="code" | <div class="code"># 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 | |||
smb 0:Arrêt 1:Arrêt 2:Arrêt 3:Arrêt 4:Arrêt 5:Arrêt 6:Arrêt | |||
</div> | </div> | ||
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 : | 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 : | ||
<div class="code" | <div class="code"># chkconfig --level 345 smb on | ||
</div> | |||
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. | 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. | ||
Ligne 105 : | Ligne 102 : | ||
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 : | 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 : | ||
<div class="code" | <div class="code"># urpmi cups cups-drivers | ||
installation de /var/cache/urpmi/rpms/cups-1.1.20-5mdk.i586.rpm | installation de /var/cache/urpmi/rpms/cups-1.1.20-5mdk.i586.rpm | ||
/var/cache/urpmi/rpms/cups-drivers-1.1-133mdk.i586.rpm | /var/cache/urpmi/rpms/cups-drivers-1.1-133mdk.i586.rpm | ||
Ligne 114 : | Ligne 109 : | ||
2:cups-drivers ################################################## | 2:cups-drivers ################################################## | ||
# service cups start | # service cups start | ||
Lancement du service d'impression CUPS : [ OK ] | Lancement du service d'impression CUPS : [ OK ] | ||
</div> | </div> | ||
Ligne 139 : | Ligne 133 : | ||
* '''workgroup''' : nom du groupe de travail ou du domaine | * '''workgroup''' : nom du groupe de travail ou du domaine | ||
* '''netbios name ''' | * '''netbios name ''' : nom netbios du serveur Samba, par défaut égal au nom de la machine (hostname) | ||
* '''server string ''' | * '''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). | * '''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) | * '''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) ''' | * '''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 : | * '''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é. | ** '''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) | ** '''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. <br /> 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.<br /> 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. | * '''encrypt passwords / unix password sync / passwd program / passwd chat ''' : configuration des mots de passe. On aura recours aux mots de passes encryptés. <br /> 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.<br /> 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 ''' | * '''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 : | ||
<code>client code page = 850 | <div class="code"> | ||
character set = ISO8859-1</ | client code page = 850 | ||
:ou <code>character set = UTF-8</ | character set = ISO8859-1</div> | ||
:ou | |||
<div class="code"> | |||
character set = UTF-8</div>, selon la locale de votre machine. | |||
== Section de configuration des partages de fichiers == | == Section de configuration des partages de fichiers == | ||
Ligne 178 : | Ligne 175 : | ||
Vous pouvez décider de partager uniquement la ressource ou bien les drivers et la ressource. | Vous pouvez décider de partager uniquement la ressource ou bien les drivers et la ressource. | ||
<div class="code" | <div class="code"> [global] | ||
... | ... | ||
# système d'impression utilisé | # système d'impression utilisé | ||
Ligne 202 : | Ligne 197 : | ||
browseable = yes | browseable = yes | ||
read only = yes | read only = yes | ||
write list = root | write list = root | ||
</div> | </div> | ||
Ligne 210 : | Ligne 204 : | ||
Nous allons ensuite procéder à la création effective du partage des imprimantes cups par Samba grâce à la commande cupsaddsmb : | Nous allons ensuite procéder à la création effective du partage des imprimantes cups par Samba grâce à la commande cupsaddsmb : | ||
<div class="code" | <div class="code"> # cupsaddsmb -a | ||
... | |||
passwd: | |||
... | |||
#</div> | |||
Pour vérifier que le lien a bien été réalisé, vous avez plusieurs possibilités. | 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 : <div class="code" | * la commande '''smbclient''' va vous lister, entre autres, les imprimantes partagées : | ||
<div class="code"> # smbclient -L localhost | |||
Password: | Password: | ||
Anonymous login successful | Anonymous login successful | ||
Ligne 229 : | Ligne 227 : | ||
Anonymous login successful | Anonymous login successful | ||
Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a] | Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a] | ||
... | ... | ||
</div> | </div> | ||
* la commande '''rpcclient''' permet, selon l'option choisie, d'énumérer les imprimantes et drivers partagés : <div class="code" | * la commande '''rpcclient''' permet, selon l'option choisie, d'énumérer les imprimantes et drivers partagés : | ||
<div class="code"> # rpcclient -d=0 -U root -c 'enumprinters' localhost | |||
Password: | Password: | ||
flags:[0x800000] | flags:[0x800000] | ||
Ligne 258 : | Ligne 256 : | ||
Driver Name: [hplaser4000] | Driver Name: [hplaser4000] | ||
Printer Driver Info 1: | Printer Driver Info 1: | ||
Driver Name: [hp4050n]</ | Driver Name: [hp4050n] | ||
</div> | |||
* 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. | |||
<div class="code"> # 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. | |||
</div> | </div> | ||
= Commandes utiles = | = Commandes utiles = | ||
Ligne 272 : | Ligne 277 : | ||
<u>Exemple :</u> | <u>Exemple :</u> | ||
<div class="code" | <div class="code"> # mount -t smbfs \\\\pingu\\homes /mnt/samba -o username=anne | ||
</div> | |||
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. | 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. | ||
<div class="code" | <div class="code"> # umount /mnt/samba | ||
</div> | |||
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.. | 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.. | ||
Ligne 282 : | Ligne 289 : | ||
<u>Exemple :</u> | <u>Exemple :</u> | ||
<div class="code">$ smbmount \\\\pingu\\homes /home/anne/samba</div> | <div class="code"> $ smbmount \\\\pingu\\homes /home/anne/samba | ||
</div> | |||
Le système de fichiers sera démonté toujours en utilisateur grâce à la commande smbumount. | Le système de fichiers sera démonté toujours en utilisateur grâce à la commande smbumount. | ||
<div class="code">$ smbumount home/anne/samba</div> | <div class="code"> $ smbumount home/anne/samba | ||
</div> | |||
== Tester la syntaxe de smb.conf : testparm == | == Tester la syntaxe de smb.conf : testparm == | ||
Ligne 294 : | Ligne 303 : | ||
Testons la validité de notre fichier de configuration : | Testons la validité de notre fichier de configuration : | ||
<div class="code" | <div class="code"> # 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 | |||
</div> | |||
== Parcourir le réseau : smbclient == | == Parcourir le réseau : smbclient == | ||
Ligne 300 : | Ligne 317 : | ||
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 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. | ||
<div class="code" | <div class="code"> # smbclient \\\\pingu\\homes -U anne | ||
Password: | |||
Domain=[PINGU] OS=[Unix] Server=[Samba 3.0.2a] | |||
smb: \> | |||
</div> | |||
La commande ci-dessus est un accès au répertoire personnel sur le serveur en tant qu'utilisateur anne. | La commande ci-dessus est un accès au répertoire personnel sur le serveur en tant qu'utilisateur anne. | ||
Ligne 310 : | Ligne 331 : | ||
<u>Exemple :</u> | <u>Exemple :</u> | ||
<div class="code" | <div class="code"> # findsmb | ||
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION | IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION | ||
Ligne 321 : | Ligne 340 : | ||
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager] | Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager] | ||
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 ] | 192.168.0.100 PLOPLAND-OAAHXLR+[ WORKGROUP ] | ||
</div> | </div> | ||
Ligne 333 : | Ligne 351 : | ||
<u>Exemple :</u> | <u>Exemple :</u> | ||
<div class="code" | <div class="code"># nmblookup pingu | ||
192.168.10.52 pingu<00> | |||
</div> | |||
Au nom netbios pingu correspond l'adresse IP 192.168.10.52. indique que la machine est simple station de travail. | Au nom netbios pingu correspond l'adresse IP 192.168.10.52. indique que la machine est simple station de travail. | ||
Ligne 341 : | Ligne 361 : | ||
La commande smbstatus permet de générer une liste des connexions au serveur au moment précis où vous tapez la commande. | La commande smbstatus permet de générer une liste des connexions au serveur au moment précis où vous tapez la commande. | ||
<div class="code" | <div class="code"># smbstatus | ||
Samba version 3.0.2a | Samba version 3.0.2a | ||
Ligne 355 : | Ligne 373 : | ||
lealinux 6909 pingu Sun Jun 27 16:50:06 2004 | lealinux 6909 pingu Sun Jun 27 16:50:06 2004 | ||
bidule 6916 pingu Sun Jun 27 16:50:20 2004 | bidule 6916 pingu Sun Jun 27 16:50:20 2004 | ||
No locked files | No locked files | ||
</div> | </div> | ||
Ligne 371 : | Ligne 388 : | ||
* partage public accessible à tous | * partage public accessible à tous | ||
<div class="code"> | <div class="code"> [global] | ||
# nom de l'espace de travail | |||
workgroup = LINUXERIES | |||
# nom de l'espace de travail | # commentaire sur l'espace de travail | ||
# commentaire sur l'espace de travail | server string = Samba Server %v | ||
# Configuration du partage des ressources d'impression | # Configuration du partage des ressources d'impression | ||
printcap name = cups | printcap name = cups | ||
Ligne 392 : | Ligne 409 : | ||
unix password sync = Yes | unix password sync = Yes | ||
pam password change = yes | pam password change = yes | ||
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 | |||
# Partage des repertoires personnels | # Partage des repertoires personnels | ||
[homes] | [homes] | ||
comment = Home Directories | |||
browseable = no | |||
writable = yes | |||
# Partage des ressources d'impression | # Partage des ressources d'impression | ||
[printers] | [printers] | ||
comment = All Printers | |||
path = /var/spool/samba | |||
browseable = no | |||
# to allow user 'guest account' to print. | # to allow user 'guest account' to print. | ||
guest ok = yes | guest ok = yes | ||
Ligne 412 : | Ligne 429 : | ||
# Partage des drivers d'impression | # Partage des drivers d'impression | ||
[print$] | |||
path = /var/lib/samba/printers | path = /var/lib/samba/printers | ||
browseable = yes | browseable = yes | ||
Ligne 420 : | Ligne 437 : | ||
# Partage accessible à tous | # Partage accessible à tous | ||
[public] | |||
path = /home/public | path = /home/public | ||
public = yes | public = yes | ||
Ligne 426 : | Ligne 443 : | ||
writable = yes | writable = yes | ||
printable = no | printable = no | ||
</div> | </div> | ||
Ligne 443 : | Ligne 459 : | ||
= Gestion des utilisateurs et des groupes = | = 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 | 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 == | == Les différents types d'utilisateurs Samba == | ||
Ligne 451 : | Ligne 467 : | ||
<u> Exemple :</u> | <u> Exemple :</u> | ||
<div class="code"> | <div class="code"> [global] | ||
... | ... | ||
guest account = nobody | guest account = nobody | ||
Ligne 461 : | Ligne 475 : | ||
path = /home/public | path = /home/public | ||
guest ok = yes | guest ok = yes | ||
</div> | </div> | ||
Ligne 472 : | Ligne 485 : | ||
<u>Exemple :</u> | <u>Exemple :</u> | ||
# smbpasswd-a anne New SMB password: Retype new SMB password: Added user anne. | <div class="code"># smbpasswd -a anne | ||
New SMB password: | |||
Retype new SMB password: | |||
Added user anne. | |||
</div> | |||
Vous pouvez vérifier le contenu de /etc/samba/smbpasswd : | Vous pouvez vérifier le contenu de /etc/samba/smbpasswd : | ||
<div class="code" | <div class="code"># cat /etc/samba/smbpasswd | ||
anne:500:C4315DF197EED860C2265B23734E0DAC:9C08AB50A2F8864881B0418E3A63B77B:[U ]:LCT-40DC451B: | |||
</div> | |||
Renouvelez l'opération pour chaque utilisateur devant accéder au serveur Samba. | Renouvelez l'opération pour chaque utilisateur devant accéder au serveur Samba. | ||
Ligne 484 : | Ligne 503 : | ||
<u>Exemple :</u> | <u>Exemple :</u> | ||
<div class="code"> # cat /etc/samba/smbusers | <div class="code"> # cat /etc/samba/smbusers | ||
# Unix_name = SMB_name1 SMB_name2 ... | |||
root = administrator admin | |||
anne = leanne | |||
</div> | |||
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 : | 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 : | ||
<div class="code"> # smbpasswd anne | <div class="code"> # smbpasswd anne | ||
New SMB password: | |||
Retype new SMB password: | |||
# | |||
</div> | |||
== Gestion des groupes == | == Gestion des groupes == | ||
Ligne 494 : | Ligne 521 : | ||
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 : | 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 : | ||
<div class="code" | <div class="code"># net groupmap add unixgroup=nom_unix ntgroup=nom_windows | ||
</div> | |||
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 : | 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 : | ||
<div class="code"> # net groupmap add unixgroup=utilisateurs ntgroup='utilisateurs ordinaires' | <div class="code"> # 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 | |||
</div> | |||
Pour lister les correspondances existantes : | Pour lister les correspondances existantes : | ||
<div class="code"> # net groupmap list | <div class="code"> # net groupmap list | ||
utilisateurs ordinaires (S-1-5-21-567158280-4275195276-2466317430-2001) -> utilisateurs | |||
</div> | |||
Pour supprimer une correspondance : | Pour supprimer une correspondance : | ||
<div class="code"> # net groupmap delete ntgroup='utilisateurs ordinaires' | <div class="code"> # net groupmap delete ntgroup='utilisateurs ordinaires' | ||
Sucessfully removed utilisateurs ordinaires from the mapping db | |||
</div> | |||
= Outils graphiques de configuration d'un serveur Samba = | = Outils graphiques de configuration d'un serveur Samba = | ||
Ligne 516 : | Ligne 550 : | ||
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 : | 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 : | ||
<div class="code" | <div class="code"> # urpmi ksambaplugin | ||
Préparation... ################################################## | Préparation... ################################################## | ||
1:ksambaplugin ################################################## | 1:ksambaplugin ################################################## | ||
</div> | </div> | ||
Ligne 546 : | Ligne 577 : | ||
Pour installer Webmin, réutilisons urpmi puis démarrons webmin : | Pour installer Webmin, réutilisons urpmi puis démarrons webmin : | ||
<div class="code" | <div class="code"> # urpmi webmin | ||
Préparation... ################################################## | Préparation... ################################################## | ||
1:webmin ################################################## | 1:webmin ################################################## | ||
# service webmin start | # service webmin start | ||
Lancement de Webmin [ OK ] | Lancement de Webmin [ OK ] | ||
</div> | </div> | ||
Ligne 579 : | Ligne 607 : | ||
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. | 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, | |||
[[Image:samba-dia01ci3.jpg]] | |||
[[Image:samba-dia02ok2.jpg]] | |||
==Programme== | |||
et voilà la partie la plus intéressante le programme proprement dit | |||
<div class="code">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</div> | |||
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 = | = Conclusion = | ||
Ligne 590 : | Ligne 703 : | ||
* [http://cups.org Le site officiel de cups ] | * [http://cups.org Le site officiel de cups ] | ||
<div class=" | =Autres ressources= | ||
* [http://oreilly.com/catalog/samba/ Le livre O'Reilly] | |||
* [http://www.linux-france.org/~eprigent/ Une série de PDF] | |||
* [[Reseau-partfic-samba nt auth|Utiliser la base d'utilisateur d'un CPD (ou PDC) NT]]. | |||
== 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''' | |||
<div class="code">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</div> | |||
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 : | |||
<div class="code"> 00 3 * * 0 /root/backup_samba</div> | |||
==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 : | |||
<div class="code">tdbbackup -v *.tdb</div> | |||
En cas d’erreur, on aura un message du type : | |||
<div class="code">Restoring test.tdb</div> | |||
== Résoudre le problème == | |||
Si le problème survient sur un fichier winbind, arrêter le service winbind : | |||
= | <div class="code">service winbind stop</div> | ||
Si le problème survient sur un autre fichier, arrêter le service samba : | |||
<div class="code">service smb stop</div> | |||
Supprimer ensuite le fichier qui ne fonctionne pas : | |||
<div class="code">rm test.tdb</div> | |||
Récupérer la dernière version correcte depuis la sauvegarde : | |||
<div class="code">cp /root/backup/samba/cache/test.tdb.bak test.tdb</div> | |||
Vérifier le fichier : | |||
<div class="code">tdbbackup -v test.tdb</div> | |||
Si tout est ok, redémarrer le service qui a été arrêté : | |||
<div class="code">service winbind start | |||
service smb start</div> | |||
<br/> | |||
<br/> | |||
'''<b>[[Réseau|@ Retour à la rubrique Réseau]]</b>''' | |||
<br/> | |||
Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 02/11/2004. | |||
{{Copy|02/11/2004|[[Utilisateur:Ennael|Anne Nicolas]]|CC-BY-SA}} | |||
[[Catégorie:Réseau]] |
Dernière version du 16 décembre 2023 à 16:48
Partager ses fichiers et imprimantes avec Samba
par Anne
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.
Préparation... ################################################## 1:samba-client ##################################################
Premier test de votre installation
Maintenant que Samba est installé, démarrons le serveur :
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...
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 :
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 :
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 :
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 = 850character set = ISO8859-1
:ou
, 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.
... # 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 :
... 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 :
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 :
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.
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 :
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.
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 :
Le système de fichiers sera démonté toujours en utilisateur grâce à la commande smbumount.
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 :
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.
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 :
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 :
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.
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
# 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 :
... 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 :
New SMB password: Retype new SMB password: Added user anne.
Vous pouvez vérifier le contenu de /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 :
# 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 :
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 :
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 :
No rid or sid specified, choosing algorithmic mapping Successully added group utilisateurs ordinaires to the mapping db
Pour lister les correspondances existantes :
utilisateurs ordinaires (S-1-5-21-567158280-4275195276-2466317430-2001) -> utilisateurs
Pour supprimer une correspondance :
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 :
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 :
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
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
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
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
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
fiDes 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 :
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 :
En cas d’erreur, on aura un message du type :
Résoudre le problème
Si le problème survient sur un fichier winbind, arrêter le service winbind :
Si le problème survient sur un autre fichier, arrêter le service samba :
Supprimer ensuite le fichier qui ne fonctionne pas :
Récupérer la dernière version correcte depuis la sauvegarde :
Vérifier le fichier :
Si tout est ok, redémarrer le service qui a été arrêté :
Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 02/11/2004.
Copyright
© 02/11/2004 Anne Nicolas
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 4.0 : https://creativecommons.org/licenses/by-sa/4.0/ |