f6k ~ Raspbian sur un Raspberry Pi 3 Model B

Fichier créé le 2 décembre 2016 • Dernière mise à jour le 24 décembre 2016.

Suite aux aventures avec mon IdeaPad 100s, j’ai finalement opté pour la solution qui consiste à utiliser un maximum de logiciels libres sous Microsoft Windows 10 et, pour le reste, de me monter un petit serveur à côté afin de gérer tout ce dont je pourrais avoir besoin. Justement mes besoins à ce niveau ne sont pas très compliqués. Habitant une chambre en cité universitaire ne fournissant qu’un accès internet par Ethernet, j’ai besoin d’un router Wi-Fi afin de connecter à la fois l’ordinateur portable et le téléphone portable ; par ailleurs j’ai besoin aussi d’un espace de stockage pour tout ce qui est sauvegarde et accès multimédia ; et d’une façon générale d’un multiplexer de terminaux afin d’accéder à toutes les applications dont je pourrais avoir besoin quotidiennement — cela allant d’un client IRC, d’un client mail jusqu’à une distribution TexLive en passant par, mettons, NetHack. Une utilisation somme toute basique. Partant de rien, j’ai opté pour une solution simple, efficace, tout-en-un et pas chère c’est-à-dire un Raspberry Pi 3 Model B.

Histoire de garder une trace au cas où et, pourquoi pas peut-être, d’en faire profiter d’autres, je rédige ce fichier retraçant les différentes configurations que je fais dans le cadre de ma propre utilisation. Pour cette raison il est susceptible d’évolution profonde au fur et à mesure du temps.

Sommaire

  1. Achat du matériel et spécifications
  2. Préparation de la carte SD et configuration de Raspbian
  3. Création d’un utilisateur pour se sentir chez soi
  4. Un Raspberry comme routeur Wi-Fi
  5. Pare-feu et notifications de sécurité par SMS
  6. Préserver la durée de vie de la carte SD
  7. Partage de fichiers et stockage réseau
  8. Références

Achat du matériel et spécifications

Avant de nous lancer, et pour information, voici le détail de ce que j’ai acheté sur Amazon :

Ce qui me fait un total de 68,27 euros, frais de port gratuits (oui, vous remarquerez que le prix du Raspberry a augmenté légèrement par rapport à mon prix d’achat ; je ne saurais dire pourquoi). Il faut noter que je compte n’avoir aucune utilité d’un écran, d’un clavier ou d’une souris. En effet je me connecterai sur le Raspberry par le Wi-Fi via SSH depuis le matériel portable dont je dispose déjà. Cependant, j’ai pu compter sur un clavier USB et un écran VGA accompagné de son adaptateur HDMI/VGA, gracieusement prêté pour l’installation et les premières configurations. Avant d’aller plus loin, voyons les spécifications générales de la bestiole :

Composants Notes Statut
Broadcom BCM2837   OK
Quad Core ARM Cortex-A53 1.2Ghz ARMv8 64 bit OK
Dual Core VideoCore IV 400Mhz OpenGLES2 1080p30 H.264 OK
LPDDR2 1GB 900 Mhz   OK
Wi-Fi 802.11 b/g/n 2,4Ghz driver nl80211 OK
Bluetooth 4.1 Low Energy module BCM43438 OK
Ethernet 10/100   OK
GPIO 40-pin header, populated Non testé N/A

À cela il faut rajouter un port HDMI 1.4, un port jack audio stéréo et vidéo composite de 3.5mm, quatre ports USB 2.0, un port Ethernet, un port Camera Serial Interface (CSI) pour une caméra, un port Display Serial Interface (DSI) pour un écran tactile et un port micro USB pour l’alimentation. Bref, pour des dimensions de 85,6mm x 56 mm x 21mm, nous voyons donc que cette petite machine va nous permettre de faire tout ce que l’on veut, et même plus, sans aucun problème.

Préparation de la carte SD et configuration de Raspbian

Comme mon unité de stockage principale sera pris en charge par un disque dur externe branché en USB, j’ai opté, concernant le système, pour une carte SD de 16Go. Étant donné que je ne vais avoir qu’une utilisation type serveur, c’est amplement suffisant pour moi. Le système choisi sera Raspbian — c’est-à-dire une Debian pour Raspberry — dans sa version Lite qu’il faut dès lors récupérer ici. Utilisant l’image incluse dans l’archive, la carte SD sera préparée avec l’aide de l’utilitaire Win32 Disk Imager pour Windows et dont l’utilisation est enfantine. Sous GNU/Linux la même manipulation pourra être effectuée simplement avec l’outil dd.

La carte étant maintenant prête, il ne reste qu’à l’insérer à sa place dans le Raspberry puis de brancher clavier, écran allumé, câble Ethernet puis, finalement, l’alimentation. Sans désemparer la machine démarrera directement, aucun bouton commutateur n’étant prévu. L’installation se fera automatiquement et après quelques secondes le système demandera un nom d’utilisateur et un mot de passe qui sont, respectivement, pi et raspberry — attention cependant, le clavier est par défaut en QWERTY et non en AZERTY. Juste après le lancement, il faut lancer sudo raspi-config, l’outil de configuration spécifique à Raspbian. Normalement lors de l’installation le système a été étendu sur toute la carte SD ; mais si tel n’était pas le cas, la première chose à faire est de lancer cette opération grâce à l’entrée Expand Filesystem. La seconde chose à faire est de passer le clavier en AZERTY en se rendant à l’entrée Internationalisation options puis Change Keyboard Layout. La troisième chose à faire est de changer le mot de passe de l’utilisateur pi via l’entrée idoine. Tant que nous sommes là, on va aussi activer SSH qui nous sera utile plus tard en nous rendant dans Advanced Options et en sélectionnant l’entrée correspondante. Pour le reste les choses sont, je crois, suffisamment claires si l’on parle un tant soit peu anglais ; au pire, il existe des tutoriaux ici ou qui peuvent être d’une certaine aide.

Partant du principe que l’on a un accès à internet grâce au câble Ethernet branché sur le Raspberry, il est nécessaire de mettre à jour le système.

$ sudo apt-get update && sudo apt-get upgrade

Il faut noter que l’image Raspbian fournie met à disposition une version stable de Debian (Jessie, à l’heure où ces lignes sont écrites). Apparemment rien n’empêche de passer en version testing puisque les dépôts existent et semblent parfaitement fonctionnels. Je ne l’ai pas (encore) fait mais après la première mise à jour du système cela paraît être le meilleur moment pour faire le saut. Il suffit pour cela, et comme d’habitude, de modifier les fichiers /etc/apt/sources.list et /etc/apt/sources.list.d/raspi.list en changeant jessie pour testing avant de lancer un dist-upgrade.

$ sudo apt-get update && sudo apt-get dist-upgrade

Dans un cas comme dans l’autre, le noyau Linux a très probablement été mis à jour ; il faut donc redémarrer avant de passer aux choses sérieuses.

$ sudo reboot

Création d’un utilisateur pour se sentir chez soi

Cela n’est pas une chose essentielle, ni même nécessaire, à faire mais histoire de me sentir chez moi, je vais me créer un compte utilisateur à mon nom. Il est possible d’utiliser pour cela la commande adduser mais je préfère passer par l’outil non-interactif useradd. Je commence par créer un groupe primaire pour mon futur utilisateur :

$ sudo addgroup f6k

Puis je crée effectivement l’utilisateur f6k en lui attribuant le groupe primaire f6k et les groupes secondaires nécessaires en me basant sur ceux de pi, puis lui donne un mot de passe :

$ sudo useradd -m -g f6k -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi f6k
$ sudo passwd f6k

Notez que certains groupes secondaires sont plutôt inutiles et l’on peut donc ne pas les mettre. Attention cependant à bien mettre le groupe sudo car celui-ci va nous permettre d’avoir les droits pour utiliser la commande sudo nécessaire, entre autres, à l’administration du système. Si vous ne mettez pas votre utilisateur dans ce groupe, il ne lui sera pas possible d’utiliser sudo ! Le nouvel utilisateur étant créé, l’on peut dès à présent se reconnecter en l’utilisant. Et, si l’on ne l’utilise pas, on peut dès lors supprimer l’utilisateur par défaut pi :

$ whoami
f6k
$ sudo userdel pi

Si vous supprimez l’utilisateur pi vous pouvez aussi supprimer la ligne qui lui correspond dans /etc/sudoers. De façon subsidiaire il est possible d’activer le compte root. Sous Raspbian, par défaut, celui-ci est en effet inactif pour des raisons de sécurité — comme sous Ubuntu. Si, pour une raison ou une autre, vous éprouvez le besoin de l’avoir sous la main, vous pouvez l’activer simplement en lui attribuant un mot de passe :

$ sudo passwd root

Sachez de plus que SSHd est configuré par défaut pour ne pas permettre une connection SSH par mot de passe avec ce superutilisateur root ; c’est-à-dire que, a contrario, il sera possible de le faire avec une clef d’authentification que vous devrez créer et configurer pour l’occasion.

Un Raspberry comme routeur Wi-Fi

Mon idée avec le Raspberry est de la brancher par son port Ethernet à la prise murale Ethernet de ma chambre donnant un accès à internet et de faire en sorte que cet accès soit disponible en Wi-Fi pour mes autres appareils. Autrement dit, transformer le Raspberry en routeur Wi-Fi. Pour arriver à cela nous allons avoir besoin d’installer deux paquets spécifiques à savoir hostapd et dnsmasq ; le premier va nous permettre d’avoir un point d’accès Wi-Fi grâce à la carte embarquée et le second permettra de diffuser automatiquement des IP par DHCP et de gérer les DNS.

$ sudo apt-get install hostapd dnsmasq

La configuration va se dérouler en quatre temps ; il faut attribuer une IP statique à wlan0, adapter hostapd puis dnsmasq à nos besoins, et enfin rediriger le traffic entre eth0 et wlan0.

Commençons donc par attribuer une IP statique à l’interface Wi-Fi wlan0. Il faut savoir que par défaut les différentes interfaces réseaux sont autoamtiquement configuées grâce à dhcpcd — ce qui nous permet d’avoir un accès internet par eth0 sans rien n’avoir à faire que brancher le câble RJ45. Il faut donc lui indiquer de ne plus s’occuper de l’interface wlan0 en éditant le fichier /etc/dhcpcd.conf pour y rajouter en toute fin les lignes suivantes :

# Deny wlan0 for hotspot
denyinterfaces wlan0

Ensuite il faut effectivement attribuer une IP à wlan0 en éditant le fichier /etc/network/interfaces de façon à ce que la section la concernant soit comme suit :

allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255

Ceci étant fait il ne nous reste plus qu’à faire prendre tout cela en compte par le système :

$ sudo service dhcpcd restart
$ sudo ifdown wlan0 && sudo ifup wlan0

Deuxième étape, nous allons maintenant configurer hostapd en créant le fichier de configuration /etc/hostapd/hostapd.conf. Cet outil regorge de possibilités de configuration et il est possible de retrouver tout ce qu’il est possible de faire dans le fichier compressé d’exemple /usr/share/doc/hostapd/examples/hostapd.conf.gz. Voici le contenu de mon fichier :

# The name of the Wi-Fi interface
interface=wlan0
# The nl80211 driver with the brcmfmac driver
driver=nl80211
# The name of the network
ssid=[MYNAME]
# Use the 2.4GHz band
hw_mode=g
# Use channel 1
channel=6
# Enable 802.11n
ieee80211n=1
# Enable WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# Deny all MAC addresses unless in accept list
macaddr_acl=1
# Accept list
accept_mac_file=/etc/hostapd/hostapd.accept
# Use WPA authentication
auth_algs=1
# Require clients to know the network name
ignore_broadcast_ssid=0
# Use WPA2
wpa=2
# Use a pre-shared key
wpa_key_mgmt=WPA-PSK
# The network passphrase
wpa_passphrase=[PASSPHRASE]
# Instead of TKIP, use AES
rsn_pairwise=CCMP 

Je ne vais pas donner le détail complet des options retenues mais je vous invite à aller faire un tour dans le fichier d’exemple cité où tout est bien détaillé. Retenez simplement que j’utilise du WPA 2 PSK et de l’AES. Remarquez que j’ai aussi mis ce qu’il faut pour avoir une white list d’adresses MAC autorisées à se connecter. Le fichier de configuration indique que c’est possible lorsque l’on utilise le module nl80211 (celui à privilégier avec le Raspberry par le driver brcmfmac). Pourtant, et même si hostapd semble bien prendre en compte ces options, ça ne fonctionne pas pour moi. Je n’ai pas encore eu le temps de chercher pourquoi ; je laisse donc cela en suspend pour le moment. Si vous recopiez ce fichier, n’oubliez pas de mettre votre propre SSID et mot de passe. Notez à ce propos qu’il est possible de mettre le mot de passe dans un autre fichier. Si vous le laissez dans le fichier de configuration, et pour des raisons évidentes de sécurité, n’autoriez sa lecture et son écriture que pour l’utilisateur root ou les utilisateurs ayant accès à sudo :

$ sudo chown root:root /etc/hostapd/hostapd.conf
$ sudo chmod 640 /etc/hostapd/hostapd.conf

Pour en terminer avec hostapd il ne nous reste plus qu’à lui dire où trouver son fichier de configuration. Pour cela il faut éditer le fichier /etc/default/hostapd et de le modifier en conséquence :

DAEMON_CONF="/etc/hostapd/hostapd.conf"

La troisième étape concerne la configuration de dnsmasq. Le fichier par défaut est assez volumineux. Personnellement je n’ai besoin que d’une configuration simple qui va consister à donner une IP aux clients qui vont se connecter sur wlan0 et de leur mettre à disposition un serveur DNS — pour ce dernier point, je ne vais pas monter mon propre serveur mais utiliser ceux fournis par FDN. Je vous invite donc à sauvegarder le fichier par défaut et de le remplacer par ce qui suit en le modifiant à votre convenance :

# User wlan0 interface
interface=wlan0
# Specify the address to listen on
listen-address=192.168.1.1
# Bind to the interface so things aren't sended elsewhere
bind-interfaces
# Forward DNS requests to FDN DNS
server=80.67.169.12
# Don't forward short names
domain-needed
# Never forward addresses in the non-routed address spaces
bogus-priv
# Assigne IP between 192.168.1.10 an 192.168.1.20 with 12h lease time
dhcp-range=192.168.1.10,192.168.1.20,12h

Pour terminer, il nous faut activer la redirection de paquets (packet forwarding) en editant le fichier /etc/sysctl.conf pour décommenter la ligne net.ipv4.ip_forward=1. Cela sera pris en compte au prochain redémarrage de la machine ; pour que cela soit effectif tout de suite, il suffit de le dire au système :

$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

De plus nous devons aussi partager la connection entre eth0 et wlan0 en mettant en place un simple NAT grâce à iptables :

$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Pour que ces règles soient appliquées à chaque démarrage du Raspberry, nous allons d’abord les sauvegarder dans un fichier spécfique :

$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Puis nous allons rajouter un appel à iptables dans le fichier /etc/rc.local juste avant la ligne exit 0 :

$ iptables-restore < /etc/iptables.ipv4.nat

Pour cette dernière opération, notez qu’il est possible, à la place, d’éditer le fichier /etc/network/interfaces et d’y ajouter cette ligne à la définition de wlan0 :

iface eth0 ...
    ...
    pre-up iptables-restore < /etc/iptables.up.rules

Voilà, tout est prêt. Il ne reste plus qu’à lancer les services correspondants pour voire apparaître le point d’accès et nous y connecter :

$ sudo service hostapd start
$ sudo service dnsmasq start

Comme nous avons déjà activé SSH tout à l’heure lors de la configuration initiale de Raspbian, une fois correctement associé au point d’accès Wi-Fi, on peut retirer l’écran et le clavier et se connecter au Raspberry tout en bénéficiant d’Internet sur la machine cliente :

$ ssh f6k@192.168.1.1

Pare-feu et notifications de sécurité par SMS

Lors de la configuration du NAT, nous avons mis des règles très simples pour iptables mais il est possible de pousser les choses beaucoup plus loin. Je ne rentre pas dans le détail ici ; pour une bonne configuration d’iptables l’on peut se référer à la partie des règles de filtrage du chapitre 38 de la Formation Debian GNU/Linux d’Alexi de Lattre. En plus de cela, il est intéressant d’installer fail2ban qui est un outil permettant de modifier les règles de filtrage automatiquement pour bloquer les tentatives d’instrusions. Commençons par l’installer :

$ sudo apt-get install fail2ban

La configuration par défaut se trouve dans /etc/fail2ban/jail.conf mais ce fichier étant susceptible d’être modifié automatiquement, nous allons créer le fichier /etc/fail2ban/jail.local qui gardera quoiqu’il arrive nos configurations. Voici le contenu de mon fichier :

[DEFAULT]

ignoreip = 127.0.0.1/8 192.168.1.10/20
ignorecommand =
bantime  = 1200
findtime = 600
maxretry = 3
backend = auto
usedns = warn
destemail = f6k@localhost
sendername = Fail2Ban
sender = fail2ban@localhost

banaction = iptables-multiport
mta = sendmail
protocol = tcp
chain = INPUT

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sms[name=sshd]

Les choses à retenir sont les plages d’IP à ignorer soit, dans notre cas, ce qui concerne notre sous-réseau fourni par wlan0. De plus, concernant le backend, il m’est impossible d’utiliser la journalisation fournie par systemd car la version de fail2ban sous Jessie est trop ancienne — en version 0.8.13-1 au moment de l’écriture de ces lignes. Je reste donc à auto et les logs fournis par rsyslog. Une prison a été mise en place pour les connections SSH. Au bout de trois tentatives infructueuses, l’IP correspondante sera bannie pour 20 minutes et une notification par SMS sera envoyée. Ce dernier point est possible grâce à l’action sms[name=sshd] qui renvoie à /etc/fail2ban/action.d/sms.conf créé pour l’occasion :

[Definition]

actionstart = /home/f6k/g/scripts/free-sms.sh "$(hostname)@$(date +%%m%%d-%%H%%M%%S) fail2ban <name>: The jail has been started successfully."
actionstop = /home/f6k/g/scripts/free-sms.sh "$(hostname)@$(date +%%m%%d-%%H%%M%%S) fail2ban <name>: The jail has been stopped."
actionban = /home/f6k/g/scripts/free-sms.sh "$(hostname)@$(date +%%m%%d-%%H%%M%%S) fail2ban <name>: The IP <ip> has just been banned for 1200 seconds after <failures> attempts."
actionunban = /home/f6k/g/scripts/free-sms.sh "$(hostname)@$(date +%%m%%d-%%H%%M%%S) fail2ban <name>: The IP <ip> has been unbanned."

Il faut d’abord remarquer qu’il est nécessaire d’échapper tous les % par des %. Ensuite chaque action renvoie vers un petit script (free-sms.sh) se chargeant d’envoyer un message grâce aux notifications par SMS de Free. Il ne reste plus qu’à redémarrer le service pour prendre en compte la nouvelle configuration et recevoir, dès lors, un message indiquant qu’une nouvelle prison a été créée avec succès :

$ sudo service fail2ban restart

Pour rester sur les notifications par messages, il est possible d’en recevoir en cas d’authentifications sur le système. Autrement dit, dès que quelqu’un se connecte ou essaye de se connecter sur le système, un SMS sera envoyé. Pour arriver à cela, j’utilise un autre script (pam-notify-login.sh), tout aussi simple et basé sur le premier, qui va se charger de l’envoi du message dès qu’une authentification — par SSH, su, etc. — sera faite avec succès. L’idée est simplement de rajouter une règle à PAM à la fin du fichier /etc/pam.d/common-session afin de lui donner le chemin vers le script :

session    optional     pam_exec.so    /home/f6k/g/scripts/pam-notify-login.sh

Dans un second temps nous souhaitons recevoir des notifications dès que quelqu’un essaye de se connecter sans succès. Pour cela un second script (pam-notify-failauth.sh) va être utilisé et le fichier /etc/pam.d/common-auth doit être modifié pour ressembler à ceci :

auth    [success=2 default=ignore]    pam_unix.so nullok_secure
auth    optional                      pam_exec.so /home/f6k/g/scripts/pam-notify-failauth.sh
auth    requisite                     pam_deny.so
auth    required                      pam_permit.so

Ce que font ces lignes est assez simple. En cas d’authentification réalisée avec succès, il va sauter les deux modules pam_exec.so et pam_deny.so pour arriver à la quatrième ligne et laisser l’utilisateur rentrer. Au contraire, en cas d’échec, les lignes 2 et 3 seront prises en compte, c’est-à-dire que le script permettant l’envoi du message sera executé et l’accès refusé. Je réponds d’emblée ici à une question possible : pourquoi ne pas mettre aussi un appel au script pam-notify-login.sh en cas de succès dans ce fichier common-auth ? Simplement parce que ce dernier concerne toutes les authentifications et je ne souhaite être informé des authentifications réalisées avec succès que pour les services comme SSH, su, etc. mais pas pour sudo par exemple (vous pouvez faire un grep common-session /etc/pam.d/* pour voir quels services sont concernés).

Préserver la durée de vie de la carte SD

Les cartes SD ont un cycle d’écriture limité. Il est donc important d’écrire le moins possible. Or les systèmes d’exploitation ont une grande capacité à écrire régulièrement tout un tas de choses dont, par exemple, les journaux d’activités — cela réduisant d’autant plus la durée de vie de la carte. Aussi il s’agit ici de déporter certains dossiers où le système y écrit beaucoup dans la mémoire vive. Cela a pas mal d’avantages mais aussi quelques inconvénients. Pour ma part, j’ai décidé de mettre trois dossiers en mémoire vive en éditant le fichier /etc/fstab de la manière suivante :

tmpfs /tmp tmpfs defaults,noatime,nosuid,size=10m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=10m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=15m 0 0

Idéalement il faudrait mettre tout /var sur un autre disque pour préserver la carte SD car c’est ce répertoire qui sert pour tout ce qui est fichiers variables et temporaires (donc où des écritures sont effectuées, pour certaines parfois quotidiennement).

Partage de fichiers et stockage réseau

Habituellement dans un environnement UNIX, j’ai coutume d’utiliser le très pratique NFS pour tout ce qui est partage de fichiers en réseau. Malheureusement Windows 10 ne permet pas simplement de se connecter à un serveur NFS — à moins d’avoir une version entreprise ou ultimate ou de débourser une certaine somme afin d’acquérir une application propriétaire. C’est pourquoi pour accéder notamment à mon disque dur branché en USB sur le Raspberry depuis mon ordinateur portable, je me tourne simplement vers SMB/CIFS grâce à Samba. L’opération va donc consister à installer le serveur en question et configurer les dossiers de partage de telle sorte qu’ils ne soient accessibles que pour des utilisateurs authentifiés. Commençons par installer Samba :

$ sudo apt-get install samba

Ensuite nous allons modifier le fichier /etc/samba/smb.conf de la façon suivante :

[global]
   workgroup = STUDYGRP
   dns proxy = no
   log file = /var/log/samba/log.%m
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes

;[homes]
;   comment = Home Directories
;   browseable = no
;   read only = yes
;   create mask = 0700
;   directory mask = 0700
;   valid users = %S
;   guest ok = no

[Private]
   comment = Default private shared folder
   read only = no
   locking = no
   path = /home/f6k/p
   guest ok = no

Dans la section [global] je n’ai pris soin que de modifier le workgroup en accord avec celui défini sur ma machine Windows (attention à la casse) ; tout le reste de la section est ce qu’il y a par défaut dans le fichier d’origine. Ensuite j’ai commenté tout ce qui concerne la section [homes] car je ne souhaite pas partager la totalité du répertoire /home de l’utilisateur que je vais ajouter. Par contre j’ai créé une nouvelle section [Private] contenant le dossier que je souhaite partager, en y permettant l’accès en lecture et en écriture et en refusant les accès invités. L’on peut ajouter autant de section que l’on veut vers des dossiers différents ; dans mon cas, j’ai aussi rajouté une section pour le point de montage de mon disque dur branché en USB.

Ainsi configuré, le serveur ne peut souffrir de connections d’utilisateurs invités, c’est-à-dire non authentifiés. C’est le comportement désiré dans mon cas. Ceci étant dit, il faut avoir conscience que SMB/CIFS n’est pas ce qu’il y a de plus réputé question sécurité mais, malgré tout, je ne veux pas que n’importe qui puisse parcourir ces dossiers même si, avant d’arriver là, un intrus devrait avant passer iptable ou casser mon accès Wi-Fi. Nous allons donc rajouter un utilisateur à Samba (utilisateur qui doit exister dans /etc/passwd) et lui attribuer un mot de passe spécifique pour se connecter :

$ sudo smbpasswd -a f6k

Ceci étant fait, notez qu’il est possible de lister les utilisateurs avec la commande suivante :

$ sudo pdbedit -w -L

Pour terminer, il ne reste plus qu’à redémarrer le service :

$ sudo service smbd restart

Références

Voici les différentes références qui m’ont aidé dans la configuration de Raspbian et l’écriture de ce fichier :