« Samba » : différence entre les versions

De wikilivois
Aller à la navigationAller à la recherche
Aucun résumé des modifications
 
(23 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Category:Applications]]
[[Category:Applications]]


Ce manuel explique la configuration samba pour partager des fichiers sur un réseau local.
Cette page explique la configuration samba pour partager des fichiers sur un réseau local.




==Configuration du serveur==
=Configurer le serveur samba=
Il faut installer le paquetage samba et disposer des droits d'administration.


La configuration du serveur Samba s’écrit dans le fichier <tt>/etc/samba/smb.conf</tt>.
La configuration du serveur Samba s’écrit dans le fichier '''<tt>/etc/samba/smb.conf</tt>'''.  
La commande <tt>testparm</tt> permet de vérifier la validité et le contenu de la configuration de <tt>smb.conf</tt>. 
La commande <tt>grep</tt> permet de vérifier la configuration de paramètres précis :
#testparm | grep security
:Les lignes peuvent être commentées par un point-virgule (;) ou dièse (#) devant la ligne.


Le fichier se décompose en une section « global »  définissant les paramètres généraux suivie de sections pour chaque partage.
Le fichier se décompose en une section « global »  définissant les paramètres généraux suivie de sections pour chaque partage.


===La section [global]===
==La section [global]==
<blockquote class=note>
Pour éviter quelques problèmes, retenez que :
* La casse doit impérativement être respectée en ce qui concerne le nom de domaine. Par exemple "WORKGROUP" ne sera pas considéré de la même manière que "workgroup".
* Le nom de la machine ne doit pas dépasser 16 caractères pour être visible quand on parcourt le réseau, le nom de la machine (serveur) qui partage un dossier ne doit pas dépasser 15 caractères (et ne peut contenir que des lettres non accentuées, chiffres et signes -).
 
Sinon elle sera accessible uniquement par son adresse IP (et donc invisible autrement).
</blockquote>
 
 
<licode file=/etc/samba/smb.conf>
<licode file=/etc/samba/smb.conf>
[global]
[global]
netbios name=asteroide
  netbios name = ordi-passage
workgroup=WORKGROUP
  workgroup = WORKGROUP
security=user
  log file=/var/log/samba/log.%m
log file=/var/log/samba/log.%m
  log level=1
log level=1
encrypt passwords=yes
hosts allow = 127. 192.168.10.
</licode>
</licode>


L’exemple de configuration ci-dessus définit :
L’exemple de configuration ci-dessus définit :
* le nom netbios du serveur
* le nom netbios du serveur
* le nom du domaine ou groupe de travail
* le nom du domaine ou groupe de travail - le plus simple est de laisser WORKGROUP, le domaine proposé par défaut par Windows.
* le type d’authentification utilisé. Il existe trois types user, share et server.
<blockquote>
Au cours d’une authentification « user », le client commence la session en envoyant un login et un mot de passe.
Le serveur accepte (ou refuse) en fonction de l’adéquation login/password et du nom de machine du client.
Le client peut alors monter tous les partages sans mot de passe supplémentaire.
 
L’ authentification « share » force le client a donner un mot de passe à chaque fois qu’il veut monter un partage.
 
L’authentification « server » est intéressante pour joindre le serveur à un domaine.  
Le client donne son login/mot de passe au serveur de fichiers qui s’en sert pour vérifier l’authentification auprès d’un serveur distant (ex PDC).
</blockquote>
 
* la destination du fichier de logs (ici un fichier par machine d’où le %m)
* la destination du fichier de logs (ici un fichier par machine d’où le %m)
* le niveau de debuggage désiré dans les logs (de 0 à 10)
* le niveau de debuggage désiré dans les logs (de 0 à 10)
* le cryptage des mots de passe
* le fichier de mot de passe
* l’option hosts allow permet de limiter les connexions à certaines adresses IPs.


Le manuel (<tt>man smb.conf</tt>) donne un description précise de chaque paramètre. On y trouve aussi la définition des variables utilisées par <tt>smb.conf</tt> :
Le manuel (<tt>'''man smb.conf'''</tt>) donne un description précise de chaque paramètre. On y trouve aussi la définition des variables utilisées par <tt>smb.conf</tt> :
* %m nom netbios de la machine qui se connecte
* %m nom netbios de la machine qui se connecte
* %L nom netbios du serveur
* %L nom netbios du serveur
Ligne 54 : Ligne 42 :
* %v numéro de version Samba
* %v numéro de version Samba


====Le fichier de mot de passe====
==La section [homes]==
Le plus simple pour samba est d'utiliser la base d'authentification - utilisateur et machine - TDB (trivial database).
:Le partage <tt>[homes]</tt> correspond au partage propre à chaque utilisateur qui correspond à son répertoire personnel définit dans <tt>/etc/password</tt>.  
L'utilisation de cette base est recommandée pour les systèmes qui n'ont pas besoin d'authentification LDAP, avec moins de 250 utilisateurs.


<licode file=/etc/samba/smb.conf>
<licode file=/etc/samba/smb.conf>
passdb backend = tdbsam
[homes]
  guest ok=no
  read only=no
</licode>
</licode>
Le partage n’autorise pas l’accès aux invités et peut être utilisé en écriture.


Pour connaître la liste des utilisateurs, taper:
==Les partages « classiques »==
#pdbedit -w -L
Il s'agit de donner accès à un partage déterminé.


===Les autres sections===
Ici, nous créons un partage nommé "échange" qui donnera accès au répertoire /srv/samba/echange.
Elles correspondent à différents types de partages
Ce répertoire devra bien sûr avoir été créé préalablement.


[netlogon] est utile pour une configuration en PDC
<licode file=/etc/samba/smb.conf>
 
[echange]
[home] définit automatiquement les répertoires utilisateurs (cf serveur de fichiers)
  browseable=Yes
 
  path=/srv/samba/echange
[partage] définit tous les autres partages (cf serveur de fichiers)
  writeable=yes
 
  create mask=0660
==Commandes de vérification==
  directory mask=0770
===Commandes Linux===
Chercher une machine samba sur l’adresse 127.0.0.1:
#nmblookup –U 127.0.0.1 __SAMBA__
 
Rechercher sur tout le réseau local :
#nmblookup –B 192.168.10.255 __SAMBA__
 
Lister les partages :
#smbclient  –L \\serveur
 
Se connecter à un partage avec l’utilisateur user :
#smbclient \\serveur\partage –U user
 
La commande smbmount monte les partages :
#smbmount //serveur/partage /mnt/partage –o ip=192.168.10.1, username=user
 
====smbmount====
smbmount //asteroide/Bureau /mnt/smb -o ip=192.168.111.1,username=chris
smbmount //asteroide/Bureau /home/chris/smb/
smbclient //asteroide/Bureau -U chris -I 192.168.111.1
 
Avec smbfs dans fstab:
<licode file=/etc/fstab>
//home/chris    /mnt/home_chris smbfs  user,auto,rw,uid=chris,credentials=.home.cre 0 0
//home/data    /mnt/data      smbfs  user,exec,gid=users,credentials=.home.cre,codepage=cp850,iocharset=iso8859-15,debug=4 0 0
</licode>
ou avec cifs :
<licode file=/etc/fstab>
//home/usbdisk  /mnt/usbdisk cifs  user,exec,gid=users,credentials=.home.cre,iocharset=iso8859-15 0 0
</licode>
</licode>


<blockquote>Attention cifs utilise le dns pour retrouver home</blockquote>
Il est nécessaire de configurer les droits du répertoire de partage.
Les utilisateurs du partage doivent appartenir à un même groupe. Nous utiliserons ici le groupe ''sambashare'' qui existe déjà.
# sudo chgrp -R sambashare /srv/samba/echange/
# chmod 2770 /srv/samba/echange/


<licode file=.home.cre>
Ici, tous les utilisateurs du groupe ''sambashare'' auront le droit en écriture sur notre répertoire d'échange.
username=xxx
password=xxx
</licode>


===Commandes Windows===
==Vérifier la validité de la configuration==


<tt>#nbtstat –A 192.168.10.12</tt> donne les noms netbios enregistrés par une adresse IP
La commande <tt>'''testparm'''</tt> permet de vérifier la validité et le contenu de la configuration de <tt>smb.conf</tt>.


<tt>#net view</tt> donne les serveurs de fichiers sur le réseau
==Lancer samba==
#sudo service smbd start


<tt>#net view \\serveur</tt> donne les partages disponibles sur une machine
=Créer et activer les utilisateurs=
Les utilisateurs doivent avoir un compte samba en plus de leur compte Linux habituel.


<tt>#net use h: \\serveur\partage /user:chris</tt> connecte un partage au lecteur réseau H:
Il faut d'abord créer le compte samba:


<tt>#net use * /d</tt> déconnecte tous les partages.
#sudo smbpasswd -a <login_utilisateur>
New SMB password: <mot_de_passe>
Retype new SMB password: <mot_de_passe>
Added user <login_utilisateur>.


=Création des utilisateurs=
puis l'activer:
Nous supposons qu'il n'y a pas de contrôleur de domaine (PDC).


Il faut créer un compte Unix et un compte samba par utilisateur :
  #sudo smbpasswd -e <login_utilisateur>
  #adduser utilisateur
  Enabled user <login_utilisateur>.
  #smbpasswd –a utilisateur


:L’option –a permet de rajouter le mot da passe utilisateur au fichier <tt>smbpasswd</tt>.


Il ne faut pas oublier de créer le <tt>« home »</tt> de l’utilisateur avec les bons droits :
Pour connaître la liste des utilisateurs créés, taper:
  #mkdir /home/utilisateur
  #sudo pdbedit -w -L
#chown utilisateur.public /home/utilisateur -R


:L’utilisateur correspond à son « login » et le groupe public, correspond au groupe de partage.
=Commandes de vérification=
  #ls -l
==Commandes Linux==
Chercher une machine samba sur l’adresse 127.0.0.1:
  #nmblookup  ORDI-PASSAGE __SAMBA__


  drwxr-xr-x    3 cdelivois InterAct    4096 Dec 19 18:57 cdelivois
Lister les partages :
  #smbtree


=Configuration de partages =
Se connecter à un partage avec l’utilisateur user :
==Le partage [homes]==
#smbclient -U <login_utilisateur> //ORDI-PASSAGE/echange
:Le partage <tt>[homes]</tt> correspond au partage propre à chaque utilisateur qui correspond à son répertoire personnel définit dans <tt>/etc/password</tt>.


<licode file=/etc/samba/smb.conf>
Voir le statut de samba:
[homes]
#sudo smbstatus
guest ok=no
read only=no
</licode>
Le partage n’autorise pas l’accès aux invités et peut être utilisé en écriture.


==Les partages « classiques »==
La commande smbmount monte les partages :
<licode file=/etc/samba/smb.conf>
#smbmount //ORDI-PASSAGE/echange /mnt/partage –o ip=<ip_du_serveur_samba>, username=<login_utilisateur>
[Assistante]
browseable=Yes
path=/home/assistante
invalid users = root
valid users = cdelivois,struttet
writeable=yes
create mask=0660
directory mask=0770
</licode>


=Création des répertoires=
==Commandes Windows==
Il faut créer les répertoires avec les bons droits. Par exemple pour le répertoire « films » :
#mkdir /home/films
#chown root.public /home/films
#chmod 770 /home/films


<blockquote class=note>
<tt>#nbtstat –A <adresse_ip></tt> donne les noms netbios enregistrés par une adresse IP
'''Remarque :''' Tous les utilisateurs doivent faire partie du même groupe (public en l’occurrence). Ils pourront alors accéder par l’explorateur windows aux fichiers du répertoire assistante s’ils sont référencés dans la ligne « valid users ».
</blockquote>
<blockquote class=warning>
'''Attention''', cela veut dire que si ces utilisateurs ont un accès telnet ou ssh au système, ils peuvent récupérer tous les documents auxquels ils n’ont pas accès par l’explorateur.
Si l’accès ssh est requis pour tous, le seul moyen est de créer un groupe d’accès par répertoire.
</blockquote>


:Pour inscrire un utilisateur dans un groupe, il suffit d’éditer le fichier <tt>/etc/group</tt> et de mettre l’utilisateur, à la fin de la ligne. Ex :
<tt>#net view</tt> donne les serveurs de fichiers sur le réseau
<licode file=/etc/group>
films::500:you,me
</licode>


==Permissions==
<tt>#net view \\serveur</tt> donne les partages disponibles sur une machine


=Paramètres avancés=
<tt>#net use h: \\serveur\partage /user:chris</tt> connecte un partage au lecteur réseau H:
<licode file=/etc/samba/smb.conf>
hide unreadable = Yes
cache les fichiers qui ne sont pas accessibles
veto files =/*.exe/*.dll/*.com/*.vbs/*.{*}/
hide files = /fichieracacher.txt/*.test/


veto oplock files = /*.mdb/*.MDB/
<tt>#net use * /d</tt> déconnecte tous les partages.
</licode>
:Op lock veut dire « Opportunist locking » : le client peut télécharger un fichier et le mettre en cache sur son disque dur pendant qu’il le modifie.  Si un deuxième client veut accéder au fichier, le premier client est averti et met à jour la version sur le serveur. Cela améliore les performances mais l’oplock ne doit pas être utilisé lors de l’utilisation à plusieurs d’une base de données. Les oplocks peuvent être désactivés par les options oplocks et level2oplocks.  


Autoriser la commande NET TIME \\SERVERNAME /SET /YES qui synchronise l’horloge client sur l’horloge du serveur.
=Synchronisation des mots de passe Unix / Samba=
<licode>time server = Yes</licode>
* https://www.debian-fr.org/t/resolu-samba-mots-de-passe-synchronises/17838/6


Optimiser les performances du serveur avec <tt>socket options</tt>.
Depuis la version 4.4 de samba, le code de libpam-smbpass qui n'était plus maintenu a été retiré<ref>https://lists.samba.org/archive/samba-cvs/2015-October/111473.html</ref><ref> https://serverfault.com/questions/871608/synchronise-samba-4-4-passwords-with-the-unix-password-database</ref>.
<licode>socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192</licode>


=Problèmes rencontrés=
Une des pistes semble être de configurer samba en contrôleur de domaine.
Le fichier <tt>docs/textdocs/DIAGNOSIS.TXT</tt> livré avec les sources de Samba permet de diagnostiquer les problèmes les plus courants.


=Liens utiles=
=Liens utiles=
* https://doc.ubuntu-fr.org/samba
* https://doc.ubuntu-fr.org/samba
* https://doc.ubuntu-fr.org/system-config-samba
* https://doc.ubuntu-fr.org/system-config-samba
* https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server
* https://www.samba.org/samba/docs/
* https://www.samba.org/samba/docs/
==Références==
<references />




{{Copy|2019|Christophe de Livois|FDL}}
{{Copy|2019|Christophe de Livois|FDL}}

Version actuelle datée du 29 septembre 2019 à 19:48


Cette page explique la configuration samba pour partager des fichiers sur un réseau local.


Configurer le serveur samba

Il faut installer le paquetage samba et disposer des droits d'administration.

La configuration du serveur Samba s’écrit dans le fichier /etc/samba/smb.conf.

Le fichier se décompose en une section « global » définissant les paramètres généraux suivie de sections pour chaque partage.

La section [global]

Pour éviter quelques problèmes, retenez que :

  • La casse doit impérativement être respectée en ce qui concerne le nom de domaine. Par exemple "WORKGROUP" ne sera pas considéré de la même manière que "workgroup".
  • Le nom de la machine ne doit pas dépasser 16 caractères pour être visible quand on parcourt le réseau, le nom de la machine (serveur) qui partage un dossier ne doit pas dépasser 15 caractères (et ne peut contenir que des lettres non accentuées, chiffres et signes -).

Sinon elle sera accessible uniquement par son adresse IP (et donc invisible autrement).


<licode file=/etc/samba/smb.conf> [global]

 netbios name = ordi-passage 
 workgroup = WORKGROUP
 log file=/var/log/samba/log.%m
 log level=1

</licode>

L’exemple de configuration ci-dessus définit :

  • le nom netbios du serveur
  • le nom du domaine ou groupe de travail - le plus simple est de laisser WORKGROUP, le domaine proposé par défaut par Windows.
  • la destination du fichier de logs (ici un fichier par machine d’où le %m)
  • le niveau de debuggage désiré dans les logs (de 0 à 10)

Le manuel (man smb.conf) donne un description précise de chaque paramètre. On y trouve aussi la définition des variables utilisées par smb.conf :

  • %m nom netbios de la machine qui se connecte
  • %L nom netbios du serveur
  • %u nom de l’utilisateur du partage
  • %U nom de session de l’utilisateur sur le serveur
  • %v numéro de version Samba

La section [homes]

Le partage [homes] correspond au partage propre à chaque utilisateur qui correspond à son répertoire personnel définit dans /etc/password.

<licode file=/etc/samba/smb.conf> [homes]

 guest ok=no
 read only=no

</licode> Le partage n’autorise pas l’accès aux invités et peut être utilisé en écriture.

Les partages « classiques »

Il s'agit de donner accès à un partage déterminé.

Ici, nous créons un partage nommé "échange" qui donnera accès au répertoire /srv/samba/echange. Ce répertoire devra bien sûr avoir été créé préalablement.

<licode file=/etc/samba/smb.conf> [echange]

 browseable=Yes
 path=/srv/samba/echange
 writeable=yes
 create mask=0660
 directory mask=0770

</licode>

Il est nécessaire de configurer les droits du répertoire de partage. Les utilisateurs du partage doivent appartenir à un même groupe. Nous utiliserons ici le groupe sambashare qui existe déjà.

# sudo chgrp -R sambashare /srv/samba/echange/
# chmod 2770 /srv/samba/echange/

Ici, tous les utilisateurs du groupe sambashare auront le droit en écriture sur notre répertoire d'échange.

Vérifier la validité de la configuration

La commande testparm permet de vérifier la validité et le contenu de la configuration de smb.conf.

Lancer samba

#sudo service smbd start

Créer et activer les utilisateurs

Les utilisateurs doivent avoir un compte samba en plus de leur compte Linux habituel.

Il faut d'abord créer le compte samba:

#sudo smbpasswd -a <login_utilisateur>
New SMB password: <mot_de_passe>
Retype new SMB password: <mot_de_passe>
Added user <login_utilisateur>.

puis l'activer:

#sudo smbpasswd -e <login_utilisateur>
Enabled user <login_utilisateur>.


Pour connaître la liste des utilisateurs créés, taper:

#sudo pdbedit -w -L

Commandes de vérification

Commandes Linux

Chercher une machine samba sur l’adresse 127.0.0.1:

#nmblookup  ORDI-PASSAGE __SAMBA__ 

Lister les partages :

#smbtree

Se connecter à un partage avec l’utilisateur user :

#smbclient -U <login_utilisateur> //ORDI-PASSAGE/echange

Voir le statut de samba:

#sudo smbstatus

La commande smbmount monte les partages :

#smbmount //ORDI-PASSAGE/echange /mnt/partage –o ip=<ip_du_serveur_samba>, username=<login_utilisateur>

Commandes Windows

#nbtstat –A <adresse_ip> donne les noms netbios enregistrés par une adresse IP

#net view donne les serveurs de fichiers sur le réseau

#net view \\serveur donne les partages disponibles sur une machine

#net use h: \\serveur\partage /user:chris connecte un partage au lecteur réseau H:

#net use * /d déconnecte tous les partages.

Synchronisation des mots de passe Unix / Samba

Depuis la version 4.4 de samba, le code de libpam-smbpass qui n'était plus maintenu a été retiré[1][2].

Une des pistes semble être de configurer samba en contrôleur de domaine.

Liens utiles

Références


Copyright

© 2019 Christophe de Livois

Tête de GNU Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL.