Samba (Français)
Samba est une implémentation du protocole SMB/CIFS, il facilite le partage entre les systèmes Linux/Unix et Windows. Samba se configure très facilement et s'utilise de manière simple.
Serveur
Installation
Vous pouvez installer le paquet samba avec Pacman.
pacman -Syu samba
Le fichier de configuration de Samba est à l'emplacement /etc/samba/smb.conf
et est abondamment documenté dans la page smb.conf(5).
Comme le paquet samba ne fournit pas ce fichier, il vous faut le créer avant de lancer le service smb.
Un exemple documenté, qui se trouve en tant que smb.conf.default
dans le dépôt git Samba peut servir à la configuration dans /etc/samba/smb.conf
.
- La configuration par défaut définit le fichier de log
log file
à un emplacement non modifiable, cause d'erreurs - utiliser l'un des contournements suivants:- Modifier le chemin du fichier de log vers un emplacement modifiable:
log file = /var/log/samba/%m.log
- Changer la journalisation en une solution de back-end sans fichier:
logging = syslog
avecsyslog only = yes
, ou utiliserlogging = systemd
- Modifier le chemin du fichier de log vers un emplacement modifiable:
- Si nécessaire; le
workgroup
spécifié dans la Section[global]
devra concorder avec celui défini dans Windows (par défautWORKGROUP
). - Vous pouvez installer seulement le client smbclient pour vous connecter aux serveurs, mais vous ne pourrez pas en créer un :
pacman -S smbclient.
smb.conf
, lancez la commande testparm pour visualiser d'éventuelles erreurs de syntaxe.Configuration du Pare-Feu
Si vous utilisez un pare-feu [Firewall|Firewall (en)], n'oubliez pas d'ouvrir les ports requis (généralement 137-139 + 445). Pour une liste complète, voir Utilisation du port Samba.
Utilisation
Gestion des utilisateurs
Ajout d'un utilisateur
Samba a besoin d'un compte utilisateur Linux - vous pouvez utiliser un compte utilisateur existant ou créer un nouveau compte.
guest account
et peut être utilisé pour les partages contenant guest ok = yes
, évitant ainsi le besoin de se connecter sur ce partage.Bien que le nom d'utilisateur soit partagé avec le système Linux, Samba utilise un mot de passe distinct de celui des comptes utilisateurs Linux. Remplacer samba_user
par le compte utilisateur Samba choisi :
# smbpasswd -a samba_user'.
Selon le smb.conf(5), les permissions et attributs de fichiers existants Autorisations et attributs de fichiers (en) peuvent devoir être modifiés pour le compte utilisateur Samba.
Si vous voulez que le nouvel utilisateur ne soit autorisé qu'à accéder à distance aux partages du serveur de fichiers via Samba, vous pouvez restreindre d'autres connexions à options:
- désactiver l'interpréteur de commandes -
usermod --shell /usr/bin/nologin --lock username
. - désactiver les connexions SSH - éditer
/etc/ssh/sshd_conf
}, modifier l'optionAllowUsers
.
Voir également Sécurité (en) pour le durcissement de votre système.
Lancement
Lancez le service samba.
systemctl start smb systemctl start nmb
Vous pouvez l'activer pour un démarrage automatique :
systemctl enable smb systemctl enable nmb
Accéder aux partages Samba
Les dossiers partagés sont accessibles de plusieurs façons différentes, graphique ou en ligne de commande.
smbclient
Samba fournit le client smbclient qui agit tel un client ftp pour les partages samba:
Pour lister les partages d'un serveur:
smbclient -L serveur [-U utilisateur[%mot_de_passe]]
Pour interagir avec un partage tel un serveur ftp:
smbclient //serveur/partage [-U utilisateur[%mot_de_passe]]
cifs-utils
cifs-utils permet de monter un partage SMB
.
Montage manuel
mount -t cifs //IP_Serveur/Nom_de_partage /Point/de/montage -o user=utilisateur,sec=ntlm,password=mot_de_passe
Pour les montages cifs à partir du kernel 3.8 , il faut rajouter sec=ntlm
,soit sécurité=ntlm
Montage automatique
Avec les droits administrateur créez un fichier contenant les paramètres d'authentification du partage.
username=utilisateur password=mot_de_passe
Vous pouvez également ajouter un domaine domain=
.
Pour sécuriser ces informations, il faut que le contenu du fichier soit visible et modifiable uniquement par l'administrateur.
chmod 600 /Chemin/Vers/share_auth
Dans /etc/fstab
:
//IP_Serveur/Nom_de_partage /Point/de/montage cifs credentials=/Chemin/Vers/share_auth 0 0
gvfs
gvfs dispose d'un backend nommé gvfs-smb permettant de monter un partage samba.
gvfs est notamment (ou peut être) utilisé par nautilus (GNOME), thunar (XFCE) ou pcmanfm.
Il permet aussi de l'utiliser en ligne de commande grâce à gvfs-mount
.
Pour accéder à un partage depuis un gestionnaire de fichier compatible gvfs:
smb://serveur/partage
En ligne de commande:
gvfs-mount smb://serveur/partage cd /run/user/$USER/"smb-share:server=serveur,share=partage"
gvfs-mount -u smb://serveur/partage
fuse
smbnetfs
smbnetfs permet de parcourir les partages disponibles sur le réseau:
pacman -S smbnetfs
Ajoutez la ligne suivante dans /etc/fuse.conf
:
user_allow_other
Lancez le daemon smbnetfs :
systemctl start smbnetfs
Tous les partages du réseau sont immédiatement montés dans /mnt/smbnet
.
Exemple de configuration
Partage sans utilisateur/mot de passe
Compte invité pour tous
/etc/samba/smb.conf
[global] #... security = share #...
Compte invité pour tout utilisateur inconnu
/etc/samba/smb.conf
[global] #... map to guest = Bad User # ... security = user
Configuration simple
Exemple 1
/etc/samba/smb.conf
[global] workgroup = WORKGROUP server string = Samba Server netbios name = PC_NAME security = share guest account = utilisateur username map = /etc/samba/smbusers name resolve order = hosts wins bcast wins support = no [public] comment = Partage publique path = chemin_vers_le_partage available = yes browsable = yes public = yes writable = no
Exemple 2
Un partage complètement ouvert : n'importe qui avec un accès smb au serveur peut y faire ce qu'il veut.
/etc/samba/smb.conf
[global] workgroup = WORKGROUP usershare allow guests = yes map to guest = Bad User guest account = nobody server string = Samba Server [public] path = /srv/smb/public available = yes browsable = yes public = yes writable = yes read only = no guest ok = yes security = user