#1 Le 20/01/2010, à 11:49
- malbo
configuration Samba de Ubuntu 10.04 pour réseau domestique
Le contexte :
- Un PC doit pouvoir partager ses fichiers avec accès en lecture et en écriture dans le cas où il démarre sous XP ou bien dans le cas où il démarre sous Ubuntu 10.04 (ceci explique que les fichiers partagés sont sur des partitions NTFS et que je suis amené à utiliser ntfs-config)
- les partages de chaque PC sont accessibles en lecture et écriture depuis les autres PC
- Comme mon réseau domestique est derrière une freebox V5 en mode routeur mais avec un des PC autorisé en DMZ, j'ai pu vérifier avec la fonction FreeWifi de la freebox certaines vulnérabilités auxquelles je pense (que dire d'autre...) avoir remédié dans la procédure ci-dessous (la fonction FreeWifi me permet de simuler un PC qui tenterait de pénétrer de l'extérieur du réseau domestique)
1) Montage des partages
Installer ntfs-config : http://doc.ubuntu-fr.org/tutoriel/ntfs#configuration
et faire le montage des partitions sur lesquelles se trouvent les dossiers qu'on souhaite partager (Système >Administration > Outil de configuration NTFS).
2) Modifications du fichier smb.conf
Voir à quoi ça doit ressembler quand les modifs seront faites dans "Mon fichier smb.conf après cette procédure" que j'ai collé au paragraphe 5
Compléter le smb.conf. Pour cela, appui sur les deux touches clavier ALT+F2 puis dans la fenêtre "lancer une application" qui s'ouvre, taper (ou copier-coller) :
gksudo gedit /etc/samba/smb.conf
puis faire les modifs suivantes :
- changer le nom du workgroup pour MSHOME (si MSHOME est bien le nom du groupe de travail déjà adopté pour les autres PC du réseau qui sont sous Windows)
- ajouter une ligne pour que le PC soit reconnu dans le groupe de travail :
netbios name = LeNom qu'on choisit de lui donner (n'importe quoi mais peu de caractères)
Ce n'est pas indispensable d'adopter un netbios name si le PC a un nom bien à lui sur le réseau. Pour en juger, ouvrir un terminal (Ctrl+Alt+t) et regarder ce qui apparait et qui est de la forme :
utilisateur@nomdupc:~$
si "nomdupc" est "ubuntu" ou bien si c'est trop vague pour bien identifier la machine sur le réseau, on peut définir ici un netbios name. Sinon, on ne créée pas cette ligne "netbios name =..." et c'est "nomdupc" qui sera utilisé par Samba.
- ajouter une ligne pour qu'un utilisateur puisse partager un dossier dont il n'est pas propriétaire :
usershare owner only = false
Enregistrer et fermer
Personnellement, ce sont les seules modifs du fichier smb.conf que je fais et après modifs, ça donne ça (extrait du smb.conf localisé sur les modifs) :
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = MSHOME
netbios name = PCACER
usershare owner only = false
3) partager les dossier avec le mode "partage utilisateur" (ou "usershares")
C'est expliqué là : (http://doc.ubuntu-fr.org/samba#partager … usershares) :
Pour créer un partage, clic-droit sur un dossier, et choisir l'entrée "option de partage" (cette option a changé de nom pour Ubuntu 14.04 : elle s'appelle "Partage de réseau local").
Vous pouvez choisir le nom du partage (qui est le nom sous lequel le dossier apparaîtra sur les autres ordinateurs du réseau), ainsi que les droits d'accès. Moi, je coche la case "Permettre aux autres utilisateurs de modifier ce dossier" mais je décoche la case "Accès d'évaluation (pour les personnes sans compte utilisateur)" sinon mes partages peuvent être atteints par des virus car tout le monde peut y avoir accès sans Login ni mot de passe.
Le dossier sera alors accessible aux autres ordinateurs du réseau tournant sur Ubuntu.
Les noms d'utilisateur et mots de passe qui sont demandés pour accéder au partage de fichier sont ceux des comptes utilisateur d'Ubuntu sur lequel se trouve les dossiers partagés.
A noter : dans cette dernière étape, si samba n'était pas déjà installé,
l'action sur l'entrée "option de partage" enclenche la proposition d'installer samba
(les paquets samba et libpam-smbpass sont installés automatiquement),
suivie d'un redémarrage session (imposé).
4) RÉGLAGES DU PARE-FEU
a) pare-feu Firestarter (pour Ubuntu 10.04 et Ubuntu 10.10)
installer "Firestarter" (Applications > Logithèque Ubuntu).
Réglages Firestarter ( Applications > Internet > Firestarter et si ça veut toujours pas, taper dans un terminal : sudo firestarter) :
- Préférences > politique, cocher "appliquer les changements de politique immédiatement.
- autoriser le broadcast sur le réseau externe et le réseau interne dans les Options Avancées de Firestarter : les deux cases doivent être décochées.
- Dans l'onglet "politique", clic droit dans le champ "autoriser les connexions de l'hôte" > Ajouter une règle, il faut ajouter les IP des autres PC du groupe de travail sinon on n'arrive pas à les explorer avec samba (192.168.0.2, 192.168.0.3, etc...)
- Toujours dans l'onglet "politique", clic droit dans le champ "autoriser le service " > Ajouter une règle, faire dérouler le menu du champ "nom" et sélectionner "samba" et dans le champ "quand la source est", entrer l'adresse IP de chacun des PC. Il faut ajouter une règle samba pour chaque PC du réseau y compris le PC sur lequel on est en train de faire le réglage de Firestarter. Cette limitation de l'accès aux seuls PC du réseau domestique permet d'éviter un accès au partage depuis l'extérieur du réseau (oui, je me suis fait infecter les partages parce que j'avais choisi imprudemment "quand la source est" tout le monde)
- Onglet "évènements", observer les connexions bloquées qui pourraient apparaitre dans les manips de l'étape suivante (si on voit qu'une connexion comprenant l'adresse IP d'un des PC du réseau est bloquée, on peut en déduire que quelque chose ne va pas - comme avec Zonealarm sous Windows - et donner des autorisations en conséquence)
b) avec pare-feu Gufw (pour Ubuntu 11.04 et Ubuntu 11.10)
Il est bien évident que Gufw peut être utilisé pour Ubuntu 10.04 et 10.10 au lieu de Firestarter. Moi je suis passé à Gufw contraint et forcé du fait que Firestarter ne fonctionnait plus chez moi avec Natty sinon j'aurais conservé Firestarter...
installer "gufw" (Applications > Logithèque Ubuntu, gufw est désigné "Configuration du pare-feu" dans la Logithèque), puis le lancer (Système > Administration > Configuration du pare-feu), cliquer sur le bouton "Unlock" (le mot de passe sera demandé pour aller plus loin), cocher la case "Activé" et faire les réglages suivants :
Entrant : Deny, Sortant : Allow
Règles (cliquer sur le bouton "Ajouter" pour éditer la première règle") :
règle 1 : onglet "Préconfigurée" : Allow - In - Service - Samba
règle 2 : onglet "Avancé" : Allow - In - Both - 192.168.0.2
règle 3 : onglet "Avancé" : Allow - In - Both - 192.168.0.3
Et autant de règles qu'il y a de PC dans le réseau en plus de 192.168.0.2 et 192.168.0.3 (si on n'ajoute pas ces règles, on n'arrive pas à explorer ces PC distants par Raccourcis > Réseau (on a un message : " Impossible d'afficher smb://nomdupc Erreur : L'obtention de la liste des partages du serveur a échoué Sélectionnez un autre visionneur et essayez à nouveau ")
A l'issue de ce réglage, on peut vérifier le résultat obtenu en passant la commande "sudo ufw status" dans un terminal :
~$ sudo ufw status
État : actif
Vers Action Depuis
---- ------ ------
135,139,445/tcp ALLOW Anywhere
137,138/udp ALLOW Anywhere
Anywhere ALLOW 192.168.0.2
Anywhere ALLOW 192.168.0.3
5) C'est fini. On essaie ?
Si tous les autres PC du réseau sont réglés aussi ET ALLUMES DEPUIS AU MOINS 10 MINUTES, on se lance : Raccourcis > Réseau
L'icône "Réseau Windows" doit apparaitre, double-clic dessus : l'icône MSHOME apparait, double-clic dessus : après quelques secondes, tous les PC du réseau apparaissent sous leur nom "netbios name" pour ceux configurés selon la présente procédure, ou bien sous leur nom "windows". Double-clic sur un PC : tous les dossiers partagés apparaissent.
Mon fichier smb.conf après cette procédure :
#======================= Global Settings =======================
[global]
## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = MSHOME
netbios name = PCMEDION
usershare owner only = false
# server string is the equivalent of the NT Description field
server string = %h server (Samba, Ubuntu)
# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
# wins support = no
# WINS Server - Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
; wins server = w.x.y.z
# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy = no
# What naming service and in what order should we use to resolve host names
# to IP addresses
; name resolve order = lmhosts host wins bcast
#### Networking ####
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
; interfaces = 127.0.0.0/8 eth0
# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
; bind interfaces only = yes
#### Debugging/Accounting ####
# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m
# Cap the size of the individual log files (in KiB).
max log size = 1000
# If you want Samba to only log through syslog then set the following
# parameter to 'yes'.
# syslog only = no
# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
syslog = 0
# Do something sensible when Samba crashes: mail the admin a backtrace
panic action = /usr/share/samba/panic-action %d
####### Authentication #######
# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
# security = user
# You may wish to use password encryption. See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
encrypt passwords = true
# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
passdb backend = tdbsam
obey pam restrictions = yes
# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
unix password sync = yes
# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
pam password change = yes
# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
map to guest = bad user
########## Domains ###########
# Is this machine able to authenticate users. Both PDC and BDC
# must have this setting enabled. If you are the BDC you must
# change the 'domain master' setting to no
#
; domain logons = yes
#
# The following setting only takes effect if 'domain logons' is set
# It specifies the location of the user's profile directory
# from the client point of view)
# The following required a [profiles] share to be setup on the
# samba server (see below)
; logon path = \\%N\profiles\%U
# Another common choice is storing the profile in the user's home directory
# (this is Samba's default)
# logon path = \\%N\%U\profile
# The following setting only takes effect if 'domain logons' is set
# It specifies the location of a user's home directory (from the client
# point of view)
; logon drive = H:
# logon home = \\%N\%U
# The following setting only takes effect if 'domain logons' is set
# It specifies the script to run during logon. The script must be stored
# in the [netlogon] share
# NOTE: Must be store in 'DOS' file format convention
; logon script = logon.cmd
# This allows Unix users to be created on the domain controller via the SAMR
# RPC pipe. The example command creates a user account with a disabled Unix
# password; please adapt to your needs
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
# This allows machine accounts to be created on the domain controller via the
# SAMR RPC pipe.
# The following assumes a "machines" group exists on the system
; add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
# This allows Unix groups to be created on the domain controller via the SAMR
# RPC pipe.
; add group script = /usr/sbin/addgroup --force-badname %g
########## Printing ##########
# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
# load printers = yes
# lpr(ng) printing. You may wish to override the location of the
# printcap file
; printing = bsd
; printcap name = /etc/printcap
# CUPS printing. See also the cupsaddsmb(8) manpage in the
# cupsys-client package.
; printing = cups
; printcap name = cups
############ Misc ############
# 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 = /home/samba/etc/smb.conf.%m
# Most people will find that this option gives better performance.
# See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/speed.html
# for details
# You may want to add the following on a Linux system:
# SO_RCVBUF=8192 SO_SNDBUF=8192
# socket options = TCP_NODELAY
# The following parameter is useful only if you have the linpopup package
# installed. The samba maintainer and the linpopup maintainer are
# working to ease installation and configuration of linpopup and samba.
; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
# Domain Master specifies Samba to be the Domain Master Browser. If this
# machine will be configured as a BDC (a secondary logon server), you
# must set this to 'no'; otherwise, the default behavior is recommended.
# domain master = auto
# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
; idmap uid = 10000-20000
; idmap gid = 10000-20000
; template shell = /bin/bash
# The following was the default behaviour in sarge,
# but samba upstream reverted the default because it might induce
# performance issues in large organizations.
# See Debian bug #368251 for some of the consequences of *not*
# having this setting and smb.conf(5) for details.
; winbind enum groups = yes
; winbind enum users = yes
# Setup usershare options to enable non-root users to share folders
# with the net usershare command.
# Maximum number of usershare. 0 (default) means that usershare is disabled.
; usershare max shares = 100
# Allow users who've been granted usershare privileges to create
# public shares, not just authenticated ones
usershare allow guests = yes
#======================= Share Definitions =======================
# Un-comment the following (and tweak the other settings below to suit)
# to enable the default home directory shares. This will share each
# user's home directory as \\server\username
;[homes]
; comment = Home Directories
; browseable = no
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
; read only = yes
# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
; create mask = 0700
# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
; directory mask = 0700
# By default, \\server\username shares can be connected to by anyone
# with access to the samba server. Un-comment the following parameter
# to make sure that only "username" can connect to \\server\username
# This might need tweaking when using external authentication schemes
; valid users = %S
# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; read only = yes
; share modes = no
# Un-comment the following and create the profiles directory to store
# users profiles (see the "logon path" option above)
# (you need to configure Samba to act as a domain controller too.)
# The path below should be writable by all users so that their
# profile directory may be created the first time they log on
;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
; write list = root, @lpadmin
# A sample share for sharing your CD-ROM with others.
;[cdrom]
; comment = Samba server's CD-ROM
; read only = yes
; locking = no
; path = /cdrom
; guest ok = yes
# The next two parameters show how to auto-mount a CD-ROM when the
# cdrom share is accesed. For this to work /etc/fstab must contain
# an entry like this:
#
# /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0
#
# The CD-ROM gets unmounted automatically after the connection to the
#
# If you don't want to use auto-mounting/unmounting make sure the CD
# is mounted on /cdrom
#
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom
Et le résultat de la commande testparm (dans un terminal) :
malbo@PCMEDION:~$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = MSHOME
netbios name = PCMEDION
server string = %h server (Samba, Ubuntu)
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
usershare owner only = No
panic action = /usr/share/samba/panic-action %d
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No
browsable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
Mise à jour du 24-3-2011 : ajout du pare-feu Gufw au paragraphe 4b, applicables à Natty (Ubuntu 11.04) du fait que Firestarter ne fonctionne plus chez moi pour Natty Alpha3 (instable)
Dernière modification par malbo (Le 24/03/2014, à 10:12)
Hors ligne