Les lignes ci-après se limiteront à Samba 3.x, en utilisation sous CentOS 5 et 6.
Ces exemples peuvent également être repris sous d'autres distributions comme Debian ou Ubuntu avec de légères modifs (pour iptables par exemple).

Nous partons du principe que notre serveur Samba baptisé pour le tuto SAMBA-TEST se trouve dans un groupe de travail WORKGROUP (valeur par défaut des Windows) et possède l'ip fixe 192.168.0.20 (donc sur un réseau 192.168.0.x)


Samba - Fichier de configuration et quelques rappels


Avant tout, installation de samba pour CentOS:

# yum install samba



Et ajout du service samba au démarrage automatique

# chkconfig smb on



Sous CentOS, le fichier de configuration " smb.conf " se trouve dans " /etc/samba ".
Afin de partir d'un fichier propre, on déplace le " smb.conf " d'origine :

# mv /etc/samba/smb.conf  /etc/samba/smb.conf.original



On considère que " smb.conf " se compose de deux parties principales :

  • Global ==> Les options définies dans "Global" s'appliqueront à l'ensemble des dossiers partagés, elles remplacent les options de samba par défaut.
  • Share definitions ==> Liste des dossiers partagés et détails des options qui s'y rapportent. Ces options sont prioritaires sur les options définies dans "global" mais ne se rapportent qu'au partage spécifié.


Si aucune option (valeur) relative à un point particulier n'est spécifiée, samba utilise le paramètre par défaut. Il n'est donc pas nécessaire de fournir une ligne si le paramètre n'apporte pas de nouvelle information.
Pour nos exemples, afin de simplifier, nos partages seront placés dans un dossier dédié, à la racine, dans " /share ". Adaptez selon vos besoins.


Quelques commandes utiles :

  • La commande " testparm -s " vous permet de vérifier la bonne prise en compte de votre configuration
  • La commande " smbstatus -v " permet de connaitre les partages en activité et leur utilisation
  • Sous CentOS, pour recharger le fichier de configuration, suite à une modification par exemple, privilégiez la commande " service smb reload " à " service smb restart ", cela ne coupera pas les accès en cours (si la modif ne s'y rapporte pas bien entendu).



Pour ce qui concerne les règles iptables, si le Parefeu est actif, vous pouvez utiliser les lignes suivantes, en root :

 # iptables -A INPUT -p udp -m udp --dport 137 -j ACCEPT
 # iptables -A INPUT -p udp -m udp --dport 138 -j ACCEPT
 # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
 # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT


Puis sauvegardez la configuration iptables :

# service iptables save



Si vous commettez une erreur, si vous avez un doute sur vos règles iptables ou si vous avez injecté des règles incertaines, lancez les commandes suivantes avant de ressaisir les règles ci dessus (ré-initialise iptables sous CentOS, seul SSH sera autorisé en entrant) :

# iptables -F
# service iptables save



Pour ce qui concerne SELinux, sauf cas extrêmes, il est conseillé de le désactiver. Si toutefois vous souhaitez le conserver, il faudra déclarer à SELinux chaque dossier partagé, au sens arborescence Linux, et non en fonction du nom de partage Samba.

  • Pour désactiver SELinux, rendez vous dans son fichier de conf ( /etc/selinux/config ) et passez la ligne " SELINUX=enabled " à " SELINUX=disabled ". Puis redémarrez le serveur.
  • Pour déclarer un dossier, si vous conservez SELinux, il faut lui apposer la marque (tag ou tatouage) relative au partage samba.

Exemple ci-après avec un dossier " /share/commun ". Remplacez simplement " /share/commun " par chacun de vos partages :

# chcon -R -t  samba_share_t  /share/commun


Il convient d'appliquer cette ligne à chaque dossier partagé.

Vous trouverez plus d'informations assez accessibles sur SELinux et samba via ce blog par exemple.



Samba - Exemple de configuration simple sans limitations utilisateurs


Pour ce premier exemple, nous partons du principe qu'il s'agit d'un ou plusieurs partages simples à destination de tous les utilisateurs du réseau, le niveau de sécurité est configuré au plus bas, en ne limitant qu'au réseau local (192.168.0 dans notre exemple, à adapter au votre).
Cet exemple ne traite aucun utilisateur en particulier, toutes les machines présentes sur le réseau local déclaré pourront accéder au partage.
Commencez par créer les dossiers de partage sur votre serveur.

Comme indiqué plus haut, afin de simplifier, nos partages seront dans " /share " donc (en root):

# mkdir /share



Pour cet exemple, il faut créer également le sous dossier partagé :

# mkdir /share/commun
# chmod 777 /share/commun



Le détail des lignes indispensables dans smb.conf pour la partie "global":

  • workgroup = Nom du groupe de travail
  • server string = Description de la machine (vue depuis le réseau Windows)
  • security = type de sécurité choisi, exemples de valeurs "share" (notre exemple) ou "user" (cas traité dans le prochain exemple)
  • load printers = prise en charge des imprimantes installés sur le serveur. Valeur "yes" ou "no"
  • disable spoolss = désactive le partage d'impression (notre cas ici). Valeur "yes" ou "no"
  • hosts allow = Liste des hôtes ou réseaux autorisés (valeur ip machine complète ou partiel réseau). Pour plusieurs machines, séparez les ip par des virgules. Dans notre exemple, nous avons choisi le partiel réseau.



Le détail des lignes présentes dans les options du dossier partagé :

  • Chaque partage est tout d'abord défini par son nom entre crochets (le nom qui sera visible depuis l'accès réseau)
  • path = Arborescence linux du dossier partagé
  • comment = Commentaire sur le partage
  • public = accès public (valeur "yes" ou "no")
  • force directory mode = Permet de forcer les droits de chaque sous dossier créé/modifié
  • force create mode = Permet de forcer les droits de chaque fichier créé/modifié
  • writeable = Ecriture possible dans le dossier (valeur "yes" ou "no")
  • browseable = Autoriser la visibilité du dossier dans l'explorateur



Et donc, le fichier "smb.conf" complété pour notre exemple (ne vous reste à adapter que " workgroup ", " server string " et " hosts allow " si vous avez suivi pas à pas) :

# vi /etc/samba/smb.conf


## fichier conf samba
## exemple 1 mgroup.fr

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = share
        load printers = no
	disable spoolss = Yes

# securite reseau
	hosts allow = 192.168.0.

#===================== Share Definitions =======================

[partage_commun]
        path = /share/commun
        comment = Partage pour tous
	public = yes
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes

# fin du fichier



Démarrage de samba pour prise en compte du nouveau fichier :

# service smb start



Ou pour le redémarrer :

# service smb restart




A partir d'ici, vous devriez avoir à disposition un partage samba basique mais fonctionnel.

Si vous rencontrez un problème, commencez par jeter un œil du côté de Iptables, puis vérifiez les droits sur les dossiers.

Créez autant de partages que de nécessaire en suivant l'exemple de "partage_commun". Ne donnez pas deux fois le même nom de dossier partagé.

Explorez le réseau depuis une Windows ou ouvrez, dans un explorateur, l'adresse ip (ou le nom si votre serveur dns le permet) de votre serveur précédé de '" \\ ".
Pour notre exemple, ça donne " \\192.168.0.20 "

Depuis une linux, ouvrez l'adresse " smb://192.168.0.20 " avec Nautilus.

capture_partages



La 2ème partie du tuto Samba sous CentOS traitera de la gestion utilisateurs depuis le serveur lui même, avec un niveau de sécurité plus élevé.


Vous pouvez commenter ou participer à l'amélioration de cet article via le topic dédié du forum.