real = son.kerberos.REALM
Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
Samba est un logiciel libre sous licence GPL, permettant de supporter le protocole SMB/CIFS le partage de ressources réseau.
Le partage réseau a été développé par IBM en 1985 pour OS/2 et s'appelait alors LAN Manager. Il a ensuite été mis en avant par Microsoft sous le nom de SMB pour en faire un tout nouveau protocole de partage. Il a été appelé aussi CIFS (Common Internet File System ) entre 1998 et 2006, et a encore été renommé sous le nom de SMB2 pour la sortie de Windows Vista et conserve ce nom jusqu'à Windows 8.
Ces termes sont à connaître car ils apparaissent pour certains points de la configuration de samba, qui se charge de compatibilité avec ce protocole de partage réseau mais aussi avec différents produits Microsoft, comme NetBios (TCP/IP) et le nommage wins et maintenant DNS, et MSRPC (appel de procédure à distance), et il peut aussi être utilisé comme contrôleur de domaine “actif directory”.
Le protocole SMB/CIFS est toujours un logiciel propriétaire, et ces spécifications étaient donc fermées au début. Mais pour des raisons d'intéropérabilité, suite à un procès, Microsoft a été contraint d'ouvrir certaines de ses spécifications qui ont été distribuées par le MSDN (open Specifications Developer Center).
Samba a donc été créé afin de rendre possible la communication entre différents systèmes d'exploitations d'un même réseau, mais on peut aussi l'utiliser pour le partage de Linux à Linux.
On le doit d'abord aux travaux de rétro-ingénierie d'Andrew Tridgel qui est son principal développeur. Depuis 2007, et la fermeture des spécifications SMB le développement et les performances de samba ne cessent de se développer.
Prenons, pour exemplifier une configuration simple, une machine virtuelle sur laquelle il a été installé un serveur Debian.
hostname
debian-1
Attention à la confusion entre serveur (samba ou autre) installé sur un système qui reste malgré tout “l'hôte”, on va dire de ce système.
ip a s eth0
<...> inet 192.168.0.15/24 brd 192.168.0.255 <...>
Il s'agit d'une machine virtuelle avec accès par pont dont l'adresse IP a été préalablement fixée par le serveur DHCP au niveau du FAI.
echo $USER
first-user
addgroup --system hypathie
adduser --system hypathie --ingroup hypathie
mkdir /home/hypathie/public
chown -R hypathie:hypathie /home/hypathie/
chmod -R 770 /home/hypathie/
Pour donner les droits récursivement à /home/hypathie/public
apt-get update
apt-get install samba
cd /etc/samba/ && ls</code <code>dhcp.conf gdbcommands smb.conf
Le fichier de configuration est smb.conf
.
mv smb.conf smb.conf-OLD
vim smb.conf
[global] workgroup = WORKGROUP # par défaut et à laisser tel quel netbios name = debian-1 # nom du serveur visible sur le poste client Windows server string = %h server # nom du serveur samba hosts allow = 192.168.0. 127. # ajouté et à modifier selon l'IP du réseau local security = user # à décommenter bind interfaces only = yes # mettre "yes" pour utiliser le choix des interfaces (ligne au dessous) interfaces = 192.168.0.15/24 # Pour éviter le wifi, on peut mettre à la place de l'IP/masque, le nom de l'interface "eth0:0" [hypathie] # ajouté et à modifier selon le répertoire de partage path = /home/hypathie/ # créé sur le système lors de la création d'un nouvel utilisateur read only = no browseable = yes writeable = yes valid users = hypathie write list = hypathie create mask = 0700 # droits posix (octal = 0 devant 700): lecture, écriture, exécution pour l'utilisateur seulement directory = 700 force user = nobody # surtout si on partage la racine force group = nogroup
/etc/samba/smb.conf
est constitué par section.Les paramètres obligatoires sont :
workgroup = MON-GROUPE
Et il faut aller sur Windows créer un groupe du même nom
ou utiliser WORKGROUP qui le nom par défaut sur Windows
netbios name = Nom-du-serveur-samba
server string = serveur %h
security = user # mise en place de la politique d'authentification encrypt passwords = true
À savoir sursecurity
: Le mode “user” est le plus intéressant, mais il y a d'autres modes d'authentification que la mise en place d'un mot de passe utilisateur chiffré.
Le modedomain
passe par workgroup qui définit un contrôleur de domaine.
Le mode “server” a été déprécié, il ne faut pas l'utiliser.
Il y a aussi le ADS qui se base sur Active Directory. Il faut alors définir un “realm”1) et le mot de passe du serveur d'authentification 2)
On l'a appelé dans l'exemple [hypathie]. Les paramètres essentiels sont :
path = /chemin/de_ce_répertoire/à_partager_sur_le_réseau
Attention aux droits placés sur le répertoire et ses sous-répertoires et fichiers
Il est bon pour la sécurité de mettre en place une politique de partage :
lecture / écriture avecread only
:
No ou Yes pour ne pas permettre ou permettre l'écriture.
Restriction de l'écriture à un utilisateur ou une liste précisée avec
read only = Yes
et en dessouswrite list = user1, user2, …
Restriction de l'accès au partage à un ou plusieurs utilisateur ou à un groupe :
valid users = user1, user2, @group1101
Pour forcer tous les utilisateurs à être reconnu comme un seul utilisateur du système :force user = nobody
etforce group = nogroup
.
Comme cela si quelqu'un vient sur le partage, il a les droits de tout autre utilisateur, et ne peut aller à la racine.
Les droits au niveau de samba:
Les droits UNIX surchargent les droits samba, mais samba a besoin qu'on lui spécifie les droits appliqués par défaut sur les fichiers de partages créés.
Droits à la création des fichiers
Par exemple pour lecture, écriture, exécution pour utilisateur et son groupe, et lecture, exécution pour les autres :create mask = 0775> Droits (POSIX) à la création des dossiers
Rappel, pour se déplacer dans un répertoire, c'est l'exécution, pour créer, supprimer renommer un fichier d'un répertoire niveau dossier, c'est l'écriture, et la lecture c'est l'ouverture d'un fichier.
Pour lecture, écriture, exécution pour utilisateur seulement:create mask = 700
Variables de substitution du fichier de configuration smb.conf
Le caractère % permet de substituer les variables.
Par exemple, si dans [global] de cet exemple on met :
server string serveur %h : samba %v
Il s'affichera “serveur debian-1 : samba la version de samba”.
Références :
testparm smb.conf
service restart samba
Ce compte doit correspondre à un compte utilisateur existant du système debian. Il faut en créer pour des raison de sécurité.
La commande suivante se charge d'en créer un dans les données de samba.
Il faut donner un mot de passe pour le compte samba, qui est différent du mot de passe UNIX qui a été demandé quand on a utilisé la commande adduser nouvel-utilisateur
.
smbpasswd -a hypathie
smbpasswd -L
smbpasswd - d utilisateur
smbpasswd - x utilisateur
Démarrer → clic droit sur “Ordinateur” → “Propriétés”
On voit : Groupe de travail : WORKGROUP
Démarrer → Panneau de configuration → Centre réseau et partage → Groupe résidentiel → Modifier les paramètre de partage avancé…
→ Activé le partage réseau
→ Autoriser Windows à gérer les connexions des groupes résidentiels.
→ Activé la découverte du réseau
Démarrer → Ordinateur → Réseau
DEBIAN-1 apparaît
Double-clic sur debian-1 → double-clic sur hypathie-partage → double-clic sur public
.
Créer un fichier, par exemple “coucou-samba”.
ls /home/hypathie/public/ coucou-samba.txt
On peut utiliser le logiciel smbclient sur un système linux.
smbclient [-L nom-netbios | IP-du-serveur [-W mon-workgroup] [-U Nom-du-Compte
La connexion ressemble à une connexion ftp.
-L
: lister les partages disponibles (pour un utilisateur -U)
-W
: nom de domaine samba (correspond à celui déclaré dans /etc/samba/smb/conf)
-U
: nom de l'utilisateur
smbclient -L //192.168.0.15 -U hypathie
Enter hypathie's password: Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6] Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers hypathie Disk IPC$ IPC IPC Service (debian-1 server) Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6] Server Comment --------- ------- DEBIAN-1 debian-1 server DEBIAN-CLIENT1 debian-client1 server Workgroup Master --------- ------- WORKGROUP DEBIAN-CLIENT1
smbclient //@192.168.0.15/home/hypathie -U hypathie
On peut alors avoir accès au dossiers partagés et y faire ce qu'on veut avec les commandes smbclient.
put
; get
; ls
; cd
; mkkdir
…
Faire help
pour en avoir une petite liste.
Il doit ressembler à cela.
########## Printing ########## # If you want to automatically load your printer list rather # than setting them up individually then you'll need this ; load printers = yes # lpr(ng) printing. You may wish to override the location of the # printcap file ; printing = bsd ; printcap name = /etc/printcap # CUPS printing. See also the cupsaddsmb(8) manpage in the # cupsys-client package. printing = cups printcap name = cups use client driver = yes [printers] browseable = no printable = yes writable = no guest ok = yes comment = All Printers public = yes printer admin = root [print$] guest ok = no comment = Printer Drivers writable = no path = /etc/samba/drivers write list = root @ntadmin
cupsaddsmb -v -U root -a
Il peut être lancé par inetd qui est le plus sécurisé mais avec un temps de latence, soit par des daemons directs.
Dans cas il s'agit du partage réseau.
Dans ce cas il s'agit du serveur WINS.