Raspberry Pi : installer Samba

Avoir plein de fonctionnalités c’est bien mais avant tout, ce que l’on souhaite, c’est un espace de stockage. C’est ce que nous allons mettre en place aujourd’hui avec Samba.

Installation Samba

Nous allons partager plusieurs répertoires. Nous allons donc avoir besoin de plusieurs utilisateurs pour le partage commun mais aussi pour les parties dites privées.

Je vais donc créer en plus de l’utilisateur root (et timemachine pour ceux qui utilisent le service Time Machine de cet article) , un utilisateur privé ‘chris’ pour moi, un utilisateur pour Madame et un guest pour la zone de partage commune.

C’est parti !

  1. Installer les packages de Samba
    apt-get install apt-transport-https samba samba-common-bin
  2. Sauvegarder le fichier de configuration. On ne sait jamais 😉
    cp /etc/samba/smb.conf /etc/samba/smb.conf.old
  3. Créer le user guest pour accéder à la zone de partage « share »
    adduser guest --home=/home/public --shell=/bin/false --disabled-password
  4. Changer les droits sur la zone de partage /media/usbdrive/share
    chown -R guest:guest /media/usbdrive/share
  5. Autoriser les utilisateurs à se connecter à Samba dans /etc/samba/smb.conf
    ## Browsing/Identification ###
    
    # Change this to the workgroup/NT-domain name your Samba server will part of
    
       workgroup = WORKGROUP
    
    ####### Authentication #######
    
       security = user
  6. Toujours dans /etc/samba/smb.conf ajouter le point de partage public à la fin du fichier de configuration
    [Partage]
    
    comment = Partage
    
    read only = no
    
    writable = yes
    
    locking = no
    
    path = /media/usbdrive/share
    
    guest ok = yes
    
    force user = guest
  7. Relancer le service Samba
    service smb restart
    service nmbd restart

A ce stade, sur les ordinateurs du réseau le Raspberry Pi est visible

Le Raspberry Pi visible par samba sous Mac Os

Le Raspberry Pi visible par samba sous Mac Os

Il suffit de s’y connecter en étant invité et le répertoire sera monté automatiquement

Se connecter en tant qu'invité

Se connecter en tant qu’invité

Choisir la zone de partage

Choisir la zone de partage

Affichage du partage Samba dans Mac OS

Affichage du partage Samba dans Mac OS

Bon maintenant passons au partage de zones privées !

Toujours dans l’article de préparation des disques, nous avions créé une partition pour stocker des documents mais contrairement à la zone de partage, chaque utilisateur aura son répertoire, non visible par les autres utilisateurs enregistrés sur le Raspberry Pi.

  1. Ajouter un user
    adduser chris
  2. Mise à jour du répertoire ‘home‘ pour être installé sur le disque externe
    usermod -m -d /media/usbdrive/private/chris chris

    Un petit ‘ls /media/usbdrive/private/‘ vous affichera le répertoire avec les bons droits 😉

  3. Activer le partage du répertoire créé dans Samba en ajoutant une section dans /etc/samba/smb.conf
    [Chris Home]
    
    path = %H
    
    comment = %U Home
    
    writable = yes
    
    username = chris
    
    only user = yes
    
    create mode = 0600
    
    directory mask = 0700
  4. Ajouter l’utilisateur créé dans la base Samba. Il va vous demander un mot de passe. Vous choisissez ce que vous voulez. C’est ce mot de passe qui sera demandé lors de la connexion depuis une machine extérieure.
    smbpasswd -a chris

Et voilà pour Samba.

Si vous vous connectez au Raspberry Pi avec un utilisateur invité, vous accédez à la zone partagée. Vous vous connectez avec un utilisateur enregistré, vous accédez à la zone privée.

J’attends vos remarques et suggestions car je ne suis pas expert Samba. A vos commentaires ! 🙂

Vous aimerez aussi...

  • Coen van der Maade

    Hi Chris, first of all thanks for the great howto on Samba and the Pi. Sorry i write in English but being Dutch my French needs some work (to say the least :-))

    I have a question, have you got any tips on how to automatically let Mac OSX connect to the Samba share when my mac boots?

    Thanks a lot,

    Coen

    • Hi,
      Thanks for your comment.
      That’s quite easy to make your mac loading the share or any drive.
      First you connect to the share manually
      Second you open user preferences tab in the preferences panel
      Third you click on the « opening » (not sure in english) button of your user. That’s where your programs start when you log in (or start the Mac)
      Fourth you drag your drive from the finder to the programs’ list in the preferences pane

      You are done.
      Tell me if it works (it should 😉 )

      • Coen

        Thanks,

        This works great and I learned a new feature of OSX.

        Thanks again

  • Florian

    Bonsoir,

    Très bon article très bien rédigé.

    Cependant je galère depuis 2 jours à essayer de mettre en place une configuration..

    Je m’explique :

    J’ai un disque dur USB monté sur mon RPi et je veux créer deux répertoires sur celui-ci :

    Un répertoire /Documents et un répertoire /Echanges

    Et je souhaiterais que le répertoire /Documents soit accessible ET visible uniquement par l’utilisateur « Florian » et je voudrais que le répertoire /Echanges soit visible et accessible par tout le monde sans demande de connexion.

    J’arrive à mettre en place le répertoire /Echanges accessible depuis Windows 7 sans problème mais depuis le Mac j’obtiens l’erreur suivante :

    http://postimg.org/image/5csmc4frv/

    Et lorsque je me connecte avec le compte « Florian » j’obtiens bien la visibilité du répertoire /Echanges mais je n’ai pas /Documents… Par contre j’ai mon répertoire /home..

    Si tu peux m’aider.. Merci

    • Je n’ai pas accès au message d’erreur
      Pour le problème de répertoire il faut modifier le home par défaut du user Florian comme à l’étape 2 des parties privées :
      usermod -m -d /media/usbdrive/private/chris chris

      • Florian

        Merci pour ta réponse.

        J’ai suivi exactement ton tuto et ça passe parfaitement sur le Mac, mais pas sur le PC…

        En effet, lors de la connexion du lecteur réseau \192.168.0.9Echanges, il me demande un login et un mot de passe.

        Comment faire pour que ce répertoire soit accessible sans login et sans mot de passe ?

        Merci

        • Ah ok ton commentaire précédent parlait d’un soucis sous Mac et pas sous Windows
          Sur le PC de Madame je n’ai pas eu de soucis. C’est ces lignes qui evitent la demande de mot de passe pour l’utilisateur invité :
          guest ok = yes
          force user = guest

          • Florian

            Si je mets « security = share » c’est ok sur le PC mais plus sur le mac lol…

            Je ne comprends vraiment pas.

  • Guidz

    Bonjour,

    super ce tuto !
    J’envisage de m’offrir un Raspberry Pi pour m’amuser un peu et monter ce genre de choses.
    Je m’interrogeais sur les performances obtenues avec Samba. Les lectures/écritures ne sont-elle pas trop lentes ? Quels sont les débits obtenus ?

    • Salut,
      Je tourne dans les 4 ou 5 Mb/s avec du wifi vers ma box et de l’ethernet entre ma box le raspberry. Le CPU du Raspberry n’est pas à 100% lors de l’utilisation

  • vinzouille

    Salut et merci pour tout tes tutos!
    J’ai installé samba et partagé un disque usb tout fonctionnait bien jusqu’à un reboot du raspberry.
    Après le reboot je parvenais à voir le raspberry depuis ma machine windows mais impossible d’accéder au répertoire partagé (alors qu’avant reboot pas de pb).
    en allant voir les droits sur le partage je me suis rendu compte que seul l’utilisateur pi avait les autorisations d’accès, un sudo chmod 777 sur le partage n’a rien changé 🙁
    Tu aurais une idée?

    • Ca peut venir droits de montage de la partition. C est dans le fichier /etc/fstab
      tu peux forcer un user/group pour le mount. Ne pas oublier le chmod et le chown qui doit aller avec le user et groupe choisi

  • vinzouille

    Merci pour ta réponse.
    J’avais tenté le chmod sur le répertoire partagé mais ça n’a rien fait (le chmod n’a meme pas été pris en compte), ce que je voulais c’était que tout le monde y ait accès (je sais niveau sécurité c’est bof).
    Je vais voir pour tout refaire on verra bien 😉

    • Et si tu demontes et remontes en root ta partition ?

      • vinzouille

        ça peut se tenter je verrais ça dans la semaine 😉

        • vinzouille

          Bon j’ai refait ma config de zero (j’ai pas encore redémarré le raspberry), j’ai bien pensé à ajouter l’entrée dans la fstab, ma partition appartient à root/root (pour le moment ça marche comme ça j’aviserait après), j’ai aussi installé subsonic en suivant ton tuto vraiment nikel 🙂

  • boogieman

    super!!
    mais, pour faire l’inverse, je galère…
    c’est à dire comment monter un lecteur distant sur le raspberry?
    salut

    • Je peux pas regarder exactement maintenant mais pour moi c est dans le fichier fstab avec comme type de montage smb

  • ThoGia

    Bonjour,

    J’ai installé Samba (privé et partagé) sur mon Raspberry Pi, ainsi que Time Machine. J’ai un disque dur de 2To, partagé en 4 partitions, dont une pour le partage, une pour samba privé, et une pour Time Machine. Le fait est que quand Time Machine fait une sauvegarde, je ne peux pas acceder avec le même Mac au partage Samba, si je me connecte au partage, la sauvegarde Time Machine s’arrête, et lorsque je lance la sauvegarde, les dossier du réseaux sont démontés automatiquement.

    C’est un problème connu / normal ou alors j’ai foiré quelque part ?

    • Bonjour,
      Connu je ne sais pas mais on dirait que c’est un probleme de user. Il faut un user specifique pour la partition time machine et un autre pur le share. Chez moi je n’ai pas de probleme particulier à utiliser les deux en meme temps.

      • ThoGia

        pourtant j’ai bien un user pour chaqu’un, j’avais des résidus de vieux scripts, je retente une installation depuis Raspian neuf pour voir.

        • ThoGia

          Je devais avoir des résidus au final … malgré quelques petites bugs (possibilité d’accéder aux dossiers privés sans identification) tout est revenu dans l’ordre en ré-installant Raspbian

  • valentinp72

    Bonsoir ! Merci pour votre tutoriel, il m’a bien aidé !

    J’ai aussi suivi le tutoriel pour transformer le Rbpi en time capsule, ça marche, sauf que dans le tutoriel pour faire un time machine, vous modifiez le fichier /etc/avahi/services/afpovertcp.service, et à cause de celui-là le serveur samba n’apparait plus dans la liste des serveurs partagés (mais est tout de même accessible via « se connecter au serveur… » puis « smb://raspberrypi », mais c’est dommage de ne pas le voir dans la barre latérale…

    Avez-vous une solution ?

    • Je le fais apparaitre en me connectant dès la connexion au mac en glissant la connexion dans la liste des applications lancées au démarrage

  • NBO

    Salut et merci pour ces tutos très pratiques !
    Juste une question : Je souhaite pouvoir accéder à mon Pi et son montage Samba via Internet.
    Quel est le port utilisé par défaut pour Samba ?
    Y’a-t-il des risques / choses à savoir avant de faire ça ?
    Encore merci,
    NB

  • browaeys

    Bonsoir,

    Quand je rentre la commande :
    chown -R guest:guest /media/usbdrive/share
    J’ai le retour suivant :
    chown: cannot access `/media/usbdrive/share’: No such file or directory

    j’ai pourtant bien ce chemin écrit dans /etc/fstab.

    Je ne comprends pas. Merci de ton aide.

    • browaeys

      En fait c’est bon j’ai trouvé mon oubli.

  • michael

    Bonjour,

    Je suis débutant et ça commence mal des le début,lorsque je tape la commande « apt-get install samba samba-common-bin » j’ai ça:

    E: Could not open lock file /var/lib/dpkg/lock – open (13: Permission denied)
    E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

    Du coup j’essaye en ajoutant sudo et la j’obtiens:

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    samba is already the newest version.
    samba-common-bin is already the newest version.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    1 not fully installed or removed.
    After this operation, 0 B of additional disk space will be used.
    Do you want to continue [Y/n]? y
    Setting up samba (2:3.6.6-6+deb7u2) …
    insserv: warning: script ‘mathkernel’ missing LSB tags and overrides
    insserv: There is a loop between service rpc_shellinaboxd and mathkernel if stopped
    insserv: loop involving service mathkernel at depth 2
    insserv: loop involving service rpc_shellinaboxd at depth 1
    insserv: Stopping mathkernel depends on rpc_shellinaboxd and therefore on system facility `$all’ which can not be true!
    insserv: exiting now without changing boot order!
    update-rc.d: error: insserv rejected the script header
    dpkg: error processing samba (–configure):
    subprocess installed post-installation script returned error exit status 1
    Errors were encountered while processing:
    samba
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    Une petite idée ?

    Merci d’avance

    • Salut. Il y a un problème d’interdépendance dans les tags LSB de shellinthebox et mathkernel. Je sais pas exactement le contenu de chacun mais à priori ça semble venir de là. Et ne pas oublier le sudo apt-get update avant d’installer un paquet

  • vincentime2000

    Bonjour !

    Dans quel format doit être formaté le disque dur poir qu’il puisse être ok sur pc et mac ? J’aime pas trop le fat32 à cause de la limitation de 4,5go par fichier

    merci bcp !

    • Bonjour
      HFS : spécifique Mac. Drivers sous Windows ?
      FAT32 : marche sur les deux mais limite max de 4.5Go
      NTFS : marche sur les deux mais il faut un driver coté Mac pour lire les partitions. Et il y a des manipulations pour avoir le droit en écriture

  • vincentime2000

    Bonsoir,

    le ext4 pourrait-il faire l’affaire pour le coup ?

    • Si tu as un driver Windows qui permet l’écriture …
      Pour le Raspberry c’est l’idéal car pas besoin de module qui consomme du CPU ! 😉

  • Bonjour, je voulais sav?
    Mercioir si un fichier ex .xls est ouvert par un utilisateur est il automatiquement verrouillé en écriture

  • Bruno

    Bonjour à tous,

    Je viens d’avoir mon Raspberry Pi 2. J’ai mis une Raspbian et tout mis à jour. Le pi est à l’adresse 192.168.1.15.
    Mon PC sous Windows 7 64 bits est en 192.168.1.17.
    Les deux machines peuvent se pinger mutuellement.
    Ce que je veux faire, c’est partager un répertoire sur le PC Windows, afin d’y accéder depuis le pi.
    J’ai créé un répertoire « echange » sur le PC, et je l’ai partagé.

    Je me loggue sur le pi avec ssh. pas de problème.
    Sur le PC, il y a un utilisateur « pi » : je l’ai créé exprès.

    Depuis le pi je lance la commande :

    pi@raspberrypi ~ $ smbclient -L 192.168.1.17 -U pi -d 1

    Le résultat est :

    Enter pi’s password:
    Domain=[BRUNO-PC] OS=[Windows 7 Home Premium 7601 Service Pack 1] Server=[Windows 7 Home Premium 6.1]

    Sharename Type Comment
    ——— —- ——-
    ADMIN$ Disk Administration à distance
    C$ Disk Partage par défaut
    E$ Disk Partage par défaut
    echange Disk pour Raspberry
    IPC$ IPC IPC distant
    Users Disk
    session request to 192.168.1.17 failed (Called name not present)
    session request to 192 failed (Called name not present)
    session request to *SMBSERVER failed (Called name not present)
    NetBIOS over TCP disabled — no workgroup available

    On voit que l’utilisateur a été reconnu, et que le répertoire « echange » a été trouvé.
    Je ne sais pas quoi faire avec les messages « Called name not present » et « NetBIOS over TCP disabled — no workgroup available ».

    Merci pour votre aide !

    • Bonjour,
      Peut être pouvez-vous essayer le tutoriel suivant pour le montage d’une répertoire protégé (ou non) depuis le Raspberry Pi : http://geeks.noeit.com/mount-an-smb-network-drive-on-raspberry-pi/

      • Bruno

        Bonjour,
        J’essaie ce soir, merci.

        • Bruno

          Bonsoir,
          J’ai laissé tombé avec smbclient.
          A la place j’utilise mount.cifs, ça marche sans problème.

  • Aurel

    Bonjour,

    J’ai chez moi minibian d’installé
    Pour installer samba il m’a d’abord fallu installer le paquet apt-transport-https
    Je ne sais pas trop pourquoi mais voila cela fonctionne bien 🙂
    Peut-être a rajouter dans le tuto

    Merci pour les super tuto ! 🙂

    • Bizarre car si c’est une dépendance ca devrait être ajouté automatiquement lors de l’installation. Mais je rajoute. Merci pour l’info

      • Aurel

        En effet je ne comprend pas pourquoi le paquet ne fait pas partit des dépendances.
        Il y avait juste un message me demandant de vérifier si ce paquet était bien installé.
        Je n’ai pas pensé avec faire une capture d’écran.

  • Pingback: [RaspBerry Pi] Faire un serveur de téléchargement économe en énergie()