« Samba » : différence entre les versions

De Wiki doc

(Page créée avec « Category:Service partage Samba est une implémentation libre des protocoles SMB/CIFS de Microsoft. Il est utilisé pour mettre à disposition des ressources sur un ré... »)
 
(Suppression du support de SMB < 3 (Windows 7 et inférieur) + ajout de la commande permettant de lister les utilisateurs Samba + suppression de la dernière référence à smbfs.)
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
[[Category:Service partage]]
[[Category:Service partage]]
Samba est une implémentation libre des protocoles SMB/CIFS de Microsoft. Il est utilisé pour mettre à disposition des ressources sur un réseau local et il comprend l'usage d'une [https://fr.wikipedia.org/wiki/Samba_(informatique)#Fonctionnalit%C3%A9s dizaine de services ainsi que d'une douzaine de protocoles]. Il permet entre autre les usages suivants:
Samba est une implémentation libre des protocoles SMB/CIFS de Microsoft. Il est utilisé pour mettre à disposition des ressources sur un réseau local et il comprend l'usage d'une [https://fr.wikipedia.org/wiki/Samba_(informatique)#Fonctionnalit%C3%A9s dizaine de services ainsi que d'une douzaine de protocoles]. Il permet entre autre les usages suivants:
* Partage de fichiers
* Partage de fichiers
Ligne 57 : Ligne 58 :
#force user = nobody
#force user = nobody
#force group = nogroup
#force group = nogroup
server min protocol = SMB3
min protocol = SMB3


name resolve order = lmhosts wins bcast host
name resolve order = lmhosts wins bcast host
Ligne 138 : Ligne 141 :
</source>
</source>


Comme nous pouvons le constater, un partage est défini par une section commençant par son nom entre crochets. Les accents sont supportés (pour le montage dans fstab, il faut utiliser [[#fstab|la syntaxe décrite plus bas]]) et il est possible de définir des paramètres personnalisés à chacun d'eux.
Comme nous pouvons le constater, un partage est défini par une section commençant par son nom entre crochets. Les accents sont supportés (pour le montage dans fstab, il faut utiliser [[fstab#Accents_dans_le_fstab|la syntaxe décrite dans le document dédié]]) et il est possible de définir des paramètres personnalisés à chacun d'eux.


{{Attention|Il faut bien penser à créer les répertoires des partages pour que le démon puisse s'exécuter correctement.}}
{{Attention|Il faut bien penser à créer les répertoires des partages pour que le démon puisse s'exécuter correctement.}}
Ligne 183 : Ligne 186 :


''Note: on peut aussi ce référer au [https://www.samba.org/samba/docs/current/man-html/smbpasswd.8.html manuel de la commande].''
''Note: on peut aussi ce référer au [https://www.samba.org/samba/docs/current/man-html/smbpasswd.8.html manuel de la commande].''
'''Lister les utilisateurs'''
pdbedit -L -v
''Note: le '''-L''' permet de lister et le '''-v''' affiche des détails. Source [https://superuser.com/questions/271034/list-samba-users ici].''


=Droits POSIX=
=Droits POSIX=
Ligne 213 : Ligne 221 :
On peut par exemple monter le volume ''Partage'' en tant qu'utilisateur ''toto'' avec les droits de ''titi'':
On peut par exemple monter le volume ''Partage'' en tant qu'utilisateur ''toto'' avec les droits de ''titi'':


  mount -t smbfs -o username="toto",password="SonMotDePasse",uid=1001,gid=1001 //192.168.170.178/Partage
  mount -t cifs -o username="toto",password="SonMotDePasse",uid=1001,gid=1001 //192.168.170.178/Partage


====fstab====
====fstab====
Le fichier de montage automatique au démarrage n'est pas en reste puisque les partages Samba peuvent également en faire partie. Une syntaxe particulière doit être utilisée pour les noms de partages comportant des accents.
Le [[Fstab#Samba|fichier de montage automatique au démarrage]] n'est pas en reste puisque les partages Samba peuvent également en faire partie. Une syntaxe particulière doit être utilisée pour les noms de partages comportant des accents.
 
//192.168.170.178/partage/ /media/partage cifs rw,user,iocharset=utf8,username=toto,password=SonMotDePasse,uid=1000,gid=1000,file_mode=0755,dir_mode=0755
 
Pour des partage avec accent, il faut les noter sous forme octale. Une valeur octale doit toujours être égale à 3 caractères, si il y a un 0 à 040 (pour l'espace) c'est par ce que le code 40 (qui correspond à l'espace) ne respecte pas cette règle (on ajoute donc un 0).
 
Dans le cas où l'on veux mettre un caractère accentué ''é'' (qui a comme code octal 0303 0251) il faut respecter la règle des 3 caractères en supprimant le 0 devant chaque octet et en les collant avec un échappement sur chacun d'eux comme ceci:
 
/home/toto/Film/ /home/titi/Vid\303\251os/ none bind 0 0
 
Ces éléments sont décrits dans [https://www.commentcamarche.net/forum/affich-31313237-fstab-repertoire-avec-accent ce post] et provenant de [http://forum.ubuntu-fr.org/viewtopic.php?id=349769 cette source], le script perl [https://www.fourmilab.ch/webtools/unum/download/unum.tar.gz unum.pl] (disponible dans [https://{{SERVERNAME}}/fichiers/programmation/perl/scripts/unum/unum.tar.gz nos fichiers]) permet de trouver le code octal d'un caractère donné.


===Sous Windows===
===Sous Windows===

Version du 14 août 2020 à 09:55


Samba est une implémentation libre des protocoles SMB/CIFS de Microsoft. Il est utilisé pour mettre à disposition des ressources sur un réseau local et il comprend l'usage d'une dizaine de services ainsi que d'une douzaine de protocoles. Il permet entre autre les usages suivants:

  • Partage de fichiers
  • Partage d'imprimantes
  • Service Active Directory comprenant une version modifiée de:
    • Kerberos
    • LDAP
  • NetBIOS sur TCP/IP (NBT)
  • Protocole d'appel distant DCE/RPC, MSRPC
  • Serveur WINS aussi appelé NetBIOS Naming Service (NBNS)
  • Les protocoles d'un domaine NT:
    • L'ouverture d'une session NT
    • Une base de données Security Account Manager (SAM)
    • Un service Local Security Authority (LSA)
    • Un service d'impression (Spoolss)
    • NTLM

Le gros plus de cette solution étant sont extrême interopérabilité tant de plateformes que de régions linguistiques puisque géré par les systèmes Linux, BSD, Mac OS X et Windows avec un support des encodages UTF-8.

Ce projet est rendu possible par un accord d'information technique signé par Microsoft le 20 décembre 2007 faisant suite à un procès perdu contre l'Union européenne.

INFORMATION

Cette documentation se base sur une Linux Debian 9.

Ports utilisés:

  • 137 udp
  • 138 udp
  • 138 tcp
  • 139 tcp

Installation

apt install samba 

Configuration

Nous allons partir d'un fichier vierge. Il faut donc renommer l'ancien pour ne pas qu'il soit utilisé

mv /etc/samba/smb.conf /etc/samba/smb.conf.old

Création d'un nouveau fichier

vim /etc/samba/smb.conf
[global]
server string = SAMBA-YCHARBI
workgroup = LAB
netbios name = SAMBA-YCHARBI
public = yes
encrypt passwords = true
guest ok = yes
map to guest = Bad User
dos charset = CP850
unix charset = UTF8
unix extensions = no
time server = yes
log file = /var/log/samba/log.%m
log level = 2
#Valeur en KB
max log size = 500
#force user = nobody
#force group = nogroup
server min protocol = SMB3
min protocol = SMB3

name resolve order = lmhosts wins bcast host

[Musiques]
path = /home/toto/Musiques
public = yes
read only = yes
writeable = no
browseable = yes
valid users = toto, titi, nobody
comment = Mes musiques

[Documentation]
path = /home/toto/Documentation
public = no
read only = yes
writeable = no
browseable = yes
valid users = toto
#force user = toto
#force group = toto
comment = Ma documentation

[Programmation]
path = /home/toto/Programmation
public = no
read only = yes
writeable = no
browseable = yes
valid users = toto
comment = Mes programmes

[Vidéos]
path = /home/toto/Vidéos
public = yes
read only = yes
writeable = no
browseable = yes
valid users = toto, titi, nobody
comment = Mes vidéos

[Logiciels]
path = /home/toto/Logiciels
public = yes
read only = no
writeable = yes
browseable = yes
valid users = toto, titi, nobody
comment = Mes logiciels

[Partage]
path = /home/toto/Partage
public = yes
read only = no
writeable = yes
browseable = yes
valid users = toto, titi, nobody
comment = Partage commun
#create mask = 0777
#force user = nobody
#force group = nogroup

[Windows]
path = /home/toto/Windows
public = yes
read only = yes
writeable = no
browseable = yes
valid users = toto, nobody
comment = Installation de Windows

[Titi]
path = /home/titi
public = no
read only = no
writeable = yes
browseable = yes
valid users = titi
comment = Fichiers de Titi

Comme nous pouvons le constater, un partage est défini par une section commençant par son nom entre crochets. Les accents sont supportés (pour le montage dans fstab, il faut utiliser la syntaxe décrite dans le document dédié) et il est possible de définir des paramètres personnalisés à chacun d'eux.

ATTENTION

Il faut bien penser à créer les répertoires des partages pour que le démon puisse s'exécuter correctement.

Redémarrer le démon

systemctl restart smbd.service

Création d'un utilisateur

Pour qu'un utilisateur puisse accéder aux partages, il faut qu'il existe au préalable en tant qu'utilisateur POSIX et SAMBA. Nous désactiverons la possibilité de connexion POSIX et définirons un mot de passe dédié aux seuls utilisateurs SAMBA (afin qu'une connexion sur le shell du serveur soit impossible par ce biais). Enfin, il faudra gérer les droits d'accès aux fichiers du serveur.

Utilisateur POSIX

Rappel, les fichiers gérants les utilisateurs utilisent un formatage sous forme de champ GECOS. Je ne vais pas revenir sur la compréhension de ce formatage proche du CSV.

Création POSIX

Création de l'utilisateur "toto"

adduser toto

On lui définit un mot de passe bidon que l'on va supprimer après.

Interdiction d’accès

Suppression du mot de passe

vim /etc/shadow

Il faut remplacer le hash du mot de passe après toto: par un astérisque. Voici le résultat:

toto:*:17368:0:99999:7:::

Changement du shell de connexion

Afin de garantir que cet utilisateur ne servira pas pour une session shell, nous allons lui donner le shell spécial "false":

vim /etc/passwd

Dans le dernier champ concernant notre utilisateur, lui donner /bin/false. Voici le résultat:

toto:x:1000:1000:,,,:/home/toto:/bin/false

Utilisateur SAMBA

Création de l'utilisateur

smbpasswd -a toto

Suppression d'un utilisateur

smbpasswd -a toto

Aide sur la commande

smbpasswd -h

Note: on peut aussi ce référer au manuel de la commande.

Lister les utilisateurs

pdbedit -L -v

Note: le -L permet de lister et le -v affiche des détails. Source ici.

Droits POSIX

Le truck le plus chiant avec Samba est la gestion des droits d’accès aux fichiers. En effet, sous les système basé sur les concepts UNIX, un utilisateur est propriétaire des fichiers qu'il crée et le UMASK du système de fichiers définit les autres droits à appliquer à celui-ci. Le problème que cela pose dans le cadre d'un partage commun entre plusieurs utilisateurs est que tout ce qui est créé par quelqu'un est en lecture seule pour les autres (vachement pratique...). Une solution que j'aime bien pour palier au problème est l'utilisation des ACL Linux.

Installation du paquet

apt install acl

Gestion des droits d'un répertoire

Par exemple, pour permettre l'accès en lecture/écriture aux utilisateurs toto et titi sur les fichiers qu'ils créent entre eux. j'utilise ceci sur le répertoire "Partage":

setfacl -Rm d:u:toto:rwx,d:u:titi:rwx,d:u:nobody:rwx,d:g:toto:rwx,d:g:titi:rwx,d:g:nogroup:rwx,d:o:rwx /home/toto/Partage/

Montage des volume

Ligne de commande

Sous Debian

mount

Installation du paquet

apt install cifs-utils

Note: ce paquet se nommait anciennement "smbfs" et le système de fichier à préciser avec "mount" portait le même nom.

Montage du partage

mount -t cifs -o username="anonymous",password="anonymous" //192.168.170.178/Logiciel /mnt/

Ici, la connexion s'effectue en anonyme (un alias de -o username et password est -o guest), il suffit bien entendu de remplacer ceci par les bons identifiants de connexion lorsque nécessaire.

Le volume se monte avec les droit de l'utilisateur ayant attaché ce volume (si renseigné dans le fstab, ce sera root). Pour octroyé les droits du volume à un utilisateur particulier, il faut préciser son UID et son GID dans la commande. Ici, notre utilisateur POSIX toto possède l'UID 1000 et appartient au GID 1000 (on le voit dans les fichiers /etc/passwd et /etc/shadow.

On peut par exemple monter le volume Partage en tant qu'utilisateur toto avec les droits de titi:

mount -t cifs -o username="toto",password="SonMotDePasse",uid=1001,gid=1001 //192.168.170.178/Partage

fstab

Le fichier de montage automatique au démarrage n'est pas en reste puisque les partages Samba peuvent également en faire partie. Une syntaxe particulière doit être utilisée pour les noms de partages comportant des accents.

Sous Windows

Voir ici.

Interface graphique

Avec une interface graphique à base de GNOME, le paquet gérant de manière générale les système de fichiers (et plus particulièrement SMB dans notre cas) dans Nautilus se nomme gvfs-backends. Il suffit donc de l'installer pour pouvoir les monter.

apt install gvfs-backends

Pour monter un répertoire Samba via Nautilus (alias "fichiers"), Caja ou autre fork, il faut taper dans la barre d'URL (généralement accessible via un <ctrl>+<l>, un chemin comme celui-ci: smb://192.168.170.178/Partage.

Les identifiants de connexion seront demandés à l'issue.

Sources