ConfigurationSAMBA CENTOS

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 14

CentOS Serveur - Partage de fichiers Samba - 1ere partie - Installation et

Configuration de base

Le partage de fichiers est l'une des fonctions pivot des postes serveurs, à destination de
stations Windows ou Linux, voire des deux à la fois.
L'idée est de présenter quelques exemples faciles à suivre, ainsi que les options qui
pourraient vous être utiles.

Pour la première partie, les bases de Samba Linux et un fichier de configuration on ne peut
plus simple.

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 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 fait une copie " smb.conf " d'origine :

# cp -a /etc/samba/smb.conf /etc/samba/smb.conf.original

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

Adapté par : A.BENABED 1


 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 ".

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.

Pour ce qui concerne les règles iptables, si le Parefeu est actif, utiliser les commandes
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

Adapté par : A.BENABED 2


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é.

Samba - Exemple de configuration simple sans limitations utilisateurs

Pour ce premier exemple, on considère un ou plusieurs partages simples à destination de


tous les utilisateurs et à toutes les machines du réseau.

Créer les dossiers avec les permissions nécessaires

# mkdir –p /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.
 disable spoolss = Active/désactive le partage d'impression. 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.

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é

Adapté par : A.BENABED 3


 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

modifier le fichier "smb.conf"

[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


# service nmb start

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.
Adapté par : A.BENABED 4
Créez autant de partages que de nécessaire en suivant l'exemple de "partage_commun".

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.

Adapté par : A.BENABED 5


CentOS Serveur - Partage de fichiers Samba avec gestion
des utilisateurs et options de partage

Afin de simplifier, nous prenons l'exemple de l'accès à configurer pour deux utilisateurs
réseau, Said et Meriem, depuis leurs profils Windows respectifs.
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 aux 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).

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

[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

Adapté par : A.BENABED 6


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 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.
Créer un utilisateur et lui affecter un mot de passe samba.

# useradd said
# smbpasswd -a said

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 pallier à 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.
Création du groupe " sambausers " :

# groupadd -g 513 sambausers

Adapté par : A.BENABED 7


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

# useradd -s /bin/false -g sambausers said


# smbpasswd said

# useradd -s /bin/false -g sambausers meriem


# smbpasswd meriem

 Dans cette configuration, "Meriem" et "Said" auront pour groupe principal " sambausers "
 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 ".

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 " meriem,said " aux lignes " valid users " et " write
list "

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]

Adapté par : A.BENABED 8


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

En plus de ce partage commun, ajouter un dossier dédié à la compta ( pour l'utilisateur


said) et un dossier pour la secrétariat (meriem). 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 :

[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 =======================

Adapté par : A.BENABED 9


[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 = said
write list = said

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

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, ajouter la partie suivante à vos " Share Definitions " :

# Dossier home utilisateur via \\serveur\utilisateur


[homes]
comment = Dossier Home
browseable = no
valid users = %S
Adapté par : A.BENABED 10
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, on peut 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 ",
utiliser la commande " chgrp " :

# chgrp -R sambausers /share/commun

On peut 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

Redémarrer le service.
Lors du cumul des droits de partage samba et droits linux c'est le plus restrictif qui
l'emporte comme sous windows.
Rappel de quelques commandes utiles

 Vérifier la bonne prise en compte du fichier de configuration :


# testparm -s

 Connaitre les partages en activité et leur utilisation :


# smbstatus -v
Adapté par : A.BENABED 11
 Lister les utilisateurs connus par le Serveur Linux Samba :
# pdbedit -L
 Obtenir les informations relatives à un utilisateur en particulier (exemple ici avec
"meriem") :
# pdbedit -v meriem

Afficher les partages sur le serveur.


# smbclient -L localhost -N

Sharename Type Comment


--------- ---- -------
Public Disk Partage Public
Confidentiel Disk Partage Confidentiel
IPC$ IPC IPC Service (Serveur de fichiers AMANDINE)
Reconnecting with SMB1 for workgroup listing.

Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP AMANDINE

La commande pdbedit permet d’afficher la liste des utilisateurs Samba.

# pdbedit -L
smbguest:1000:Utilisateur Public Samba
said:1001: said
meriem:1003: meriem
rachid:1002: rachid

Supprimer l’utilisateur Samba rachid :

# smbpasswd -d rachid
Disabled user rachid.

Pour une bonne gstion des utilisateurs Samba

Créer un utilisateur public smbguest pour Samba.


# useradd -c "Utilisateur Public Samba" -g users -d /dev/null \
-s /sbin/nologin smbguest
# passwd -l smbguest
Locking password for user smbguest.
passwd: Success

Adapté par : A.BENABED 12


# smbpasswd -a smbguest -d
Added user smbguest.
 L’utilisateur smbguest ne dispose pas de shell de connexion (-s /sbin/nologin) ni de ré-
pertoire d’utilisateur (-d /dev/null).
 Le mot de passe du compte Linux est verrouillé par passwd -l (lock).
 L’option -a (add) indique à smbpasswd d’ajouter un utilisateur Samba.
 Celui-ci sera immédiatement désactivé par l’option -d (disabled).
Accès au partage à partir d’une machine linux :

# mount –v -t cifs //192.168.0.20/secretariat /mnt/Rapports

Note : L'option "-v" correspond à "verbose" pour avoir un retour d'erreur, l'option "-t" per-
met de préciser le type de montage (ici cifs pour du samba ou du Windows).

A la ligne ci-dessus, il faut ajouter un identifiant valide et le mot de passe associé. On précise
donc ces éléments comme suit (avec l'option "-o" qui permet de rajouter les options) :

# mount -v -t cifs //192.168.0.20/partage_commun /mnt/Rapports -o user=said,password=aA12345

Montage permanent du partage Samba :

Création du dossier cible (point de montage) sur la CentOS de "said"

# mkdir /home/said/Desktop/favoris_reseau
Puis création du point de montage (dossier local) correspondant à notre exemple ("partage_commun"
sur 192.168.0.20)

# mkdir /home/said/commun_sur_samba-test
Fixez les droits pour l’utilisateur sur ces dossiers :

# chown -R said:said /home/said/commun_sur_samba-test


Création du fichier caché contenant le couple login/password

Pour chaque utilisateur, créez un fichier caché dans leur "/home". Pour l'exemple, c’est le fichier
caché ".pass_reseau".

# vi /home/said/.pass_reseau

Ce fichier doit présenter deux lignes (ni plus, ni moins) contenant l'identifiant et le mot de passe pour
le partage concerné. Renseignez comme suit (avec vos infos bien sûr) :

username=said
password=aA12345

Adapté par : A.BENABED 13


Editez à présent le fichier fstab et rajoutez les lignes de commentaire et de montage en vous inspirant
de celles ci-dessous :

# vi /etc/fstab
# partiel de fichier (fin de fstab)

## montages reseau samba


## montage commun sur samba-test pour said
//192.168.0.10/partage_commun /home/said/commun_sur_samba-test cifs credentials=/home/
SAID/.pass_reseau,defaults 0 0

Pour forcer la prise en compte des modifications du fichier "/etc/fstab" sans redémarrer le système :

# mount -a

Adapté par : A.BENABED 14

Vous aimerez peut-être aussi