« Samba » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(20 versions intermédiaires par 7 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Category:Partager ses fichiers]]
= Partager ses fichiers et imprimantes avec Samba =
= Partager ses fichiers et imprimantes avec Samba =


<div class="leatitre">Partager ses fichiers et imprimantes avec Samba</div><div class="leapar">Par [mailto:anne at lea-linux point org Anne]</div>
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.


<code># rpm -qa | grep samba
<div class="code">
samba-server-3.0.2a-3mdk
# rpm -qa | grep samba
samba-common-3.0.2a-3mdk
 
samba-client-3.0.2a-3mdk
samba-server-3.0.2a-3mdk
</code>
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) :


<code># urpmi samba
<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 42 : Ligne 44 :
   1:samba-common ##################################################
   1:samba-common ##################################################
   2:samba-server ##################################################
   2:samba-server ##################################################
</code>
</div>


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 !
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 !
Ligne 48 : 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.


<code># urpmi samba-client
<div class="code"># urpmi samba-client
   Préparation... ##################################################
   Préparation... ##################################################
   1:samba-client ##################################################
   1:samba-client ##################################################
</code>
</div>


== Premier test de votre installation ==
== Premier test de votre installation ==
Ligne 57 : Ligne 59 :
Maintenant que Samba est installé, démarrons le serveur :
Maintenant que Samba est installé, démarrons le serveur :


<code># /etc/rc.d/init.d/smb start
<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  ]
</code>
</div>


Deux démons sont lancés, nécessaires au fonctionnement du serveur Samba : smbd et nmbd.
Deux démons sont lancés, nécessaires au fonctionnement du serveur Samba : smbd et nmbd.
Ligne 67 : 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...


<code># /etc/rc.d/init.d/smb status
<div class="code"># /etc/rc.d/init.d/smb status
smbd (pid 970) is running... nmbd (pid 972) is running...
smbd (pid 970) is running... nmbd (pid 972) is running...
</code>
</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 77 : 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 :


<code># chkconfig --list smb
<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
</code>
</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 :


<code># chkconfig --level 345 smb on
<div class="code"># chkconfig --level 345 smb on
</code>
</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 100 : 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 :


<code># urpmi cups cups-drivers
<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 108 : Ligne 110 :
  # service cups start
  # service cups start
  Lancement du service d'impression CUPS :                        [  OK  ]
  Lancement du service d'impression CUPS :                        [  OK  ]
</code>
</div>


Ci-dessous la configuration et la gestion d'une imprimante :
Ci-dessous la configuration et la gestion d'une imprimante :
Ligne 141 : Ligne 143 :
* '''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 ''' : 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 :
* '''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</code>
client code page = 850
:ou <code>character set = UTF-8</code>, selon la locale de votre machine.
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 170 : 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.


<code> [global]
<div class="code"> [global]
  ...
  ...
  # système d'impression utilisé
  # système d'impression utilisé
Ligne 193 : Ligne 198 :
     read only = yes
     read only = yes
     write list = root
     write list = root
</code>
</div>


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.
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.
Ligne 199 : 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 :


<code> # cupsaddsmb -a
<div class="code"> # cupsaddsmb -a
  ...
  ...
  passwd:
  passwd:
  ...
  ...
  #</code>
  #</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 :
* la commande '''smbclient''' va vous lister, entre autres, les imprimantes partagées :
<code> # smbclient -L localhost
<div class="code"> # smbclient -L localhost
  Password:
  Password:
  Anonymous login successful
  Anonymous login successful
Ligne 223 : Ligne 228 :
  Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a]
  Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a]
  ...
  ...
</code>
</div>
* la commande '''rpcclient''' permet, selon l'option choisie, d'énumérer les imprimantes et drivers partagés :
* la commande '''rpcclient''' permet, selon l'option choisie, d'énumérer les imprimantes et drivers partagés :
<code> # rpcclient -d=0 -U root -c 'enumprinters' localhost
<div class="code"> # rpcclient -d=0 -U root -c 'enumprinters' localhost
  Password:
  Password:
         flags:[0x800000]
         flags:[0x800000]
Ligne 252 : Ligne 257 :
  Printer Driver Info 1:
  Printer Driver Info 1:
         Driver Name: [hp4050n]
         Driver Name: [hp4050n]
</code>
</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.
* 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.
<code> # testprns hp4050n
<div class="code"> # testprns hp4050n
  Looking for printer hp4050n in printcap file /etc/printcap
  Looking for printer hp4050n in printcap file /etc/printcap
  Printer name hp4050n is valid.
  Printer name hp4050n is valid.
Ligne 260 : Ligne 265 :
  Looking for printer bidule in printcap file /etc/printcap
  Looking for printer bidule in printcap file /etc/printcap
  Printer name bidule is not valid.  
  Printer name bidule is not valid.  
</code>
</div>


= Commandes utiles =
= Commandes utiles =
Ligne 272 : Ligne 277 :
<u>Exemple :</u>
<u>Exemple :</u>


<code> # mount -t smbfs \\\\pingu\\homes /mnt/samba -o username=anne
<div class="code"> # mount -t smbfs \\\\pingu\\homes /mnt/samba -o username=anne
</code>
</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.


<code> # umount /mnt/samba
<div class="code"> # umount /mnt/samba
</code>
</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 284 : Ligne 289 :
<u>Exemple :</u>
<u>Exemple :</u>


<code> $ smbmount \\\\pingu\\homes /home/anne/samba
<div class="code"> $ smbmount \\\\pingu\\homes /home/anne/samba
</code>
</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.


<code> $ smbumount home/anne/samba
<div class="code"> $ smbumount home/anne/samba
</code>
</div>


== Tester la syntaxe de smb.conf : testparm ==
== Tester la syntaxe de smb.conf : testparm ==
Ligne 298 : Ligne 303 :
Testons la validité de notre fichier de configuration :
Testons la validité de notre fichier de configuration :


<code> # testparm
<div class="code"> # testparm
  Load smb config files from /etc/samba/smb.conf
  Load smb config files from /etc/samba/smb.conf
  Processing section "[homes]"
  Processing section "[homes]"
Ligne 306 : Ligne 311 :
  Server role: ROLE_STANDALONE
  Server role: ROLE_STANDALONE
  Press enter to see a dump of your service definitions
  Press enter to see a dump of your service definitions
</code>
</div>


== Parcourir le réseau : smbclient ==
== Parcourir le réseau : smbclient ==
Ligne 312 : 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.


<code> # smbclient \\\\pingu\\homes -U anne
<div class="code"> # smbclient \\\\pingu\\homes -U anne
  Password:  
  Password:  
  Domain=[PINGU] OS=[Unix] Server=[Samba 3.0.2a]  
  Domain=[PINGU] OS=[Unix] Server=[Samba 3.0.2a]  
  smb: \>
  smb: \>
</code>
</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 326 : Ligne 331 :
<u>Exemple :</u>
<u>Exemple :</u>


<code> # findsmb
<div class="code"> # findsmb


  IP ADDR        NETBIOS NAME  WORKGROUP/OS/VERSION
  IP ADDR        NETBIOS NAME  WORKGROUP/OS/VERSION
Ligne 336 : Ligne 341 :
  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    ]
</code>
</div>


Nous pouvons voir ci-dessus 2 machines : PINGU et PLOPLAND-OAAHXLR.
Nous pouvons voir ci-dessus 2 machines : PINGU et PLOPLAND-OAAHXLR.
Ligne 346 : Ligne 351 :
<u>Exemple :</u>
<u>Exemple :</u>


<code># nmblookup pingu
<div class="code"># nmblookup pingu
  192.168.10.52 pingu<00>
  192.168.10.52 pingu<00>
</code>
</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 356 : 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.


<code># smbstatus
<div class="code"># smbstatus


  Samba version 3.0.2a
  Samba version 3.0.2a
Ligne 369 : Ligne 374 :
  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
</code>
</div>


Ci-dessus, on peut voir 2 connexions actives au serveur Samba provenant des utilisateurs lealinux et bidule, effectuées en local.
Ci-dessus, on peut voir 2 connexions actives au serveur Samba provenant des utilisateurs lealinux et bidule, effectuées en local.
Ligne 383 : Ligne 388 :
* partage public accessible à tous
* partage public accessible à tous


<code> [global]
<div class="code"> [global]
   # nom de l'espace de travail
   # nom de l'espace de travail
     workgroup = LINUXERIES
     workgroup = LINUXERIES
Ligne 438 : Ligne 443 :
     writable = yes
     writable = yes
     printable = no  
     printable = no  
</code>
</div>


= Test de votre installation depuis Windows© =
= Test de votre installation depuis Windows© =
Ligne 454 : 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 synchronisationde ces deux types de comptes. Il en s era de même pour les 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 ==
== Les différents types d'utilisateurs Samba ==
Ligne 462 : Ligne 467 :
<u> Exemple :</u>
<u> Exemple :</u>


<code> [global]
<div class="code"> [global]
     ...
     ...
     guest account = nobody
     guest account = nobody
Ligne 470 : Ligne 475 :
     path = /home/public
     path = /home/public
     guest ok = yes
     guest ok = yes
</code>
</div>


== Synchroniser les utilisateurs ==
== Synchroniser les utilisateurs ==
Ligne 480 : 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 :


<code># cat /etc/samba/smbpasswd
<div class="code"># cat /etc/samba/smbpasswd
  anne:500:C4315DF197EED860C2265B23734E0DAC:9C08AB50A2F8864881B0418E3A63B77B:[U ]:LCT-40DC451B:
  anne:500:C4315DF197EED860C2265B23734E0DAC:9C08AB50A2F8864881B0418E3A63B77B:[U ]:LCT-40DC451B:
</code>
</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 494 : Ligne 503 :
<u>Exemple :</u>
<u>Exemple :</u>


<code> # cat /etc/samba/smbusers
<div class="code"> # cat /etc/samba/smbusers
  # Unix_name = SMB_name1 SMB_name2 ...
  # Unix_name = SMB_name1 SMB_name2 ...
  root = administrator admin
  root = administrator admin
  anne = leanne
  anne = leanne
</code>
</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 :


<code> # smbpasswd anne
<div class="code"> # smbpasswd anne
  New SMB password:
  New SMB password:
  Retype new SMB password:
  Retype new SMB password:
  #  
  #  
</code>
</div>


== Gestion des groupes ==
== Gestion des groupes ==
Ligne 512 : 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 :


<code># net groupmap add unixgroup=nom_unix ntgroup=nom_windows
<div class="code"># net groupmap add unixgroup=nom_unix ntgroup=nom_windows
</code>
</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 :


<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
  No rid or sid specified, choosing algorithmic mapping Successully added group utilisateurs ordinaires to the mapping db
</code>
</div>


Pour lister les correspondances existantes :
Pour lister les correspondances existantes :


<code> # net groupmap list
<div class="code"> # net groupmap list
  utilisateurs ordinaires (S-1-5-21-567158280-4275195276-2466317430-2001) -> utilisateurs
  utilisateurs ordinaires (S-1-5-21-567158280-4275195276-2466317430-2001) -> utilisateurs
</code>
</div>


Pour supprimer une correspondance :
Pour supprimer une correspondance :


<code> # net groupmap delete ntgroup='utilisateurs ordinaires'
<div class="code"> # net groupmap delete ntgroup='utilisateurs ordinaires'
  Sucessfully removed utilisateurs ordinaires from the mapping db
  Sucessfully removed utilisateurs ordinaires from the mapping db
</code>
</div>


= Outils graphiques de configuration d'un serveur Samba =
= Outils graphiques de configuration d'un serveur Samba =
Ligne 541 : 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 :


<code> # urpmi ksambaplugin  
<div class="code"> # urpmi ksambaplugin  
  Préparation... ##################################################
  Préparation... ##################################################
   1:ksambaplugin ##################################################
   1:ksambaplugin ##################################################
</code>
</div>


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 :
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 :
Ligne 568 : Ligne 577 :
Pour installer Webmin, réutilisons urpmi puis démarrons webmin :
Pour installer Webmin, réutilisons urpmi puis démarrons webmin :


<code> # urpmi webmin
<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  ]
</code>
</div>


Pour accéder à webmin, tapez dans la barre d'URL de votre navigateur : https://localhost:10000<br /> Authentifiez-vous alors en tant que root avec votre mot de passe. Cliquez sur l'onglet "serveurs" puis "Samba Windows File Sharing"
Pour accéder à webmin, tapez dans la barre d'URL de votre navigateur : https://localhost:10000<br /> Authentifiez-vous alors en tant que root avec votre mot de passe. Cliquez sur l'onglet "serveurs" puis "Samba Windows File Sharing"
Ligne 598 : 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 609 : Ligne 703 :
* [http://cups.org Le site officiel de cups ]
* [http://cups.org Le site officiel de cups ]


<div class="merci">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.</div>
=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 ==


= Copyright =
== Principe général ==
Copyright &copy; 02/11/2004, Anne
{{CC-BY-NC-SA}}




=Autres ressources=
Samba stocke ses informations dans des fichiers avec l’extension tdb. Ces fichiers sont stockés à deux endroits :
* [http://oreilly.com/catalog/samba/ Le livre O'Reilly]
 
* [http://www.linux-france.org/~eprigent/samba Une série de PDF] (ces fichiers semblent indisponible pour l'instant ...)
/var/cache/samba : fichiers de travail
* [[Reseau-partfic-samba nt auth|Utiliser la base d'utilisateur d'un CPD (ou PDC) NT]].
 
/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.

# 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

Remarque : l'idée n'est pas ici de décourager l'utilisation de tels outils. Mais ceux-ci proposent l'accès relativement simple à des paramétrages avancés de Samba. Mal maîtrisés, vous pouvez rapidement mettre votre serveur hors d'usage. Alors attention aux clics intempestifs et gardez un oeil sur la configuration texte.

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

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



@ Retour à la rubrique Réseau

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

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 4.0 :
https://creativecommons.org/licenses/by-sa/4.0/