SAMBA : Configuration de A à Z

Grâce à Samba, vous allez pouvoir partager sur le réseau local les répertoires que vous désirez sur le serveur.
Ce partage pourra se faire entre les postes clients Windows/Linux/Mac et le serveur, il vous suffira de créer l’utilisateur sur le serveur et de le déclarer comme un utilisateur Samba.

Commencez par vérifier que vous avez la dernière version à jour de Samba, le plus simple étant de le réinstaller, si vous avez la dernière version, il ne se passera rien :

apt-get install samba

Une fois terminé l’installation/mise à jour, la configuration va pouvoir commencer.

 

  1. SAMBA et les utilisateurs UNIX

De base, les utilisateurs UNIX ne sont pas déclarés pour SAMBA. Pour remédier à cela, il suffit de les déclarer dans SAMBA :

smbpasswd -a nom_utilisateur

Le système vous demandera alors le mot de passe de l’utilisateur (à saisir deux fois pour vérification).

Pour plus d’information un petit man smbpasswd vous donnera satisfaction.

CAS PARTICULIER : L’utilisateur root et Ubuntu

Dans le cas ou vous travailleriez sur Ubuntu, vous risquez de rencontrer certaines difficultés pour l’utilisateurs root ; en effet, le compte root n’est pas activé par défaut sous Ubuntu et si vous souhaitez faire plus qu’un partage simple avec SAMBA, vous devrez alors l’activer :

sudo passwd root

Saisissez deux fois le mot de passe.

Ensuite, il faudra le déclarer dans SAMBA :

sudo smbpasswd -a root

 

  1. Configuration de SAMBA en partage simple

Vous trouverez ici un fichier d’exemple de configuration.

La première étape sera d’éditer le fichier de configuration pour le modifier à votre convenance.

nano /etc/samba/smb.conf

Ajouter la ligne « interfaces yyy.yyy.yyy.0/24 eth1 » (à adapter à votre configuration).
Dans notre exemple, nous ne créerons pas plusieurs utilisateurs sur le serveur, seul un utilisateur sera créé pour le partage.

Nous placerons donc la ligne « security = share ».

Pour chaque partage que vous voudrez créer, il faudra insérez les lignes suivantes :

[nom du partage]
comment  = ce que vous voulez
path = chemin du partage
guest ok = Yes
read only = no     #mettez à Yes si vous voulez partager en lecture seule
force user = login
force group = group du login

Une fois les modifications effectuées, relancez samba :

service smbd restart
  1. Configuration en Contrôleur de Domaine (PDC)

Un domaine permet de réaliser certains objectifs de gestion de réseau, tels que la structuration d’un réseau, la connexion utilisateur par authentification, la délimitation de la sécurité, l’application d’une stratégie de groupe et la réplication d’informations.

 

Une fois mis en place, vous pourrez également profiter des avantages tels que :
– Mise en place de script de connexion automatique des partages réseaux à la connexion utilisateur,
– Gestion des droits utilisateurs depuis Windows (en théorie car difficile depuis Windows 7),
– Utilisation des profils itinérants avec synchronisation d’une copie en local (par exemple, après une réinstallation complète du poste de travail, vous pourrez récupérer votre espace de travail aisément puisqu’il est stocké sur le serveur et synchronisé sur le poste de travail),
– D’autres avantages existent, une recherche sur internet vous permettra de comprendre le profit que vous pouvez tirer de la mise en place d’un PDC sur votre réseau.
La mise en place d’un contrôleur de domaine est plus compliqué que pour le partage simple, plusieurs étapes sont nécessaires pour son bon fonctionnement.

Pour gagner du temps, vous trouverez ici un exemple de configuration.

 

  1. Utilisateurs et Groupes Samba

Dans un Domaine NT, on peut retrouver une notion de groupe et d’utilisateurs très proche de ce que nous connaissons sous Debian (avec uid/gid). Les groupes systèmes du Domaines possèdent un code identifiant fixe et connu, nous allons donc mettre en place des groupes équivalent sur le serveur, avec le même gid.
Le groupe Administrateur du Domaine (ID 512) :

addgroup domainadmin –gid 512

Le groupe Utilisateurs du Domaine (ID 513) :

addgroup domainuser –gid 513

Le groupe Machines du Domaine (ID 515) :

addgroup machines –gid 515

Le gid 514 n’est pas utilisé ici, il sera affecté aux invités du Domaine (utilisateur ne faisant pas partie du Domaine)

Nous allons maintenant faire correspondre les groupe que nous venons de créer avec les groupes pour le domaine sous Samba/Windows :

net groupmap add ntgroup=Domain\ Admins  unixgroup=domainadmin rid=512 type=d
net groupmap add ntgroup=Domain\ Users   unixgroup=users rid=513 type=d
net groupmap add ntgroup=Domain\ Guests  unixgroup=nogroup rid=514 type=d
net groupmap add ntgroup=Domain\ Computers  unixgroup=machines rid=515 type=d

IMPORTANT : Le caractére « \ » est à utiliser avant un espace pour que ce dernier ne soit pas reconnu comme un caractére d’échappement.

Pour conserver l’intégrité de Windows, il est préférable d’assigner ces valeurs aux groupes créés pour le domaine ; par la suite, il ne sera plus nécessaire de spécifier de valeurs pour le groupe utilisateur, exemple :

net groupmap add ntgroup=”Nom du Groupe”  unixgroup=GroupUnix type=d

Si vous souhaitez ajouter un utilisateur à un groupe du domaine, il vous suffira de saisir la commande suivante :

adduser nom_utilisateur nom_du_groupe
  1. Dossier « système »

Il vous faudra créer 2 répertoires qui devront être partagés, l’un en lecture seule et l’autre en lecture écriture. Le premier de ces répertoires servira à stocker le(s) script(s) de démarrage des utilisateurs (le script peut être commun à tous les groupes ou personnalisés par groupe/utilisateur)

mkdir /var/samba/netlogon
chmod 775 /var/samba/netlogon

Le second répertoires servira à stocker le profil utilisateur : Bureau, Documents, etc…

mkdir /var/samba/profiles
chmod 777 /var/samba/profiles

Astuce : Vous pouvez utiliser LVM pour créer le repertoire de profile, cela vous permettra de gérer l’espace réservé sans pour autant saturer la partition racine.

 

  1. Modification du Fichier de configuration SAMBA

Commencez par faire une sauvegarde de votre fichier de configuration de samba (au cas où) :

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Éditez maintenant votre fichier de configuration et trouver puis modifiez les lignes suivantes (dans la section [global]) :

Workgroup = nomdudomaine
Netbios name = nomdevotreserveur
security = user
unix password sync = yes
domain logons = yes
max protocol = NT1
add user script = /usr/sbin/useradd -d /dev/null -c 'Samba User Account' -s /dev/null %u
add user to group script = /usr/sbin/useradd -d /dev/null -c 'Samba User Account' -s /dev/null -g %g %u
add group script = /usr/sbin/groupadd %g
delete user script = /usr/sbin/userdel %u
delete user from group script = /usr/sbin/userdel %u %g
delete group script = /usr/sbin/groupdel %g
add machine script = /usr/sbin/useradd -g machines -c 'Samba Machine Account' -d /dev/null -s /bin/false %u
domain master = yes
os level = 65
server signing = auto
server schannel = Auto
logon drive = H:
logon home = \\%N\%U
logon script = netlogon.bat
logon path = \\%N\profiles\%U

Cas de Windows 7 : A priori ces paramètres ne seraient peut être pas nécessaires mais vous pouvez les mettre tout de même car il n’empêche pas Samba de fonctionner en tant que contrôleur de domaine avec des clients Win7

client ntlmv2 auth = yes
lanman auth = yes
ntlm auth= yes

 

  1. Déclaration des partages

  • Partage du répertoire personnel

Ce partage est un partage « dynamique », c’est-à-dire qu’il est défini de manière à ce qu’il soit différent pour chaque utilisateur.
Par défaut, il est prévu pour pointer sur le répertoire « home » de l’utilisateur Unix.
Toujours dans le fichier de configuration smb.conf :

[homes]
path = /home/%S
comment = %H-%p  Home directory for user:%u-%U service:%S groupe:%g-%G
browseable = no
guest ok = no
writable = yes
printable = no
nt acl support = yes
inherit permissions = yes
inherit acls = yes
create mode = 0660
hide unreadable = yes
create mask = 777
directory mask = 777
veto files = lost+found
valid users = %S
preexec = mkdir /home/%S

Les paramètres « veto files » et « hide unreadable » permettent de ne pas faire apparaître certains fichiers et/ou répertoires.
« preexec » permet de créer le répertoire correspondant au path avant que le partage ne soit créé (juste par précautions, surtout utile si vous changer le répertoire path par défaut).
Les paramètres « nt acl support« , « inherit permissions » et « inherit acls » sont utilisés pour la gestion des droits d’accès du partage.

  •  Partage des dossier systèmes

Ces partages sont utilisés soit pour la connexion au domaine, soit pour le serveur d’impression.

Le partage « netlogon » contient le(s) script(s) utilisé(s) lors de la connexion au domaine (voir plus loin)

[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
write list = @"Domain Admins"

Le partage “profiles” permettra de stocker les informations du profil utilisateur.

[profiles]
comment = Users profiles
path = /var/lib/samba/profiles
read only = no
profile acls = yes
browseable = no
valid users = @"Domain Users"

 

Astuce : Si vous souhaitez que vos utilisateurs soient en profil itinérant (profil stockés sur le serveur et synchronisés a l’ouverture/fermeture de session quel que soit le poste de travail utilisé), vous pouvez créer un volume logique pour ne pas saturer la partition root. Il faut compter une moyenne de 500Mo max par utilisateur pour un profil normal, sinon le temps de chargement/synchronisation risque d’être très long.

Les partages suivants concernent la partie serveur d’impression.

[printers]
comment = All Printers
browseable = yes
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
use client driver = yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
write list = @"Domain Admins" root
inherit permissions = yes
  • Partages Utilisateurs

Pour tous les partages que vous souhaitez créer sur votre domaine, vous devrez insérez une section contenant les informations suivantes :

[NomduPartage]
comment = Descriptif du Partage
path = /CheminduPartage
writable = yes
printable = no
nt acl support = yes
inherit permissions = yes
inherit acls = yes
create mode = 0660
hide unreadable = yes
veto files = lost+found

 

  1. Fichier de démarrage netlogon.bat

Le fichier de démarrage netlogon.bat est exécuté par Windows lors du démarrage de la session.
Ce fichier va vous permettre de déclarer les actions telles que :
– Mise à l’heure de l’ordinateur,
– Mise à disposition des partages réseau sous forme de lecteur réseau,
Ce fichier doit être mis à disposition dans le partage \\nomduserveur\netlogon.

Par le biais de ce fichier, il est également possible de faire appel à d’autres fichiers de commande correspondant aux utilisateurs du domaines, seul inconvénient, vous devrez créer un fichier par utilisateur pour lesquels vous souhaitez attribuer un traitement de faveur.

Fichier simple, exemple :

@echo off      => n’affichera pas les commandes
NET TIME \\nomduserveur /SET /YES  => synchronisation de l’heure du pc (doit être autorise dans les polices de groupes
NET USE J: \\nomduserveur\partage   =>monte le partage en J :

Vous pouvez mettre autant de partage que vous désirez.

Fichier avec appels de script spécifique de groupe/utilisateurs, exemple :

@echo off      => n’affichera pas les commandes
NET TIME \\nomduserveur /SET /YES  => synchronisattion de l’heure du pc (doit être autorise dans les polices de groupes
NET USE J: \\nomduserveur\partage   =>monte le partage en J :
call \\nomduserveur\netlogon\%username%.bat  => appelle le fichier de commande portant le nom de l’utilisateur

 

Dans cet exemple, le script supplémentaires devra porter le nom de l’utilisateur, c’est-à-dire que si l’utilisateur s’appelle « julien », vous devrez créer un script nommé « julien.bat » dans le répertoire netlogon.

A noter : %username% est la variable Windows contenant le nom de l’utilisateur.

Vous pourrez trouver ici un exemple de fichier netlogon.bat.

 

  1. Redémarrage de Samba

Il ne vous reste plus qu’a redémarrer Samba et de vous connecter depuis un poste Windows pour passer à la prochaine étape.

service samba restart

Pour Ubuntu :

sudo service smbd stop ;sudo service nmbd stop;sudo service smbd start;sudo service nmbd start
Gawindx
Gawindx

Gawindx

Passionné de l'outil informatique dès mon plus jeune âge (j'ai commencé sur un MO5), je mets mes compétences au service de la communauté. Je "flirte" avec Linux depuis 2005 et j'ai complétement basculé dans le libre depuis plus de 3 ans.