
====== Partage de fichiers sous Linux avec SAMBA ======

===== Installer le serveur Samba =====
<code bash>
sudo yum install samba</code>

===== Paramétrer =====

Samba utilise la configuration présente dans le fichier ''/etc/samba.smb.conf''.
A chaque modification il sera nécessaire de redémarrer le service Samba pour que les modifications soient prises en compte :

<code bash>
sudo service smb restart
</code>

==== Configuration générale ====

<WRAP round box>
Ci-dessous, un exemple de configuration de paramétrage du service, de manière globale.
<code ini>
[global]
        workgroup = workgroup
        netbios name = srv05
        server string = serveur $h (Samba %v, Fedora)
        log file = /var/log/samba/log.%m
        max log size = 50
        hide files = /lost+found/
        dns proxy = no
        security = USER
</code>

L'option ''security = USER'' impose deux choses que nous allons traiter ci-dessous :
  - avoir un compte Linux
  - avoir un compte Samba
Les utilisateurs des dossiers partagés auront un groupe commun : ''sambausers''
</WRAP>

<WRAP round box>
__Créer un groupe__

Dans cet exemple, je créé un groupe nommé ''sambausers''.
<code>
sudo groupadd sambausers
</code>
</WRAP>

<WRAP round box>
__Créer un compte Linux__

On peut créer un compte utilisateur qui n'a pas besoin ni de se connecter à un shell, ni avoir un dossier de travail personnel. Prenons l'exemple de ''fanny'' :
<code>
sudo useradd --s /bin/false -d /dev/null -g sambausers fanny
</code>

On remarquera que le shell se nomme ''/bin/false'' et le dossier personnel pointe vers ''dev/null''.
</WRAP>



<WRAP round box>
__Ajouter un utilisateur à un groupe__

Si l'utilisateur ''Jean'' a déjà un compte Linux, on pourra lui ajouter le groupe ''sambausers'' grâce à la commande ''usermod''.
<code>
sudo usermod -aG sambausers jean
</code>
</WRAP>


<WRAP round box>
__Création d'un utilisateur Samba__

Avec l'option ''USER'', les utilisateurs Linux doivent avoir un compte Samba. On utilise la commande ''pdbedit''.
<code>
sudo pdbedit -a jean
</code>

On peut également utiliser la commande ''smbpasswd'' pour gérer uniquement les mots de passe. Par exemple :
<code>
sudo smbpasswd -a jean
sudo smbpasswd -e jean
</code>
</WRAP>


==== Configuration spécifique : partage de dossier ====

<WRAP round box>
Pour créer un dossier partagé sous Linux, il faut ajouter une section dans le fichier ''/etc/samba/smb.conf''.

<code ini>
[media]
        browsable = yes
        comment = Disques DATA partages
        path = /media
        writable = yes
        create mask = 0765
        hosts allow = 127.0.0.1 192.168.100.0/24
        valid users = @sambausers
</code>

Dans cet exemple :
| [media] | Le partage va s'appeler **media**  |
| comment = Disques DATA partages| Permet d'afficher des commentaires \\ {{informatique:cfp:installer_un_serveur_de_partage_de_fichiers:samba_apercu_windows.png?nolink|}} |
| path = /media | Chemin d'accès au dossier sur le serveur Linux  |
| writable = yes  |   |
| create mask = 0765 |   |
| hosts allow = 127.0.0.1 192.168.100.0/24  |   |
| valid users = @sambausers  | Tous les utilisateurs ayant le groupe ''sambausers'' pourront utiliser cette ressource.  |

</WRAP>
===== Appliquer les modifications de configuration =====

A chaque modification de la configuration SAMBA, par le fichier ''/etc/samba/smb.conf'', il faut tester le configuration et appliquer les changements au service.
<code>
testparm -s
sudo service smb restart
</code>


===== Modifier le parfeu =====

Ne pas oublier de modifier le parfeu afin qu'il accepte les connexions entrantes pour le service Samba : 139, 445, 137 et 138.

Radicalement, on peut également désactiver le parfeu :
<code>
sudo systemctl stop firewalld.service
</code>

===== Automatiser le démarrage du service Samba =====

Il faut automatiser le démarrage du service Samba au démarrage de l'ordinateur. Utiliser le Service Configuration (system-config-services).

===== Samba Client - l'utilitaire client=====


<WRAP round box>
__Lister les ressources disponibles__
<code>
smbclient -L //localhost -U fanny
</code>
</WRAP>

<WRAP round box>
__Se connecter à une ressource__
<code>
smbclient //localhost/media -U fanny
</code>
</WRAP>
