Partage de fichier avec Windowset Samba

Transcription

Partage de fichier avec Windowset Samba
Table des matières
Installation de SAMBA......................................................................................................2
Démarrer le service Samba................................................................................................3
Configuration de Samba: le fichier smb.conf...................................................................3
Exemples...........................................................................................................................14
Accès depuis un poste client Linux..................................................................................16
Module 9 – Partie 2
Samba: Concepts et fonctionnement
Nous procédons, dans cette section, à l’étude du paquet nommé “SAMBA”. Nous nous
attarderons entre autre sur les point suivants:
•
•
•
•
Comment installer Samba ?
Comment configurer Samba ?
Accéder aux fichiers de WindowsXP/7 à partir de Linux.
Sécurité de Samba.
Microsoft et Intel ont initialement développé un protocole nommé Server Message Block (SMB)
pour permettre aux systèmes Windows de partager des ressources comme les disques, les
imprimantes ou autres périphériques. Linux implante ce protocole grâce à l’ensemble de
programme que constitue le paquet Samba. En utilisant Samba, vous pouvez transformer votre
boîte Linux en client/serveur SMB.
Autrement dit, vous pouvez rendre disponible les disques et les imprimantes Linux aux usagers
de Windows 9x, Windows Xp/7 et inversement les serveurs SMB tels Windows Xp/7 peuvent
rendre disponible les disques et imprimantes à des usagers Linux.
Il est trop tard si vous pensiez que M. Gates et M. Torvalds ne se parlent pas! 
se parlent pas, ce sont juste les protocoles qui se parlent :)
En fait, ils ne
Installation de SAMBA
Le paquetage de Samba peut être installé en effectuant la commande apt-get comme ci-dessous:
sudo apt-get install samba samba-tools system-config-samba smbfs
Si vous n’avez pas le fichier « smb.conf » situé dans le répertoire « /etc/samba » alors je vous
conseille fortement d’exécuter la commande précédente.
Démarrer le service Samba
On peut démarrer le service avec la commande suivante :
version 12.04 et suivante (upstart):
sudo restart smbd
sudo restart nmbd
version 10.04 et moins (version sysv) :
sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart
Configuration de Samba: le fichier smb.conf
Lorsque vous avez installé le paquet Samba, un fichier nommé smb.conf a également été installé
dans le répertoire /etc/samba. Voici un exemple de ce que peut contenir le fichier smb.conf :
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options (perhaps too
# many!) most of which are not shown in this example
#
# Any line which starts with a ; (semi-colon) or a # (hash)
# is a comment and is ignored. In this example we will use a #
# for commentry and a ; for parts of the config file that you
# may wish to enable
#
# NOTE: Whenever you modify this file you should run the command "testparm"
# to check that you have not many any basic syntactic errors.
#
#======================= Global Settings =====================================
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = MYGROUP
# server string is the equivalent of the NT Description field
server string = Samba Server
# This option is important for security. It allows you to restrict
# connections to machines which are on your local network. The
# following example restricts access to two C class networks and
# the "loopback" interface. For more examples of the syntax see
# the smb.conf man page
;
hosts allow = 192.168.1. 192.168.2. 127.
# if you want to automatically load your printer list rather
# than setting them up individually then you'll need this
printcap name = /etc/printcap
load printers = yes
# It should not be necessary to spell out the print system type unless
# yours is non-standard. Currently supported print systems include:
# bsd, sysv, plp, lprng, aix, hpux, qnx
;
printing = bsd
# Uncomment this if you want a guest account, you must add this to /etc/passwd
# otherwise the user "nobody" is used
; guest account = pcguest
# this tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m
# Put a capping on the size of the log files (in Kb).
max log size = 50
# Security mode. Most people will want user level security. See
# security_level.txt for details.
security = user
# Use password server option only with security = server
;
password server = <NT-Server-Name>
# Password Level allows matching of _n_ characters of the password for
# all combinations of upper and lower case.
; password level = 8
; username level = 8
# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
# Do not enable this option unless you have read those documents
; encrypt passwords = yes
; smb passwd file = /etc/smbpasswd
# The following are needed to allow password changing from Windows to
# update the Linux sytsem password also.
# NOTE: Use these with 'encrypt passwords' and 'smb passwd file' above.
# NOTE2: You do NOT need these to allow workstations to change only
#
the encrypted SMB passwords. They allow the Unix password
#
to be kept in sync with the SMB password.
; unix password sync = Yes
; passwd program = /usr/bin/passwd %u
; passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n
*passwd:*all*authentication*tokens*updated*successfully*
# Unix users can map to different SMB User names
;
username map = /etc/smbusers
# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
;
include = /etc/smb.conf.%m
# Most people will find that this option gives better performance.
# See speed.txt and the manual pages for details
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Configure Samba to use multiple interfaces
# If you have multiple network interfaces then you must list them
# here. See the man page for details.
;
interfaces = 192.168.12.2/24 192.168.13.2/24
# Configure remote browse list synchronisation here
# request announcement to, or browse list sync from:
#
a specific host or from / to a whole subnet (see below)
# WINS Proxy - Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client, for this to work there must be
# at least one
WINS Server on the network. The default is NO.
;
wins proxy = yes
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
# this has been changed in version 1.9.18 to no.
dns proxy = no
#
#
;
;
#
;
#
;
Case Preservation can be handy - system default is _no_
NOTE: These can be set on a per share basis
preserve case = no
short preserve case = no
Default case is normally upper case for all DOS files
default case = lower
Be very careful with case sensitivity - it can break things!
case sensitive = no
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
;
comment = Network Logon Service
;
path = /home/netlogon
;
guest ok = yes
;
writable = no
;
share modes = no
# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory
;[Profiles]
;
path = /home/profiles
;
browseable = no
;
guest ok = yes
# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = no
writable = no
printable = yes
# This one is useful for people to share files
;[tmp]
;
comment = Temporary file space
;
path = /tmp
;
read only = no
;
public = yes
# A publicly accessible directory, but read only, except for people in
# the "staff" group
;[public]
;
comment = Public Stuff
;
path = /home/samba
;
public = yes
;
writable = yes
;
printable = no
;
write list = @staff
# Other examples.
#
# A private printer, usable only by fred. Spool data will be placed in fred's
# home directory. Note that fred must have write access to the spool directory,
# wherever it is.
;[fredsprn]
;
comment = Fred's Printer
;
valid users = fred
;
path = /homes/fred
;
printer = freds_printer
;
public = no
;
writable = no
;
printable = yes
# A private directory, usable only by fred. Note that fred requires write
# access to the directory.
;[fredsdir]
;
comment = Fred's Service
;
;
;
;
;
path = /usr/somewhere/private
valid users = fred
public = no
writable = yes
printable = no
# a service which has a different directory for each machine that connects
# this allows you to tailor configurations to incoming machines. You could
# also use the %u option to tailor it by user name.
# The %m gets replaced with the machine name that is connecting.
;[pchome]
; comment = PC Directories
; path = /usr/pc/%m
; public = no
; writable = yes
# A publicly accessible directory, read/write to all users. Note that all files
# created in the directory by users will be owned by the default user, so
# any user with access can delete any other user's files. Obviously this
# directory must be writable by the default user. Another user could of course
# be specified, in which case all files would be owned by that user instead.
;[public]
;
path = /usr/somewhere/else/public
;
public = yes
;
only guest = yes
;
writable = yes
;
printable = no
À première vue, le fichier précédent semble immense mais en fait ce
n’est que quelques sections qui sont importantes.
Voici les caractéristiques essentielles:
 Les lignes débutant par le caractère dièze (#) :
Ce sont les commentaires et ne sont pas
traités par Samba.
 Lignes commençant par un point-virgule (;)
Ce sont aussi des lignes traitées comme des
commentaires.
Pourquoi alors 2 caractères pour
représenter des commentaires ?
Semble t-il parce que les
développeurs Samba voulait
accomoder autant les usager
Unix que Windows. On sait que
les commentaires dans les fichiers
ini sous Windows commencent
tous par un ; .
 Les lignes qui englobe un mot entre 2 crochets [ ]:
Ce sont les sections qui définissent les caractéristiques de Samba. Voici un
exemple tiré du fichier smb.conf:
[homes]
comment = Home Directories
browseable = no
writable = yes
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes

Une section définissant les répertoires
« maison » des usagers.
Une section définissant un répertoire
« public » accessible par tous.
Les lignes du type nom = valeur permettre de configurer des paramètres pour
Samba. Ainsi:
Workgroup = MYGROUP
Donne au paramètre Workgroup la valeur MYGROUP.
En résumé, la syntaxe d’une ligne est la suivante:
Paramètre Nom = la valeur
Les espaces blancs devant
le nom du paramètre sont
non-significatifs.
Les espaces blancs à gauche
ou à droite du signe = sont
ignorés.
Tous les autres espaces
blancs sont significatifs..
Le fichier smb.conf et ses paramètres
Si on enlève tous les commentaires du fichier “smb.conf”, on obtient essentiellement 3 sections
principales. La section [global], [homes] et la section [printers].
Section [global]
La section [global] permet de définir la configuration qui s’appliquera à toutes les autres sections.
La configuration par défaut est la suivante:
global]
workgroup = MYGROUP
server string = Samba Server
printcap name = /etc/printcap
load printers = yes
log file = /var/log/samba/log.%m
mak log size = 50
security = user
socket options = TCP_NODELAY
dns proxy = no
[
Voici les principales caractéristiques des paramètres utilisés dans la section [global].
[global]
workgroup = MYGROUP
Ce paramètre indique le groupe
auquel appartiendra le serveur.
server string = Samba Server
printcap name = /etc/printcap
load printers = yes
C’est la commande qui permet
d’afficher un commentaire à côté du
nom du serveur dans le voisinage
réseau.
Permet de pointer sur le fichier qui
contient la liste des imprimantes qui
pourront être partagée plus tard.
log file = /var/log/samba/log.%m
mak log size = 50
Voir la note sur la page suivante.
security = user
socket options = TCP_NODELAY
dns proxy = no
L’option SECURITY
Cette option affecte la réponse des clients envers Samba et constitue l’une des plus importantes options du
serveur samba qui se trouve dans le fichier smb.conf.
Cette option permet de configurer la sécurité en réponse au protocole utilisé. Les clients décident, selon la
valeur de cette option, comment le transfert du mot de passe et du nom d’usager sera effectué au serveur.
Par défaut, la sécurité est en mode user. Cette option est la plus commune pour parler à une machine
Windows 98/XP/7
Dans les versions
Les alternatives sont: security = share, security = server ou security =domain.
précédentes (< 2.0), la
seule et unique option
de sécurité est le mode
On vous suggère aussi d’utiliser la sécurité en mode share si vous voulez créer
share.
des partages sans mot de passe (Guest). Ce cas est souvent rencontré lorsqu’il
s’agit de partager des imprimantes.
SECURITY = SHARE
Lorsque les clients se connectent à une ressource en mode share, le mot de passe ainsi que le compte
(username) ne sont pas nécessaire. Les clients envoient plutôt les informations d’authentification (le mot
de passe) pour chaque ressource partagée au moment où ils essaient de se connecter à cette ressource.
Comme les clients n’ont pas besoin d’envoyer le nom d’usager (username) en mode share, le serveur
samba utilise plusieurs techniques pour déterminer le compte adéquat qui sera utilisé sous la machine Unix.
Si l’option “guest only” n’est pas utilisée, la liste des usagers est alors vérifiée par rapport au mot de passe
entré. Le premier compte sur la machine Unix pour lequel le mot de passe correspond à cet usager sera
utilisé.
Si le compte “guest only” est utilisée ou qu’il n’y a pas de nom d’usager qui peut être vérifié alors si la
ressource partagé est disponible pour le compte “guest” alors le compte “guest” sera utilisé sinon l’accès
sera refusé.
SECURITY = USER
C’est l’option par défaut dans les versions du serveur 2.2 et suivantes. Avec une sécurité de type User, le
client doit se brancher en envoyant un nom d’usager et un mot de passe pour accéder à la ressource. Les
mots de passe encryptés peuvent également être utilisés (voir l’option “Encrypted passwords”).
SECURITY = SERVER
Dans ce mode, le serveur Samba tentera de valider le mot de passe et le nom d’usager en passant cette
information à un autre serveur (comme un serveur 2000-2008) qui s’occupera de cette validation. Si la
validation échoue, le mode user sera utilisé. Notez cependant que si les mots de passe sont encryptés alors
Samba ne pourra pas utiliser un autre mode de sécurité automatiquement. Du point de vue du client, le
mode Server et le mode user est le même. Ces modes affectent uniquement la façon dont le serveur
s’authentifie. Ils ne changent en rien ce que le client voit.
SECURITY = DOMAIN
Ce mode fonctionnera uniquement si la commande smbpasswd (voir man smbpasswd) a été utilisée pour
ajouter la machine Unix dans la liste des machines appartenant au domaine d’une machine Windows
server. Ce mode s’attend aussi à ce que l’option “encrypted passwords” soit utilisée.
Dans ce mode, le serveur Samba essaie de valider la pair “username/password” en passant cet information à
un serveur Windows Server de domaine primaire (Primary Domain Controller) ou à un serveur Windows
Server backup (Backup domain controller) de la même façon qu’un serveur Windows pourrait le faire.
Notez que le compte usager doit exister sur la machine Unix de même que sur la machine Windows pour
permettre à Samba d’obtenir un compte d’usager validé sur la machine Unix.
La section [homes]
Si cette section est ajoutée dans le fichier smb.conf, les clients pourront alors avoir accès à leur répertoire
“maison” sur la machine Unix. Cette opération est alors réalisée en temps réel par le serveur Samba.
La section [homes] peut définir les mêmes paramètres que tout autre service. Voici un exemple d’une
section [homes]:
[homes]
comment = Home Directories
writeable = yes
L’option writeable est le contraire de l’option “read only”.
writeable = no Les usagers de ce service ne pourront pas créer ou modifier les fichiers présents dans ce répertoire.
Un point important: Si l’option “guest access” est spécifiée dans la section [homes], tous les répertoires
“maison” seront visibles pour tous les clients SANS mot de passe. Cette option, de
par sa nature non sécuritaire, est déconseillée mais si vous y tenez alors ajoutez aussi
l’option “Read only”
La section [printers]
Cette section fonctionne comme la section [homes] mais pour les imprimantes.
Notez que le service [printers] doit être “printable”. Autrement dit, l’option “printable” doit être à “yes”.
Si ce n’est pas le cas, le fichier smb.conf ne pourra pas se charger. C’est un cas d’erreur courant.
Une entrée [printers] typique:
[printers]
path = /usr/spool/public
guest ok = yes
printable = yes
Les autres sections
Les autres sections définissent les ressources qui seront partagées.
Forme générale:
[Nom_de_la_section]
Les options propres à cette section ici…
[Autre_nom_de_section]
Les options propres à cette section ici…
Par exemple:
Je veux partager le répertoire /etc aux usagers “guest” mais en ne leur permettant pas de créer ou
de modifier des fichiers dans ce répertoire.
[etc]
comment=Repertoire etc
path = /etc
guest ok = yes
writeable = no
J’aurais pu utiliser l’option read
only = yes aussi.
Exemples
Exemple 1:
Je veux partager le répertoire /public à tout le monde et permettre
le droit d'écrire dans ce répertoire.
[public]
comment = Repertoire public
path = /public
public = yes
writeable = yes
Il faudra peut-être créer le répertoire “public”: sudo mkdir /public
Ne pas oublier: sudo chmod 777 /public
Repartir le serveur Samba: sudo smbd restart
sudo nmbd restart
Exemple 2:
Je veux partager le répertoire /home/schasse/partage en lecture
seulement pour tout le monde.
[public]
comment = Repertoire /home/schasse/partage
path = /home/schasse/partage
public = yes
read only = yes
Repartir le serveur Samba: sudo smbd restart
sudo nmbd restart
Exemple 3:
Partager le répertoire /partage en lecture seulement et accessible
par mot de passe seulement.
Dans [global], ajoutez:
security = user
[public]
comment = Repertoire /partage
path = /partage
valid users=smb1
read only = yes
• Repartir le serveur Samba: sudo smbd restart
sudo nmbd restart
Pour créer l'usager samba:
• Créer le groupe “smbusers”:
sudo groupadd smbusers
• Créer l'usager “smb1”:
sudo useradd -g smbusers -s /bin/false smb1
• Créer le compte samba correspondant:
sudo smbpasswd -a smb1
Accès depuis un poste client Linux
Il est possible d'y accéder graphiquement avec le navigateur konqueror et le protocole smb en
utilisant l'url suivante : smb://@ip-du-serveur/nom-partage ou smb://@ip-du-serveur/
Voici à quoi ressemble cet accès graphique:
Accès en mode commande en utilisant la commande smbclient
Pour visualiser tous les partages d'un serveur.
smbclient -L //@ip-du-serveur -U NomdeCompte
entrez ensuite le mot de passe Samba du compte
Vous pouvez également mettre le nom du serveur à la place de l'adresse IP du serveur
smbclient -L //NomDuServeur -U NomdeCompte
entrez ensuite le mot de passe Samba du compte
Figure 25.2. Accès à un serveur SAMBA à partir d'un client Linux par commande
manuelle.
Cette autre commande vous permettra une fois connecté sur votre répertoire partagé d'envoyer
ou de recevoir des fichiers avec un shell du même type que ftp. Vous pouvez afficher la liste des
commandes disponibles en tapant help au prompt smb: .
smbclient //@ipduserveur/partage -U NomdeCompte
Password:
Domain=[NS1] OS={Unix] Server=[Samba 3.0.22 ]
smb: \>help
D'autres possibilités existent pour accéder à des ressources d'un serveur Samba à
partir d'un poste linux avec des logiciels comme Smb4k, Komba2pass ou swat.

Documents pareils

Samba: Concepts et fonctionnement

Samba: Concepts et fonctionnement # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation. # Do not enable this option unless you have read those documents ; encrypt passwords = yes ; smb passwd file = /etc/smbpasswd #...

Plus en détail