320
modifications
Aucun résumé des modifications |
(rajout des fichiers smb.conf commentés) |
||
== Introduction ==
Samba est l'implémentation du protocole SMB (Server Message Block) sous Unix / Linux. Il sert à partager des fichiers et des imprimantes avec les réseaux Microsoft.
Site officiel : [http://www.samba.org www.samba.org]
Samba lance deux services : '''smbd''' et '''nmbd'''.
Le protocole SMB est tout sauf performant : il pollue le reseau par l'utilisation intensive du broadcast.
Samba utilise les ports '''137''' (netbios name service, nbname, en UDP), '''138''' (netbios datagram service nbdatagram, en UDP), '''139''' (netbios session service, nbsession, en TCP), et '''445''' ("direct-hosted" tcp, en tcp et udp).
La méthode de connexion traditionnelle smb utilise les ports 137, 138 et 139 tandis que la nouvelle méthode (CIFS, sur windows XP) n'utilise que le port 445.
== Installation ==
Pour installer Samba, on tape la commande suivante :
# apt-get install samba smbclient smbfs
== Configuration ==
Le fichier de configuration de Samba est '''/etc/samba/smb.conf'''.
Le programme '''testparm '''analyse le fichier smb.conf et signale les erreurs éventuelles.
Après avoir modifié la configuration, il faut relancer le service :
# /etc/init.d/samba restart
Le fichier '''/etc/samba/smb.conf''' se divise en différentes sections :
* La section '''[global]''' : configuration globale de samba
* La section '''[homes]''' : cette section particulière permet de remonter une ressource qui correspond au répertoire de travail (home directory) de l'utilisateur qui s'est authentifié.
On peut ensuite créer différentes sections, une par partage voulu.
Samba peut fonctionner de différentes manières. Pour chacune, nous allons étudier 3 cas de figures :
* 1° cas : Anonymous
* 2° cas : Partage avec un mot de passe
* 3° cas : Login/Password
== Le partage par ressource sur un réseau Workgroup ==
Voici un fichier '''/etc/samba/smb.conf''' permettant
# PARTAGE PAR RESSOURCES (share)
# Section GLOBAL
# Configuration globale de Samba
[global]
# Nom du groupe de travail
workgroup = WORKGROUP
#
netbios name = SERVEUR
# Chaine de commentaire associé au serveur (voisinage réseau)
server string = %h Serveur (Samba %v)
# Utilisateurs interdits
invalid users = root
# Enregistre un fichier de log par machine cliente du réseau MS
log file = /var/log/samba/log.%m
# Taille maximale des logs : 1 Mo
max log size = 1000
# On n'utilise pas Syslog pour enregistrer les logs
syslog = 0
# On fait un partage par ressources
security = share
# On utilise les mots de passe encryptés
# (attention, W95 et W98a fonctionnent avec les mdp en clair)
encrypt passwords = true
# Accélère les transferts réseaux
socket options = TCP_NODELAY
# Empeche nmbd de chercher à résoudre le nom netbios via le DNS
dns proxy = no
# Nom du compte invité qui va permettre de créer une
# ressource partagée par mot de passe (celui du compte invite)
guest account = invite
# Emplacement du fichier contenant les logins et mdp samba
smb passwd file = /etc/samba/smbpasswd
# Pour récupérer les imprimantes définies dans CUPS
printing = cups
# Section HOMES
# Cette section est inutile ici car on utilise le mode share
# Section PRINTERS
# Cette section permet de partager les imprimantes définies sur le serveur
[printers]
# Le commentaire associé à l'imprimante
comment = Les imprimantes
# Affiche les imprimantes dans la liste des partages du serveur
browseable = yes
# Dans le cas d'une imprimante, c'est l'emplacement
# des fichiers temporaires
path = /tmp
# Spécifie qu'il s'agit d'une imprimante et non un répertoire
printable = yes
# Partage l'imprimante de manière anonyme
public = yes
# Logique
writable = no
# Empeche d'autres utilisateurs de supprimer mes impressions
create mode = 0700
# Sections REPERTOIRES PARTAGES
# Un CDROM
[cdrom]
# Le commentaire associé au CDROM
comment = Le CDROM
# Point de montage du CDROM
# synonyme de directory =
path = /cdrom
# Empeche le bloquage d'un fichier par un utilisateur
locking = no
# Logique
writable = no
# Partage le CDROM de manière anonyme
public = yes
# Un répertoire partagé mais protégé par mot de passe
[partage]
# Le commentaire associé au répertoire
comment = Un répertoire partagé mais protégé par mot de passe
# Emplacement du répertoire partagé
path = /home/partage
# Support en lecture / écriture
# synonyme de read only = no
writable = yes
# Partage anonyme désactivé (cas par défaut)
# synonyme de guest ok = no
public = no
# Dans le cas du mode share, pour pouvoir positionner un mot de passe
# sur une ressource, il faut créer un compte UNIX 'invite' :
# adduser --shell /bin/false --disabled-login invite
# Créer ensuite une entrée dans le fichier /etc/samba/smbpasswd
# smbpasswd -a invite
# Le mot de passe saisi correspondra à celui du répertoire partagé
# Il faut ensuite donner l'arborescence partagée à l'utilisateur
# invite du groupe invite
valid users = invite
# Masque de création des fichiers et répertoires
create mask = 0644
directory mask = 0755
On crée ensuite l'utilisateur '''invite''' :
# adduser --shell /bin/false --disabled-login invite
Via la commande '''smbpasswd''', on crée ensuite une entrée dans le fichier '''/etc/samba/smbpasswd''' :
# smbpasswd -a invite
On saisi le mot de passe associé au compte '''invite'''.
On crée le dossier de partage '''/home/partage''' et on le donne à l'utilisateur '''invite''' :
# mkdir /home/partage
# chown invite /home/partage
Petit rappel : il est toujours utile de faire un '''testparm''' pour vérifier la cohérence du fichier de configuration, et ne pas oublier de relancer le service pour que les modifications soient prises en compte.
== Le partage par utilisateur sur un réseau Workgroup ==
Voici un fichier '''/etc/samba/smb.conf''' permettant de partager une ressource (répertoire ou imprimante) avec une authentification '''Utilisateur / Mot de passe''' sur un réseau Workgroup :
# PARTAGE PAR UTILISATEUR (user) - Groupe de travail
# Il y a 3 cas possibles :
#
# CAS n°1 : cas normal du mode user, on fait une authentification
# par login et mot de passe
# CAS n°2 : on partage une ressource totalement anonyme
# CAS n°3 : on partage une ressource à laquelle est associé un
# mot de passe (celui du compte invite)
# Section GLOBAL
# Configuration globale de Samba
[global]
# Nom du groupe de travail
workgroup = WORKGROUP
# Nom Netbios de la machine (identification réseau)
netbios name = SERVEUR
# Chaine de commentaire associé au serveur (voisinage réseau)
server string = %h Serveur (Samba %v)
# Utilisateurs interdits
invalid users = root
# Enregistre un fichier de log par machine cliente du réseau MS
log file = /var/log/samba/log.%m
# Taille maximale des logs : 1 Mo
max log size = 1000
# On n'utilise pas Syslog pour enregistrer les logs
syslog = 0
# On fait un partage par utilisateur
security = user
# On utilise les mots de passe encryptés
# (attention, W95 et W98a fonctionnent avec les mdp en clair)
encrypt passwords = true
# Accélère les transferts réseaux
socket options = TCP_NODELAY
# Empeche nmbd de chercher à résoudre le nom netbios via le DNS
dns proxy = no
# Nom du compte invité qui va permettre de créer une
# ressource partagée par mot de passe (celui du compte invite)
# POUR LE CAS n°3
guest account = invite
# Emplacement du fichier contenant les logins et mdp samba
# concerne le CAS n°1 et n°3
smb passwd file = /etc/samba/smbpasswd
# Section HOMES
# Cette section particulière permet de remonter une ressource
# qui correspond au répertoire de travail (home directory)
# de l'utilisateur qui s'est authentifié
[homes]
# Correspond au home directory de l'utilisateur authentifié
# %U sera remplacé par le nom d'utilisateur (login)
comment = Le répertoire personnel de %U
# Si on active cette option, on dispose d'une ressource 'homes'
# redondante avec la ressource 'login'
browseable = no
# Il faut que l'utilisateur soit authentifié pour accéder
# à la ressource (son home directory sur le serveur)
public = no
# Autorise l'écriture dans le répertoire personnel
writable = yes
# Droits d'accés des fichiers et répertoires crées
create mask = 0644
directory mask = 0755
# Section PRINTERS
# Cette section permet de partager les imprimantes définies sur le serveur
[printers]
# Le commentaire associé à l'imprimante
comment = Les imprimantes
# Affiche les imprimantes dans la liste des partages du serveur
browseable = yes
# Dans le cas d'une imprimante, c'est l'emplacement
# des fichiers temporaires
path = /tmp
# Spécifie qu'il s'agit d'une imprimante et non un répertoire
printable = yes
# Partage l'imprimante de manière anonyme
public = yes
# Logique
writable = no
# Empeche d'autres utilisateurs de supprimer mes impressions
create mode = 0700
# Sections REPERTOIRES PARTAGES
# CAS n° 2 - une ressource anonyme sans mot de passe
# Un CDROM
[cdrom]
# Le commentaire associé au CDROM
comment = Le CDROM
# Point de montage du CDROM
# synonyme de directory =
path = /cdrom
# Empeche le bloquage d'un fichier par un utilisateur
locking = no
# Logique
writable = no
# Partage le CDROM de manière anonyme
public = yes
# CAS n°1
# Un répertoire partagé qu'a certains utilisateurs
[prive]
# Le commentaire associé au répertoire
comment = Un répertoire partagé qu'a certains utilisateurs (CAS n°1)
# Emplacement du répertoire partagé
path = /home/prive
# Support en lecture / écriture
# synonyme de read only = no
writable = yes
# Partage anonyme désactivé (cas par défaut)
# synonyme de guest ok = no
public = no
# Dans le cas du mode user, pour accéder à une ressource partagée
# qu'a certains utilisateurs, il faut créer un compte UNIX
# pour chacun d'eux :
# adduser --shell /bin/false --disabled-login paul
# adduser --shell /bin/false --disabled-login pierre
# Créer ensuite une entrée dans le fichier /etc/samba/smbpasswd
# smbpasswd -a paul
# smbpasswd -a pierre
# On définit ensuite les utilisateurs autorisés
valid users = paul pierre
# ATTENTION toutefois : coté Linux, les utilisateurs doivent
# avoir le droit d'écriture sur le répertoire partagé.
# La méthode la plus simple mais la moins sécurisée est d'autoriser
# tout le monde a écrire dans ce répertoire (rwxrwxrwx)
# La méthode sécurisée consiste à créer un groupe Unix contenant
# les utilisateurs autorisés, et d'attribuer le repertoire
# partagé au groupe en question :
# addgroup prive
# adduser paul prive
# adduser pierre prive
# chgrp prive /home/prive
# chmod 770 /home/prive
# chmod g+s /home/prive
#
# Une fois ceci-fait, on peut remplacer : valid users = pierre paul
# par : valid users = @prive
# le @prive désigne le groupe Unix 'prive'
# Avantages : pour ajouter de nouveaux utilisateurs, il suffit
# de leur créer le compte unix, une entrée dans smbpasswd et de
# les ajouter au groupe prive (il n'est plus nécessaire de
# modifier le fichier smb.conf)
# Masque de création des fichiers et répertoires
create mask = 0644
directory mask = 0755
# CAS n°3
# Un répertoire partagé mais protégé par mot de passe
[partage]
# Le commentaire associé au répertoire
comment = Un répertoire partagé mais protégé par mot de passe
# Emplacement du répertoire partagé
path = /home/partage
# Support en lecture / écriture
# synonyme de read only = no
writable = yes
# Partage anonyme désactivé (cas par défaut)
# synonyme de guest ok = no
public = no
guest ok = true
# Dans le cas du mode user, pour pouvoir positionner un mot de passe
# sur une ressource, il faut créer un compte UNIX 'invite' :
# adduser --shell /bin/false --disabled-login invite
# Créer ensuite une entrée dans le fichier /etc/samba/smbpasswd
# smbpasswd -a invite
# Le mot de passe saisi correspondra à celui du répertoire partagé
# Il faut ensuite donner l'arborescence partagée à l'utilisateur
# invite du groupe invite
valid users = invite
# Masque de création des fichiers et répertoires
create mask = 0644
directory mask = 0755
== Le partage de ressources sur un domaine Microsoft ==
Voici un fichier '''/etc/samba/smb.conf''' permettant de rejoindre un domaine existant afin de partager des ressources :
# PARTAGE PAR UTILISATEUR (server) - Domaine avec authentification
# déléguée à un controleur de domaine (PDC : Primary Domain Controller)
# Il y a 3 cas possibles :
#
# CAS n°1 : cas normal du mode user, on fait une authentification
# par login et mot de passe
# CAS n°2 : on partage une ressource totalement anonyme
# CAS n°3 : on partage une ressource à laquelle est associé un
# mot de passe (celui du compte invite)
# Section GLOBAL
# Configuration globale de Samba
[global]
# Nom du groupe de travail
workgroup = MERGUEZ
# Nom Netbios de la machine (identification réseau)
netbios name = SERVEUR
# Chaine de commentaire associé au serveur (voisinage réseau)
server string = %h Serveur (Samba %v)
# Utilisateurs interdits
invalid users = root
# Enregistre un fichier de log par machine cliente du réseau MS
log file = /var/log/samba/log.%m
# Taille maximale des logs : 1 Mo
max log size = 1000
# On n'utilise pas Syslog pour enregistrer les logs
syslog = 0
# On fait un partage par utilisateur, l'authentification est
# déléguée au controleur de domaine (PDC)
security = server
password server = COMPAQ
# On utilise les mots de passe encryptés
# (attention, W95 et W98a fonctionnent avec les mdp en clair)
encrypt passwords = true
# Accélère les transferts réseaux
socket options = TCP_NODELAY
# Empeche nmbd de chercher à résoudre le nom netbios via le DNS
dns proxy = no
# Nom du compte invité qui va permettre de créer une
# ressource partagée par mot de passe (celui du compte invite)
# POUR LE CAS n°3
guest account = invite
# Emplacement du fichier contenant les logins et mdp samba
# concerne le CAS n°1 et n°3
smb passwd file = /etc/samba/smbpasswd
# Section HOMES
# Cette section particulière permet de remonter une ressource
# qui correspond au répertoire de travail (home directory)
# de l'utilisateur qui s'est authentifié
[homes]
# Correspond au home directory de l'utilisateur authentifié
# %U sera remplacé par le nom d'utilisateur (login)
comment = Le répertoire personnel de %U
# Si on active cette option, on dispose d'une ressource 'homes'
# redondante avec la ressource 'login'
browseable = no
# Il faut que l'utilisateur soit authentifié pour accéder
# à la ressource (son home directory sur le serveur)
public = no
# Autorise l'écriture dans le répertoire personnel
writable = yes
# Droits d'accés des fichiers et répertoires crées
create mask = 0644
directory mask = 0755
# Section PRINTERS
# Cette section permet de partager les imprimantes définies sur le serveur
[printers]
# Le commentaire associé à l'imprimante
comment = Les imprimantes
# Affiche les imprimantes dans la liste des partages du serveur
browseable = yes
# Dans le cas d'une imprimante, c'est l'emplacement
# des fichiers temporaires
path = /tmp
# Spécifie qu'il s'agit d'une imprimante et non un répertoire
printable = yes
# Partage l'imprimante de manière anonyme
public = yes
# Logique
writable = no
# Empeche d'autres utilisateurs de supprimer mes impressions
create mode = 0700
# Sections REPERTOIRES PARTAGES
# CAS n° 2 - une ressource anonyme sans mot de passe
# Un CDROM
[cdrom]
# Le commentaire associé au CDROM
comment = Le CDROM
# Point de montage du CDROM
# synonyme de directory =
path = /cdrom
# Empeche le bloquage d'un fichier par un utilisateur
locking = no
# Logique
writable = no
# Partage le CDROM de manière anonyme
public = yes
# CAS n°1
# Un répertoire partagé qu'a certains utilisateurs
[prive]
# Le commentaire associé au répertoire
comment = Un répertoire partagé qu'a certains utilisateurs (CAS n°1)
# Emplacement du répertoire partagé
path = /home/prive
# Support en lecture / écriture
# synonyme de read only = no
writable = yes
# Partage anonyme désactivé (cas par défaut)
# synonyme de guest ok = no
public = no
# Dans le cas du mode user, pour accéder à une ressource partagée
# qu'a certains utilisateurs, il faut créer un compte UNIX
# pour chacun d'eux :
# adduser --shell /bin/false --disabled-login paul
# adduser --shell /bin/false --disabled-login pierre
# Créer ensuite une entrée dans le fichier /etc/samba/smbpasswd
# smbpasswd -a paul
# smbpasswd -a pierre
# On définit ensuite les utilisateurs autorisés
valid users = paul pierre
# ATTENTION toutefois : coté Linux, les utilisateurs doivent
# avoir le droit d'écriture sur le répertoire partagé.
# La méthode la plus simple mais la moins sécurisée est d'autoriser
# tout le monde a écrire dans ce répertoire (rwxrwxrwx)
# La méthode sécurisée consiste à créer un groupe Unix contenant
# les utilisateurs autorisés, et d'attribuer le repertoire
# partagé au groupe en question :
# addgroup prive
# adduser paul prive
# adduser pierre prive
# chgrp prive /home/prive
# chmod 770 /home/prive
# chmod g+s /home/prive
#
# Une fois ceci-fait, on peut remplacer : valid users = pierre paul
# par : valid users = @prive
# le @prive désigne le groupe Unix 'prive'
# Avantages : pour ajouter de nouveaux utilisateurs, il suffit
# de leur créer le compte unix, une entrée dans smbpasswd et de
# les ajouter au groupe prive (il n'est plus nécessaire de
# modifier le fichier smb.conf)
# Masque de création des fichiers et répertoires
create mask = 0644
directory mask = 0755
# CAS n°3
# Un répertoire partagé mais protégé par mot de passe
[partage]
# Le commentaire associé au répertoire
comment = Un répertoire partagé mais protégé par mot de passe
# Emplacement du répertoire partagé
path = /home/partage
# Support en lecture / écriture
# synonyme de read only = no
writable = yes
# Partage anonyme désactivé (cas par défaut)
# synonyme de guest ok = no
public = no
guest ok = true
# Dans le cas du mode user, pour pouvoir positionner un mot de passe
# sur une ressource, il faut créer un compte UNIX 'invite' :
# adduser --shell /bin/false --disabled-login invite
# Créer ensuite une entrée dans le fichier /etc/samba/smbpasswd
# smbpasswd -a invite
# Le mot de passe saisi correspondra à celui du répertoire partagé
# Il faut ensuite donner l'arborescence partagée à l'utilisateur
# invite du groupe invite
valid users = invite
# Masque de création des fichiers et répertoires
create mask = 0644
directory mask = 0755
== Samba en contrôleur de domaine Microsoft ==
Voici un fichier '''/etc/samba/smb.conf''' permettant de faire un contrôleur de domaine Microsoft :
# Controleur de domaine PDC (Primary Domain Controller)
# Section GLOBAL
# Configuration globale de Samba
[global]
# Nom du groupe de travail
workgroup = DOMAINE
# Nom Netbios de la machine (identification réseau)
netbios name = SERVEUR
# Chaine de commentaire associé au serveur (voisinage réseau)
server string = %h Serveur (Samba %v)
# Utilisateurs interdits
invalid users = root
# Enregistre un fichier de log par machine cliente du réseau MS
log file = /var/log/samba/log.%m
# Taille maximale des logs : 1 Mo
max log size = 1000
# On n'utilise pas Syslog pour enregistrer les logs
syslog = 0
# On est PDC, on fait l'authentification par utilisateur
security = user
# On utilise les mots de passe encryptés
# (attention, W95 et W98a fonctionnent avec les mdp en clair)
encrypt passwords = true
# Accélère les transferts réseaux
socket options = TCP_NODELAY
# Empeche nmbd de chercher à résoudre le nom netbios via le DNS
dns proxy = no
# Nom du compte invité qui va permettre de créer une
# ressource partagée par mot de passe (celui du compte invite)
# POUR LE CAS n°3
guest account = invite
# Emplacement du fichier contenant les logins et mdp samba
# concerne le CAS n°1 et n°3
smb passwd file = /etc/samba/smbpasswd
# Permet de devenir le master browser du réseau
# Le master browser est responsable de l'état du réseau
# C'est en général le PDC qui effectue cette tache
local master = yes
# Permet de devenir le DOMAIN master browser du réseau
domain master = yes
# Cette option permet de déclencher une election sur le réseau
# afin de déterminer qui sera le master browser
# Le fait de déclencher cette election me donne le plus de chance
# devenir ce master browser
preferred master = yes
# Si ce chiffre est le plus grand du réseau, je deviens le PDC
os level = 255
# Permet aux utilisateurs de changer leur mot de passe sur ce serveur
# depuis leur poste
update encrypted = yes
# Définit que le daemon nmbd doit agir en tant que serveur WINS
wins support = yes
# Winbind permet de placer des machines dans un domaine controlé
# par un PDC et d'autoriser les utilisateurs a accéder
# à ces machines en utilisant les informations du PDC
winbind separator = +
winbind enum users = no
winbind enum groups = no
winbind uid = 10000-20000
winbind gid = 10000-20000
# désactive le support des ACL (Access Control List)
# fonctionnalité utilisée par Active Directory
nt acl support = no
# Logins autorisés à se connecter aux ressources administratives
# comme C$, ADMIN$ et IPC$
# pour que ceci marche, il faut créer un compte unix correspondant
# à la machine et rajouter une entrée de type machine dans smbpasswd
# Attention : ce login doit porter le nom netbios de la machine
# et se terminer par un dollar (d'ou le --force-badname)
# adduser --shell /bin/false --disabled-login --force-badname nompc$
# smbpasswd -a -m nompc$
admin users = admin
# PRIMORDIAL !, sinon ca marche pas :
# il faut que la ressource [netlogon] existe, meme si on n'utilise
# pas un script logon
domain logons = yes
# Pour autoriser les utilisateurs a changer leurs mots de passe
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUnix\spassword:* %n\n *Retype\snew\sUnix\spassword:* %n\n
# Section NETLOGON
# Permet de faire exécuter un script d'initialisation réseau par le poste
# client du domaine. Ceci permet par exemple connecter un lecteur réseau (Z:)
[netlogon]
# Il n'apparaitra pas dans la liste des ressources partagées
browsable = no
# Chemin vers le script netlogon optionnel
path = /etc/samba/netlogon
# Cette ressource doit impérativement exister et etre
# accessible en accés anonyme
public = no
# Pour la sécurité, cette ressource est exportée en read only
writable = no
# Permet à plusieurs utilisateurs d'utiliser le meme fichier
# en meme temps
locking = no
### Ce serveur effectuant la mission cruciale de PDC, il n'est pas
### recommandé de partager des ressources, bien que cela soit possible
[homes]
path = %H
browsable = no
|
modifications