LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


samba_partagexp

SaMBa : Partage de Fichiers entre XP & Linux

Pour faire l'échange de fichiers entre deux OS comme Linux et Windows, le meilleur moyen est d'utiliser le protocol SMB -Server Message Block-. http://fr.wikipedia.org/wiki/Protocole_SMB

Le programme sous Linux qui gère cela s'appelle « SaMBa ». http://fr.wikipedia.org/wiki/Samba_(informatique)

Sous windows aucun programme n'est nécessaire car celui-ci utilise le protocol SMB pour faire l'échange de fichiers entre les machines du réseaux.

Nous avons donc besoin premièrement d'un réseau local en état de marche. Pour cela il faut un minimum de connaissance et il existe de nombreux sites pour expliquer comme faire un réseau local.

Je vous renvoie sur http://olivieraj.free.fr/fr/linux/information/firewall/fw-01.html qui est une mine de renseignements … et super facile à lire (merci à Offworld pour le site).

Commencer à faire un ping entre les 2 machines pour voir si elles répondent.

Normallement SaMBa est déjà installé sur l'OpenSuSE - Sinon vous l'installez via YAST.

Installez:

 samba / samba-client / samba-doc / kdebase3-samba / yast2-samba-client / yast2-samba-server

SaMBa va travailler avec le NetBIOS. http://fr.wikipedia.org/wiki/Netbios

Si votre adresse IP est fixe (pas via DHCP) Windows XP désactive le NETBIOS over TCP/IP - il faut le réactiver dans [Local Area Connection - (Vérifier bien que File and Printer Sharing est bien coché) - Internet Protocol TCP/IP properties - Advanced - WINS et Activé Enable Netbios over TCP/IP] - Normalement cela devrait marcher sans.

SaMBa peut faire beaucoup de chose: Partager des dossiers, des DFS, s’autentifier comme client dans un domaine Windows, être WINS server. Le support dans SaMBa 3.X est limité en tant que CLIENT dans un domaine de type Active Directory - Mais peut travaillé comme “Windows 2000 serveur” en mode PDC emulation-

On va travailler le plus souvent directement en lignes de commande – Pourquoi ?

  • Premièrement, lorsque l'on ouvre le panneau de configuration de KDE/Internet & réseaux/Samba on est trés vite perdu.
  • Deuxièmement, tout le monde n'est pas sur KDE et ne peut donc pas profiter du panneau de configuration.
  • Troisièmement, lorsque l'on créer un file-server d'habitude on n'a pas besoin d'un environnement graphique.
  • Quatrièmement, vous verrez c'est simple il suffit de connaître quelques commandes.
  • Cinquèmement, comparez le fichier de configuration créé par KDE/control center et un fichier créé soi-même, vous verrez la différence.
  • Sixièmement, simplement comprendre ce que l'on fait… et pas clicker partout en espérant que cela marche.
  • Septièmement…

Bref je ne suis pas un fan de la ligne de commande mais pour certaines choses, il faut savoir relever ses manches.

Comment partager des fichiers sur un PC de type Windows XP ? (Serveur XP – Client Linux)

On veut donc partager des répertoires sur un ordinateur de type Windows XP (le serveur) et ce depuis un ordinateur de type Linux (le client).

C'est assez simple mais pour cela il faut savoir quelques trucs essentiels dont LA chose a connaître se sont les partages sous Windows… -au début opter pour le partage de fichiers simple-

http://www.commentcamarche.net/contents/configuration-reseau/partage-fichiers.php3

Lorsque vous avez partagé le dossier il suffit de lancer le client SaMBa sur votre client - (pour rappel votre PC Linux)

          ~> su -
          Password:
          ~# rcnmb start

Pour voir les différents dossiers partagés vous allez dans konqueror et vous tapez smb:

Vous voyez les dossiers ? OUI alors c’est tout.

Cela ne marche pas ? Essayé avec l'adresse IP - dans konqueror — smb:\\ip_de_votre_Server_XP

Là suivant votre configuration de votre Windows XP il peut vous demander un mot de passe (Pro/Familliale/SP2…) –

C'est toujours bon de créer un compte-local 'samba' sur votre Windows XP. Vous pouvez donner les permissions NTFS et Shared à ce compte.

Si ne voyez toujours pas les dossiers d'habitude le principale problème vient du Firewall de XP et/ou de Linux.

La première chose a tester est de couper l'ensemble des firewalls sur les 2 machines (Client & Seveur) pour voir si vous arrivez à voir les fichiers… No stress on va les réactiver par la suite.

J'ai fait le test chez moi avec 2 PCs relié via un modem adsl/routeur de type NetGear GT834 – Linux SuSE et un Windows XP Pro SP2

Paramétrage du FIREWALL XP (Sygate)

On ne va pas Troller pour Troller - Je sais bien que mettre un FireWall sur chaques PCs ne sert a rien – un bon sur l'accés au net est suffissant – mais apparement la plupart des gens ne l'on pas encore compris. Windows vous emmerde tout le temps si vous n'en avez pas et cela permet de voir quels logiciels essayent d'envoyer de infos sur le net.

Les plus gros problèmes viennent du Firewall que vous avez mis sur Windows XP.

Comme SaMBa utilise le NetBios, les ports 137,138,139,445,901 (si vous utilis11ez SWAT) doivent être ouvert

J'ai pris les log de mon Firewall de Windows :

Sygate - que je conseille a tous - il n'est plus en développement mais est toujours gratuit – mais de plus en plus difficile à trouver.

Je vous les montre pour comprendre un peu ce qu'il se passe Lorsque l'on fait un ” smb:/ ” dans Konqueror on obtient cela :

1°) 23/06/2006 20:01:28 Allowed Incoming UDP 10.0.0.5 00-0A-E6-1F-95-CA 10.0.0.255 FF-FF-FF-FF-FF-FF 137 C:\WINDOWS\system32\DRIVERS\ndisuio.sys

Broadcast (le 10.0.0.255)sur le port 137 - pour l'accepter dans Sygate [Tools - Options - Network Neighborhood - choisir sa carte ethernet et cochez Allow other to share my file and printer]

2°) 23/06/2006 20:01:28 Allowed Incoming UDP 10.0.0.5 00-0A-E6-1F-94-CA 10.0.0.4 00-15-F2-34-6E-19 137 C:\WINDOWS\system32\DRIVERS\ndisuio.sys

3°) 23/06/2006 20:01:28 Allowed Outgoing UDP 10.0.0.5 00-0A-E6-1F-94-CA 10.0.0.4 00-15-F2-34-6E-19 137 C:\WINDOWS\system32\ntoskrnl.exe

4°) 23/06/2006 20:01:28 Allowed Incoming TCP 10.0.0.5 00-0A-E6-1F-94-CA 10.0.0.4 00-15-F2-34-6E-19 445 C:\WINDOWS\system32\DRIVERS\ndisuio.sys

5°) 23/06/2006 20:01:28 Allowed Incoming TCP 10.0.0.5 00-0A-E6-1F-94-CA 10.0.0.4 00-15-F2-34-6E-19 445 C:\WINDOWS\system32\ntoskrnl.exe

Il faut que les process suivants ndisuio.sys & ntoskrnl.exe puissent avoir accés au réseau local - Vous remarquez que seul 2 ports sont utilisés 137 & 445 en TCP & UDP - cfr NETBios ;-)

Pour le Firewall de votre routeur je vous laisse voir – mais normalement il ne devrait pas s'occuper de ce qui se passe à l'intérieur votre réseau local. Il est là pour surveiller ce qui entre et sort de votre réseau local.

Paramétrage du FIREWALL OpenSuSE

YAST > Security and Users > Configure a Firewall > Allowed Services > Zone Externe > Advanced > Samba Server

Save Setting et Redemarrer le FireWall

Puis

YaST > System > /etc/sysconfig Editor - Network > Firewall > SuSEfirewall2

modifier ou ajouter les parametres (settings):

    FW_SERVICES_EXT_TCP = microsoft-ds netbios-dgm netbios-ns netbios-ssn 
    FW_SERVICES_EXT_UDP = netbios-ns 
    FW_ALLOW_INCOMING_HIGHPORTS_TCP = microsoft-ds netbios-ns 
    FW_ALLOW_INCOMING_HIGHPORTS_UDP = microsoft-ds netbios-ns 
    FW_ALLOW_FW_BROADCAST_EXT = netbios-ns netbios-dgm 

Redémarrez le Firewall et cela devrait marcher..

Maintenant vous devriez avoir accés…

Création d'un dossier partagé en Read-Only sous linux accessible sans authentification

Ici le serveur un pc qui tourne sous Linux. Le client sera le pc qui tourne sous Windows ou Linux si vous faite tourner le client samba.

C'est le plus courant : je veux partager ma musique, mais je ne veux pas que mon coloc ou ma petite soeur efface mes albums de Bjork pour mettre la compil StarAC à la place…

Pour accéder aux resources il vous faut les bons droits dans Linux. Donc si vous avez choisi de partager un dossier dans votre /home/ cela se complique car vous seul avez des droits… et que vous devez y accéder via un password… il est normal qu'une personne du réseau ne puisse y accéder sans mot de passe. Cela reste donc déconseillé.

1°) Créer un dossier où vous allez partager votre musique :

    # mkdir /shared-smb/music

2°) Changer les droits – ici on va permettre à tout le monde (user,group,other) d'accéder aux dossier en lecture et en écriture.

    # chmod 777 -R /shared-smb/music

Ne pas oublier que toutes les comptes qui ont accés à la machine locale (le serveur linux) peuvent eux accéder en lecture/écriture au dossier /shared-smb/music !!!!! – Ne confonder pas les droits locaux et les droits réseaux.

SaMBa ne peut JAMAIS supplenté les droits UNIX.

3°) On va commencer par créer un fichier /etc/samba/smb.master.conf ce fichier sera notre fichier de travail et pas le fichier de configuration propre de samba. C'est une manière de travailler proprement. Dans ce fichier tout ce qui précède les # sont des commentaires. Cela va nous permettre de savoir ce que l'on fait et ce que l'on modifie (attention de ne pas le confondre avc le # du root).

     # vi /etc/samba/smb.master.conf

Ajoutez ces lignes et modifiez en conséquence :

 #
 #
 [Global]
 
 Workgroup = WORKGROUP
 # Vous pouvez mettre le nom que vous voulez mais il doit avoir - de 15 
 # lettres si possible en majuscule.
 
 Netbios name = JUPILER
 # Identique faites simple et – de 15 caratères -  doit être UNIQUE c'est le 
 # nom de votre PC
 
 Security = Share
 # Par défault le Security est en user. On va le mettre en share comme cela 
 # aucune identification ne sera demandée    
 # lors de l'accès à la ressource.
 
 [Music Shared on SUSE]
 # c'est le nom du share : comment il va apparaître dans le réseau.
 
 comment = Musics Shared on SUSE Read-Only
 # commentaires 
 
 path=/shared-smb/music
 # Chemin où se trouve votre dossier à partager : attention ! Ici il doit 
 # exister et avoir les bons droits pour les différents utilisateurs.
 # Faire attention en cas d'espace aussi /Mes Musiques = /Mes\ Musiques/
 
 
 Read Only = Yes
 # Ben on veut être en read only, c'est l'option par défault.
 
 Public = Yes
 # On veut que tout le monde puisse accéder au dossier. Semble être un 
 # synonyme de Guest ok = Yes 
 

Voilà on va bientôt partager le dossier /shared-smb/music qui aura comme nom de partage [Music Shared on SUSE]. Tout le monde pourra venir sur le dossier et personne ne pourra modifier les dossiers depuis le réseau.

4°) On va faire le test pour voir si il n'y a pas d'erreurs de syntaxe. C'est là qu'intervient le testparm - pour tester les parametres de SaMBa.

 # testparm /etc/samba/smb.master.conf
 
 Load smb config files from /etc/samba/smb.master.conf
 Processing section "[Music Shared on SUSE]"
 Loaded services file OK.
 WARNING: You have some share names that are longer than 12 characters.
 These may not be accessible to some older clients.
 (Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)
 Server role: ROLE_STANDALONE
 Press enter to see a dump of your service definitions
 [global]
         workgroup = WORKGROUP
         netbios name = JUPILER
         security = SHARE
 [Music Shared on SUSE]
         comment = Musics Shared on SUSE Read-Only
         path = /shared-smb/music
         public = Yes

Les dernières lignes seront le fichier de configuration de SaMBa… et rien de plus…

5°) Maintenant on va copier le fichier vers /etc/samba/smb.conf, mais sans les commentaires et sans les options par défaut (ce qui va considerablement diminuer le fichier) :

 # testparm -s /etc/samba/smb.master.conf > /etc/samba/smb.conf
 Load smb config files from /etc/samba/smb.master.conf
 Processing section "[Music Shared on SUSE]"
 Loaded services file OK

On peut toujour vérifier avec un :

 # cat /etc/samba/smb.conf          cat sert à lire le contenu d'un fichier 
 [global]
      workgroup = WORKGROUP
      netbios name = JUPILER
      security = SHARE
 [Music Shared on SUSE]
      comment = Musics Shared on SUSE Read-Only
      path = /shared-smb/music
      public = Yes

On remarque que le fichier n'est pas très grand et qu'il a perdu ses commentaires et certains paramètres qui étaient par défaut pour SaMBa, et correspond à ce que l'on avait plus haut.

6°) On relance le service SaMBa (pas obligatoire car Samba va vérifier toute les 30 secondes pour voir si il y a modification):

 # /etc/init.d/smb restart
 Shutting down Samba SMB daemon done
 Starting Samba SMB daemon done

Et voilà… on partage notre dossier:

7°) Sous Windows XP [Run … puis \\IP_de_votre_server_LINUX] et vous devez trouverer un dossier [Music Shared on SUSE] avec un commentaire “ Musics Shared on SUSE Read-Only ” et vous devriez savoir y accéder sans aucune autentification… avec une impossibilité de modifier quoique ce soit.

On va un peut compliquer la chose…Le read-only c'est bien pour les autres mais pas pour sois-même… On va régler ce problème – Mais pour cela on va travailler AVEC Authentification. Vous allez dire pas besoin d'authentification, il est si simple de rajouter dans la configuration du share un petit writable = yes.

 [Music Shared on SUSE]
 	Comment = Musics Shared on SUSE Read-Only
	Path = /shared-smb/music
 	Public = Yes
        Writable = Yes

Je suis d'accord avec vous et cela marchera également avec l'option Read Only = No. Mais tous les fichiers et répertoires créé le seront avec le users et les droits utilisé par défault çàd le user “nobody” et le groupe “nobody” avec un mask de 755. Cela risque de poser problème si vous voulez modifier ces fichiers directement du serveur avec votre compte linux.

En gros chaque répertoire ou fichier créer sous SaMBa aura cette forme :

 drwxr-xr-x 2 nobody nobody  4096 Nov 20 16:17 Bjork
 -rwxr-xr-x 1 nobody nobody    19 Nov 20 13:16 Test.txt 

Pour éviter cela vous pouvez rajouter ces options (dans la partie Global ou dans le Share)en les modifiants pour votre configuration :

force user = christian

force group = users

create mask = 775

directory mask = 775

Création d'un dossier partagé sous linux accessible avec authentification.

Première chose à vérifier c'est est-ce que tout les users sont bien présent au niveau du serveur Linux ? Sinon rajouter les.

 ~ # useradd  -c "Martine" –m martine
 ~ # passwd martine				                  
 Changing password for martine.
 New Password:
 Reenter New Password:      
 Password changed.

Astuce: Vous ne voulez pas avoir tout les users sur la page de login – Si vous utilisez KDE: KDE Control Center > Sytem Administration > Login Manager > Tab Users et cochez les utilisateurs que vous ne voulez plus voir au login de votre Linux.

Maintenant on va leur attribué un mot de passe spécifique à SaMBa, pour évité d'avoir le même mot de passe que celui du login.

 ~ # smbpasswd –a martine
  New SMB password:	   
  Retype new SMB password:	
  Added user martine.

Si l'utilisateur était déjà créer dans smbpasswd, la dernier ligne ne s'affichera pas. Faite le pour l'ensemble de vos utilisateurs…

On va créer 2 autres répertoires /shared-smb/public accéssible à tout le monde et /shared-smb/movie interdit à martine quand à /shared-smb/music on va le rendre en écriture que pour le user christian et valerie.

 # mkdir /shared-smb/public
 # chmod 777 -R /shared-smb/public
 # mkdir /shared-smb/movie
 # chmod 777 -R /shared-smb/movie

On va reprendre notre fichier de configuration /etc/samba/smb.master.conf

 [Global]
 Workgroup = WORKGROUP
 # Vous pouvez mettre le nom que vous voulez mais il doit avoir - de 15 
 # lettres si possible en majuscule.
 Netbios name = JUPILER
 # Identique faites simple et – de 15 caratères -  doit être UNIQUE c'est le
 # nom de votre PC
 Security = User
 # Par défault le Security est en user. 
 
 [Homes]
 Comment = Home Directories
 Browseable = yes
 Writable = yes
 Valid users = %S
 # Pour être sur que seuls le bon user se connecte à //serveur/username	
 
 [Music Shared on SUSE]
 # c'est le nom du share : comment il va apparaître dans le réseau.
 comment = Musics Shared on SUSE Read-Only
 # commentaires 
 path=/shared-smb/music
 # Chemin où se trouve votre dossier à partager : attention ! Ici il doit 
 # exister et avoir les bons droits pour les différents utilisateurs.
 # Faire attention en cas d'espace aussi /Mes Musiques = /Mes\ Musiques/
 Read Only = Yes
 # Ben on veut être en read only, c'est l'option par défault.
 Browsable = yes
 Write list = christian,valerie 
 # Seul christian et valerie vont pouvoir écrire et modifier les données
 
 [Public Shared on SUSE]
 # c'est le nom du share : comment il va apparaître dans le réseau.
 comment = Public Shared on SUSE 
 # commentaires 
 path=/shared-smb/public
 # Chemin où se trouve votre dossier à partager : attention ! Ici il doit 
 # exister et avoir les bons droits pour les différents utilisateurs.
 # Faire attention en cas d'espace aussi /Mes Musiques = /Mes\ Musiques/
 Writable = Yes
 # Ben on veut pas être en read only, c'est l'option par défault.
 Browsable = yes
 
 [Movie Shared on SUSE]
 # c'est le nom du share : comment il va apparaître dans le réseau.
 comment = Movie Shared on SUSE 
 # commentaires 
 path=/shared-smb/movie
 # Chemin où se trouve votre dossier à partager : attention ! Ici il doit 
 # exister et avoir les bons droits pour les différents utilisateurs.
 # Faire attention en cas d'espace aussi /Mes Musiques = /Mes\ Musiques/
 Writable = Yes 
 # Ben on veut pas être en read only, c'est l'option par défault.
 Browsable = yes
 Invalid users = martine  
 # On pourrait utiliser Valid users = christian,olivier,valerie,stephane

Un petit testparm pour voir si tout est correct..

# testparm -s /etc/samba/smb.master.conf > /etc/samba/smb.conf
  Load smb config files from /etc/samba/smb.conf.master
  Processing section "[Homes]"
  Processing section "[Music Shared on SUSE]"
  Processing section "[Public Shared on SUSE]"
  Processing section "[Movie Shared on SUSE]"
  Loaded services file OK.
  WARNING: You have some share names that are longer than 12 characters.
  These may not be accessible to some older clients.
  (Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)
  Server role: ROLE_STANDALONE

Redemarrons SaMBa :

 # /etc/init.d/smb restart
 Shutting down Samba SMB daemon done
 Starting Samba SMB daemon done

Sous Windows XP [Run … puis \\IP_de_votre_server_LINUX].

Windows XP vous demandera une authentification, tapez martine et son password (le smbpasswd pas celui du login !!!). Vous trouverez plusieurs dossiers accessible suivant les différentes conditions que vous avez décidé. Dans mon exemple, martine aura accés à son home et public en lecture/ecriture, music en lecture et elle n'aura pas accés à movie.

Ici nous n'avons plus vraiment besoin de jouer avec l'option Force user ou Fource group car ce qui est créer prend par défaut l'utilisateur qui s'est authentifié.

Trucs et Astuces

* Modifier votre fichier lmhosts quir se trouve pour Windows XP C:\Windows\System32\drivers\etc et sous Linux /etc/lmhosts et rajouter vos IP ainsi que le nom de vos PC ainsi vous n'aurez plus besoin de taper l'IP mais simplement le NOM NetBIOS

* Si vous avez vraiment bcp de machines - SaMBa peut facilement créer un server WINS (équivalent à un NetBIOS Name Server) - pour cela rajouter dans la partie [GLOBAL] l'option wins support = yes - puis sur vos machines Windows XP dans Advanced TCP/IP Setting ajouter l'IP de votre server linux dans l'onglet WINS

* Pour mapper un drive sous windows via la ligne de commande

   net use L: \\IP_du_sever\emplacement du dossier

* Pour avoir des logs; rajouter dans [Global]

   log level = 1 
   log file = /var/log/samba.log.%U                   
   max log size = 500 

* Accessibilité des dossiers; rajouter dans [Global] ou dans [Dossier partagé]

   valid users = tintin haddock tournesol 
    ou 
   invalid users = dupont dupond 

* Utilisation de SWAT : Pour les gens ALLERGIQUE à la ligne de commande voici une petite video super bien faite qui utilise SWAT pour gérer SaMBa: http://itsyourpc.org/SuSE_Contest/SMB/SMB.html

samba_partagexp.txt · Dernière modification : 2018/11/17 12:54 de 127.0.0.1