Samba : Différence entre versions

De ArchwikiFR
m (Accéder aux partages Samba : Ortho)
 
(19 révisions intermédiaires par 9 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
[[Category:Network sharing]]
 +
[[Category:Servers]]
 
[[Catégorie:Réseau]]
 
[[Catégorie:Réseau]]
 
[[en:Samba]]
 
[[en:Samba]]
Ligne 4 : Ligne 6 :
 
[http://www.samba.org/ Samba] est une implémentation du protocole [[wikipedia:fr:Server Message Block|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.
 
[http://www.samba.org/ Samba] est une implémentation du protocole [[wikipedia:fr:Server Message Block|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.
  
==Installation==
+
== Serveur ==
Vous pouvez installer seulement le client {{pkg|smbclient}} pour vous connecter aux serveurs, mais vous ne pourrez pas en créer un :
 
pacman -S smbclient
 
  
Si vous souhaitez créer un serveur, il faut installer {{pkg|samba}} :
+
===Installation===
pacman -S samba
 
  
==Configuration==
+
[https://wiki.archlinux.org/index.php/Install Installation] du paquet {{Pkg|samba}}.
  
===smb.conf===
+
Le fichier de configuration de Samba est à l'emplacement {{ic|/etc/samba/smb.conf}} et est abondamment documenté dans le {{ic|man 5 smb.conf}}.
Le fichier {{filename|/etc/samba/smb.conf}} doit être crée pour lancer le serveur Samba. Une fois crée, les administrateurs peuvent préférer une interface web pour configurer le serveur.
 
cp /etc/samba/smb.conf.default /etc/samba/smb.conf
 
  
Ensuite, vous pourrez ouvrir le fichier {{filename|/etc/samba/smb.conf}} avec votre éditeur favori ou regarder quelques lignes plus loin pour utiliser [[#SWAT|SWAT]].
+
Comme le paquet {{Pkg|samba}} ne fournit pas ce fichier, il vous faut le créer avant de lancer le service ''smb''.
  
===SWAT===
+
Un exemple documenté, qui se trouve en tant que {{ic|smb.conf.default}} dans le [https://git.samba.org/samba.git/?p=samba.git;a=blob_plain;f=examples/smb.conf.default;hb=HEAD dépôt git Samba] peut servir à la configuration dans {{ic|/etc/samba/smb.conf}}.  
[http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/SWAT.html SWAT] (Samba Web Administration Tool) fait partie de la suite Samba. Pour lancer SWAT, il faut utiliser le service ''eXtended InterNET Daemon'', xinetd.
 
  
{{Warning|Je vous recommande fortement de sauvegarder votre fichier {{filename|/etc/samba/smb.conf}} car SWAT optimise le fichier au maximum (il enlève les commentaires et seules les options non par défaut sont inscrites).}}
+
{{Note|
 +
*La configuration par défaut définit le fichier de log {{ic|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: {{ic|1=log file = /var/log/samba/%m.log}}
 +
** Changer la journalisation en une solution de back-end sans fichier: {{ic|1=logging = syslog}} avec {{ic|1=syslog only = yes}}, ou utiliser {{ic|1=logging = systemd}}
 +
*Si nécessaire; le {{ic|workgroup}} spécifié dans la Section {{ic|[global]}} devra concorder avec celui défini dans Windows (par défaut {{ic|WORKGROUP}}).
 +
*Vous pouvez installer seulement le client {{pkg|smbclient}} pour vous connecter aux serveurs, mais vous ne pourrez pas en créer un :
 +
pacman -S smbclient.
 +
}}
  
Pour utiliser SWAT, il faut d'abord installer xinetd :
+
{{Tip| Quand vous modifiez le fichier {{ic|smb.conf}}, lancez la commande [https://jlk.fjfi.cvut.cz/arch/manpages/man/testparm.1 testparm] pour visualiser d'éventuelles erreurs de syntaxe.}}
pacman -S xinetd
 
  
Editez le fichier {{filename|/etc/xinetd.d/swat}} avec votre éditeur de texte favori. Pour activer SWAT, changez la ligne {{codeline|<nowiki>disable = yes</nowiki>}} en {{codeline|<nowiki>disable = no</nowiki>}} :
 
{{file|name=/etc/xinetd.d/swat|content=<nowiki>
 
service swat
 
{
 
        port                    = 901
 
        socket_type            = stream
 
        wait                    = no
 
        user                    = root
 
        server                  = /usr/sbin/swat
 
        log_on_success        += HOST DURATION
 
        log_on_failure        += HOST
 
        disable                = yes
 
}
 
</nowiki>}}
 
  
Sous Arch Linux, {{pkg|xinetd}} est compilé avec l'option ''tcp_wrapper'' activée, vous devez ajouter la ligne suivante dans votre fichier {{filename|/etc/hosts.allow}} pour en permettre l'accès depuis votre pc:
+
=== Configuration du Pare-Feu ===
  swat: 127.0.0.1
+
 
 +
Si vous utilisez un pare-feu [https://wiki.archlinux.org/index.php/Firewall Firewall], n'oubliez pas d'ouvrir les ports requis (généralement 137-139 + 445). Pour une liste complète, voir [https://www.samba.org/~tpot/articles/firewall.html 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 [https://wiki.archlinux.org/index.php/Users_and_groups#User_management nouveau compte]].
 +
 
 +
{{Note| Le compte [https://wiki.archlinux.org/index.php/User user]/[https://wiki.archlinux.org/index.php/User_group user group] '''nobody''' devrait déjà exister sur le système, il est utilisé comme compte par défaut {{ic|guest account}} et peut être utilisé pour les partages contenant {{ic|1=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 {{ic|samba_user}} par le compte utilisateur Samba choisi :
 +
 
 +
  # smbpasswd -a ''samba_user'''.
 +
 
 +
Selon le [https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#SERVERROLE rôle du serveur], les permissions et attributs de fichiers existants [https://wiki.archlinux.org/index.php/File_permissions_and_attributes Autorisations et attributs de fichiers] peuvent devoir être modifiés pour le compte utilisateur Samba.
  
Ensuite, vous pouvez lancer xinetd :
+
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:
{{rc|xinetd}}
 
  
L'interface web est accessible à l'adresse :
+
* désactiver l'interpréteur de commandes - {{ic|usermod --shell /usr/bin/nologin --lock ''username''}}.
<nowiki>http://localhost:901/</nowiki>
+
* désactiver les connexions SSH - éditer {{ic|/etc/ssh/sshd_conf}}}, modifier l'option {{ic|AllowUsers}}.
  
==Lancement==
+
Voir également [https://wiki.archlinux.org/index.php/Security Sécurité] pour le durcissement de votre système.
{{note|''samba'' dépend du paquet {{pkg|fam}} qui est également fourni par {{pkg|gamin}}. Si vous avez installé ''fam'', il faut le démarrer avant ''samba''.}}
 
  
 +
== Lancement ==
 +
{{Warning| les services ''smbd'' et ''nmbd'' n'existent plus, utiliser '''smb''' et '''nmb'''}}
 
Lancez le service ''samba''.
 
Lancez le service ''samba''.
{{rc|samba}}
+
systemctl start smb
 +
systemctl start nmb
  
Vous pouvez le rajouter aux [[rc.conf#Services|services]] de [[rc.conf|/etc/rc.conf]]
+
Vous pouvez l'activer pour un démarrage automatique :
 +
systemctl enable smb
 +
systemctl enable nmb
  
 
==Accéder aux partages Samba==
 
==Accéder aux partages Samba==
Ligne 73 : Ligne 81 :
 
===cifs-utils===
 
===cifs-utils===
  
{{pkg|cifs-utils}} permet de monter un partage avec {{codeline|mount}}:
+
{{pkg|cifs-utils}} permet de monter un partage <tt>SMB</tt>.
mount -t cifs //serveur/partage point_de_montage -o user=utilisateur,password=mot_de_passe
+
{{tip|{{codeline|man mount.cifs}} pour plus d'options}}
  
{{tip|{{codeline|man mount.cifs}} pour plus d'options}}
+
==== 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 <tt>sec=ntlm</tt>,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 <tt>domain=</tt>.<br/>
 +
Pour sécuriser ces informations, il faut que le contenu du fichier soit visible et modifiable uniquement par l'administrateur.
  
{{tip|Le service {{codeline|netfs}} doit être dans [[rc.conf|/etc/rc.conf]] pour monter les partages ''cifs'' indiqués dans {{filename|/etc/fstab}}.}}
+
chmod 600 /Chemin/Vers/share_auth
 +
Dans <tt>/etc/fstab</tt>:
 +
//IP_Serveur/Nom_de_partage /Point/de/montage cifs credentials=/Chemin/Vers/share_auth 0 0
  
 
===gvfs===
 
===gvfs===
Ligne 92 : Ligne 116 :
 
En ligne de commande:
 
En ligne de commande:
 
  gvfs-mount smb://serveur/partage
 
  gvfs-mount smb://serveur/partage
  cd "~/.gvfs/partage sur serveur"
+
  cd /run/user/$USER/"smb-share:server=serveur,share=partage"
  
 
  gvfs-mount -u smb://serveur/partage
 
  gvfs-mount -u smb://serveur/partage
Ligne 106 : Ligne 130 :
 
Ajoutez la ligne suivante dans {{filename|/etc/fuse.conf}} :
 
Ajoutez la ligne suivante dans {{filename|/etc/fuse.conf}} :
 
   user_allow_other
 
   user_allow_other
Lancez fuse et ajoutez-le dans la ligne ''MODULES'' du fichier [[rc.conf#Modules|/etc/rc.conf}}
 
  modprobe fuse
 
 
Lancez le démon '''smbnetfs''' :
 
Lancez le démon '''smbnetfs''' :
{{rc|smbnetfs}}
+
systemctl start smbnetfs
 
Tous les partages du réseau sont immédiatement montés dans {{filename|/mnt/smbnet}}.
 
Tous les partages du réseau sont immédiatement montés dans {{filename|/mnt/smbnet}}.
  
Ligne 158 : Ligne 180 :
  
 
=== Configuration simple ===
 
=== Configuration simple ===
 
+
====Exemple 1====
 
{{file|name=/etc/samba/smb.conf|content=<nowiki>
 
{{file|name=/etc/samba/smb.conf|content=<nowiki>
 
[global]
 
[global]
Ligne 176 : Ligne 198 :
 
  public = yes
 
  public = yes
 
  writable = no
 
  writable = no
 +
</nowiki>}}
 +
====Exemple 2====
 +
Un partage complètement ouvert : n'importe qui avec un accès smb au serveur peut y faire ce qu'il veut.
 +
{{file|name=/etc/samba/smb.conf|content=<nowiki>
 +
[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
 
</nowiki>}}
 
</nowiki>}}
  

Version actuelle datée du 6 mars 2019 à 12:06


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

Installation du paquet samba.

Le fichier de configuration de Samba est à l'emplacement /etc/samba/smb.conf et est abondamment documenté dans le man 5 smb.conf.

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.

Note :
  • 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 avec syslog only = yes, ou utiliser logging = systemd
  • Si nécessaire; le workgroup spécifié dans la Section [global] devra concorder avec celui défini dans Windows (par défaut WORKGROUP).
  • Vous pouvez installer seulement le client smbclient pour vous connecter aux serveurs, mais vous ne pourrez pas en créer un :
pacman -S smbclient.
Astuce : Quand vous modifiez le fichier smb.conf, lancez la commande testparm pour visualiser d'éventuelles erreurs de syntaxe.


Configuration du Pare-Feu

Si vous utilisez un pare-feu Firewall, 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].

Note : Le compte user/user group nobody devrait déjà exister sur le système, il est utilisé comme compte par défaut 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 rôle du serveur, les permissions et attributs de fichiers existants Autorisations et attributs de fichiers 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'option AllowUsers.

Voir également Sécurité pour le durcissement de votre système.

Lancement

Attention : les services smbd et nmbd n'existent plus, utiliser smb et nmb

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.

Astuce : man mount.cifs pour plus d'options

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

Note : gvfs aussi utilise fuse mais comme il est plus ou moins lié aux interfaces graphiques...

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 démon smbnetfs :

systemctl start smbnetfs

Tous les partages du réseau sont immédiatement montés dans /mnt/smbnet.

usmb

usmb permet de monter les partages sans avoir besoin des droits root.
Il vous faut créer un fichier de configuration:

Fichier: ~/.usmb.conf
<?xml version="1.0" encoding="ISO-8859-1"?>
<usmbconfig>
  <credentials id="cred1">
    <domain>domaine</domain>
    <username>utilsateur</username>
    <password>mot_de_passe</password>
  </credentials>
  <mount id="partage1" credentials="cred1">
    <server>serveur</server>
    <share>partage</share>
    <mountpoint>repertoire_partage</mountpoint>
  </mount>
</usmbconfig>

Pour monter:

usmb partage1

Démonter:

usmb -u partage1

Exemple de configuration

Partage sans utilisateur/mot de passe

Compte invité pour tous

Fichier: /etc/samba/smb.conf
[global]
 #... 
 security = share
 #...

Compte invité pour tout utilisateur inconnu

Fichier: /etc/samba/smb.conf
[global]
 #...
 map to guest = Bad User
 # ...
 security = user

Configuration simple

Exemple 1

Fichier: /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.

Fichier: /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

Ressources