logo_samba Avant de commencer cette seconde section, si vous n'êtes pas à l'aise avec Samba et Linux, assurez vous d'avoir acquis l'essentiel de la première partie de notre tuto.

Cette nouvelle étape traite des partages et des options utiles à un accès " utilisateurs multiples " gérés depuis le serveur Samba.
Prenez svp le temps de lire chacune des parties qui suivent, plutôt que de copier / coller directement les fichiers de configuration sans les comprendre.



Cette section peut vous sembler longue, mais rassurez vous, elle sera vite parcourue et contient des détails importants.




Pour rappel, notre serveur Samba a été baptisé pour le tuto SAMBA-TEST . Il se trouve dans un groupe de travail WORKGROUP (valeur par défaut des Windows) et possède l'ip fixe 192.168.0.20 (sur un réseau 192.168.0.x)

Afin de simplifier, nous prenons l'exemple de l'accès à configurer pour deux utilisateurs réseau, Paul et Marie, depuis leurs profils Windows respectifs.
Dans son extrême gentillesse, leur administrateur réseau à créé des sessions (sur les Windows) avec leurs prénoms pour login (et le mot de passe associé).
Chaque couple " login / mot de passe " présent sur les clients Windows doit correspondre avec celui qui sera déclaré sur le serveur Samba.


Voici le fichier " smb.conf " tel que nous l'avons laissé à la fin du premier épisode (partage simple ouvert à tous) :

## 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




Nous allons le modifier pour que l'accès soit autorisé uniquement aux utilisateurs déclarés sur le serveur, via la ligne " security = " de la partie " Global "
Cette valeur était fixée à " share ", nous la passons à " user "
Ce qui implique la présence de la ligne d'option relative au mots de passe " passdb backend = "

De la même manière, dans la partie " share Definitions ", suppression de la ligne " public = yes " puisque le dossier ne sera plus en accès libre mais limité aux utilisateurs que nous allons déclarer.

Ajout des options " valid users = " et " write list = " qui gèrent respectivement les utilisateurs autorisés en accès lecture seule et ceux qui ont les droits pour créer et modifier le contenu (sous dossiers et fichiers).
Prenez l'habitude d'utiliser ces deux lignes (même si une seule suffit) de manière à pouvoir faire le distingo entre les droits lecture seule et les droits lecture/écriture.
Pour ces deux options, vous pouvez soit indiquer la liste des utilisateurs autorisés (noms séparés par une virgule), soit indiquer un groupe au sens Linux du (terme) précédé d'un " @ "

Tout ceci nous donne un fichier " smb.conf " qui va ressembler à ceci (notez que "valid users" et "write list" sont vides pour l'instant) :

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

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = user
        passdb backend = tdbsam

# options imprimantes desactivees
        load printers = no
	disable spoolss = Yes

# securite reseau
	hosts allow = 192.168.0.

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

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

# fin du fichier



Redémarrez Samba à ce niveau du tuto, c'est impératif pour la future prise en compte des utilisateurs et mots de passe !

# service smb restart




Déclaration et gestion des utilisateurs sur le serveur CentOS pour Samba Linux



Pour pouvoir déclarer les utilisateurs dans notre "smb.conf", il faut que le serveur linux (et donc samba) les connaisse et puisse vérifier leurs mots de passe.
Vous trouverez sur de nombreux sites, une paire de commandes basiques, la première pour déclarer l'utilisateur, la seconde pour son mot de passe Samba. Un exemple ci après pour l'utilisateur "paul" :

# useradd paul
# smbpasswd -a paul


Ces commandes fonctionnent, toutefois elles présentent quelques petits défauts :

  • Pas de prise en compte de la notion de groupe(s) et donc pas de gestion possible de ces derniers
  • L'utilisateur déclaré hérite d'un compte linux (login possible en ssh) qui n'est peut-être pas souhaité
  • Évolution ultérieure impossible vers un contrôleur de domaine samba sans modifs importantes


Pour palier à cela, il suffit pourtant de quelques ajouts simples au moment de passer ces commandes :

  • L'option " -s /bin/false " de la commande " useradd " permet de verrouiller le profil Linux de l'utilisateur, il ne pourra donc se connecter qu'à travers Samba.
  • La création préalable d' (au moins) un groupe " sambausers " auquel appartiendront les utilisateurs permettra une gestion plus aisée des partages.
  • L'affectation du GID (GID=Group ID, identifiant de groupe) 513 permettra une éventuelle migration vers un contrôleur de domaine Samba sans devoir tout retaper.



Mise en pratique avec nos utilisateurs, mais avant tout, création du groupe " sambausers " :

# groupadd -g 513 sambausers


Le groupe étant créé, on passe aux utilisateurs avec les options qui vont bien. Pour "paul" (majuscules et accents à éviter dans les login et password !) :

# useradd -s /bin/false -g sambausers paul
# smbpasswd paul


Idem pour "marie" (Rappel : majuscules et accents à éviter dans les login et password !) :

# useradd -s /bin/false -g sambausers marie
# smbpasswd marie



  • Dans cette configuration, "Marie" et "Paul" auront pour groupe principal " sambausers "
  • Notez que lors de la commande " smbpasswd " le mot de passe vous sera demandé deux fois par votre CentOS (ou autre Linux). Vous n'aurez pas de retour visuel de celui-ci à l'écran.
  • L'option " /bin/false " peut-être modifiée ultérieurement pour chaque utilisateur (au cas où un accès Linux SSH serait nécessaire) via le fichier " /etc/passwd ". A manipuler avec prudence !



Les utilisateurs sont maintenant créés, retour sur le fichier "smb.conf". Pour le dossier "partage_commun" existant, il s'agit d'en réserver l'accès exclusif au groupe "sambausers", et donc à nos deux utilisateurs (pour cet exemple).

Nous pourrions ajouter simplement " marie,paul " aux lignes " valid users " et " write list ", là encore ça fonctionnerait, mais si demain d'autres utilisateurs viennent les rejoindre, il faudra les rajouter un par un. Dans le cas d'une grande équipe, ce serait long et fastidieux.

Utilisons plutôt les avantages de la gestion par groupe :

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

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = user
        passdb backend = tdbsam

# options imprimantes desactivees
        load printers = no
	disable spoolss = Yes

# securite reseau
	hosts allow = 192.168.0.

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

[partage_commun]
        path = /share/commun
        comment = Partage pour tous
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = @sambausers
        write list = @sambausers

# fin du fichier



Redémarrage de Samba Linux

# service smb restart




Le partage d'équipe devrait maintenant être fonctionnel. Vérifiez et testez les accès depuis les comptes utilisateurs Windows (Et Linux au besoin, voir partie 1 de ce tuto).

En plus de ce partage commun, ajoutons un dossier dédié à la compta ( pour l'utilisateur paul) et un dossier pour le secrétariat (marie). Cette fois, en limitant l'accès "par utilisateur", et non plus par équipe.

Création des dossiers :

# mkdir /share/compta
# mkdir /share/secretariat
# chmod -R 777 /share/*




Le fichier " smb.conf " devient :

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

[global]
        workgroup = WORKGROUP
        server string = samba-test
	security = user
        passdb backend = tdbsam

# options imprimantes desactivees
        load printers = no
	disable spoolss = Yes

# securite reseau
	hosts allow = 192.168.0.

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

[partage_commun]
        path = /share/commun
        comment = Partage pour tous
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = @sambausers
        write list = @sambausers

[compta]
        path = /share/compta
        comment = dossier compta
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = paul
        write list = paul

[secretariat]
        path = /share/secretariat
        comment = dossier secretariat
        force directory mode = 777
        force create mode = 777
	writeable = yes
        browseable = yes
        valid users = marie
        write list = marie

# fin du fichier



En option, il est également possible de fournir à chaque utilisateur un dossier personnel (plus précisément un accès à son dossier Linux " home ") via Samba.
Chaque user verra apparaitre un dossier à son nom dans le partage réseau.

Pour ce faire, ajoutez la partie suivante à vos " Share Definitions " :

# Dossier home utilisateur via  \\serveur\utilisateur
[homes]
        comment = Dossier Home
        browseable = no
        valid users = %S
        writeable = yes



Ne Pas oublier de redémarrer Samba Linux pour prendre en compte toutes ces modifs :

# service smb restart




Attention aux droits Linux sur les dossiers de partage


Outre les autorisations et les limitations fixées via Samba, vous pouvez affiner les propriétés des dossiers partagés en utilisant les droits Natifs Linux.
Par exemple, pour affecter le dossier "commun" aux membres du groupe " sambausers ", utilisez la commande " chgrp " :

# chgrp -R sambausers /share/commun



Vous pourriez même limiter ce même dossier aux seuls " sambausers " (au sens Linux) :

# chmod -R 770 /share/commun


Pensez dans ce cas à adapter vos options " force directory mode " et " force create mode " pour ce dossier dans " smb.conf " :

[partage_commun]
        path = /share/commun
        comment = Partage pour tous
        force directory mode = 770
        force create mode = 770
	writeable = yes
        browseable = yes
        valid users = @sambausers
        write list = @sambausers



A faire suivre par un :

# service smb restart




Vous l'aurez remarqué, nos réglages sont plutôt permissifs côté droits Linux, et limitatifs côté Samba ( via la partie "share" de " smb.conf "), vous pouvez bien sûr adapter à vos pré-requis. Toutefois, gardez à l'esprit que des deux, sécurité oblige, c'est le plus restrictif qui l'emporte toujours.
Votre serveur CentOS traitera toujours les demandes en fonction des options qui auront été fournies, il ne gère pas à sa convenance mais en fonction des règles établies.


Débug et résolution de problèmes d'accès


Compte tenu du nombre d'options possibles à des niveaux parfois différents (droits Linux et / ou Droits Samba), il est fréquent de voir certains débutants (ou pas) buter sur un partage qui ne fonctionne pas comme ils le souhaiteraient.
Pas de Panique ! jeter des commandes à tour de bras n'est pas la bonne solution. Comprendre d'où vient le problème et le fixer est une excellente école.

Faites tout d'abord une copie de sauvegarde de votre "smb.conf". Ensuite, essayez de trouver le problème en fonction de la panne que vous constatez.
Voici quelques exemples :

  • Pas d'accès du tout au partage Samba ?
  1. Est ce que votre machine correspond aux règles de la ligne " hosts allow = " ?
  2. Problème avec le parefeu (Iptables) du serveur ? ==> Désactivez le temporairement pour vérifier
  3. Les utilisateurs sont-ils connus par le serveur ? ==> Voir lignes plus bas pour vérifier


  • Certains dossiers ne sont pas accessibles ou le serveur demande un login / mot de passe lors de l'accès ?
  1. Les dossiers ont-ils été créés ?
  2. L'arborescence déclarée dans "smb.conf" est-elle correcte ?
  3. Les droits linux correspondent-ils aux besoins et aux règles définies dans votre "smb.conf" ?
  4. Les login et mots de passe Windows correspondent ils parfaitement à ceux déclarés sur le serveur ?



Rappel de quelques commandes utiles


  • Vérifier la bonne prise en compte de votre fichier de configuration :
# testparm -s


  • Connaitre les partages en activité et leur utilisation :
# smbstatus -v


  • Lister les utilisateurs connus par le Serveur Linux Samba :
# pdbedit -L


  • Obtenir les informations relatives à un utilisateur en particulier (exemple ici avec "marie") :
# pdbedit -v marie





Tout d'abord merci d'avoir lu jusqu'ici. Vous devriez maintenant avoir sous la main un serveur de fichiers efficace, capable de répondre aux situations les plus connues.

La prochaine étape traite des options et optimisations possibles via Samba Linux afin de répondre à certains cas particuliers.


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