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