Administration réseau sous Linux/Samba

SAMBA:

Samba est un service permettant de partager des répertoires et imprimantes entre des stations Linux et des stations Windows. Un How-To très complet peut être trouvé là : http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/

Cette partie présente juste une introduction à l'utilisation de samba. Nous considérons que nous sommes en mode sécurité user (security=user, nécessite un compte utilisateur unix). L'utilisation du niveau de sécurité domain et la partie partie partage avec Windows (notamment les dernières versions) n'est pas vue. Pour un accès Windows, cette page donne les quelques commandes supplémentaires: http://www.oregontechsupport.com/samba/samba.php

Configuration du service Samba

modifier

Pour la configuration de ce service le principal fichier à modifier est smb.conf qui se trouve généralement dans /etc ou /etc/samba selon la distribution.

Il existe également des interfaces graphiques pour configurer Samba.

La section [global] contient les options communes à tous les répertoires partagés.

Voici quelques options utilisables :

workgroup
Le nom du groupe de travail. Les ordinateurs du même groupe de travail se retrouvent côte à côte dans le voisinnage réseau de Windows.
server string
La description du serveur, qui apparaitra à côté de son nom dans l'explorateur Windows. Si la description contient le terme %h, il sera remplacé par le nom d'hôte de la machine.
encrypt passwords
Détermine si les mots de passe doivent être chiffrés avant d'être transmis. C'est fortement recommandé et tous les systèmes Windows à partir de 98 et NT4 SP3 utilisent cette fonctionnalité par défaut.
log file
Le nom du fichier qui contiendra le journal des activités du serveur. On peut avoir un journal par machine client en utilisant %m dans le nom du fichier. Le %m sera remplacé par le nom de la machine client.
max log size
Taille maximale du fichier journal, en Kio.
socket options
Indique les options à mettre sur les sockets comme par exemple TCP_NODELAY pour que le système envoi immédiatement les petits paquets sans attendre d'en avoir plusieurs.

De nombreuses autres options sont disponibles. Elles sont détaillées dans la page de man de smb.conf

Exemple

modifier
[global]
workgroup = maison
server string = Serveur Samba sur %h
encrypt passwords = true
log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY

Configuration du partage des répertoires

modifier

Les partages Samba sont décrits dans des sections ayant la forme suivante :

[<nom du partage>]
<option> = <valeur>
...


Les paramètres principaux sont les suivantes :

comment
La description du répertoire partagé.
path
Le chemin du répertoire partagé. C'est le contenu du répertoire indiqué qui sera partagé.
read only
Détermine si les clients pourront écrire ou non dans le répertoire partagé.
public
Autoriser ou non les connexions sans mot de passe.
valid users
Liste des seuls utilisateurs autorisés à se connecter séparés par des espaces. Si on veut autoriser tous les utilisateurs il ne faut pas mettre cette option.
browseable
Détermine si le partage apparaitra dans la liste des partages du serveur.

La section [homes] est un partage particulier. Elle définit le partage des répertoires utilisateur des comptes unix de la machine.

De nombreuses autres options sont disponibles. Elles sont détaillées dans la page de man de smb.conf

Par défaut (version 3.5.6) vous pouvez accéder à samba de façon anonyme (smbclient //serveur/nom_du_partage -U compte sans mot de passe). Pour effectuer un accès plus sécurisé (avec compte et mot de passe), vous devez également ajouter un compte samba qui se référence à un compte linux existant: adduser compte (si ce n'est pas fait) smbpasswd -a compte Les droits des répertoires et fichiers doivent être correct. Exemple chmod u+rws,g+rx,o+rx .../dossier et/ou fichier

Exemples

modifier
[cdrom]
comment = Samba server's CD-ROM
read only = yes
locking = no
path = /cdrom
guest ok = yes
[partage]
path = /media/d/partage
available = yes
browsable = yes
public = yes
writable = yes
[zelinux]
comment = Site web
path = /myrep/zelinux
read only = no

Protéger les répertoires partagés

modifier

Il est possible de rendre privé un répertoire et d'autoriser ou non des utilisateurs à y accéder.

Pour cela, pour chaque répertoire partagé ajoutez les options:

public = no
valid users = <nom des utilisateurs autorisés à accéder aux répertoires>

Pour chaque nom que vous avez rentré, il faut ajouter l'utilisateur samba avec

smbpasswd -a <nom de l'utilisateur>

Un compte unix du même nom doit exister. Si ce n'est pas le cas, il faut le créer avec la commande adduser.

Lancement du service

modifier

Lancement :

/etc/init.d/samba start

Pour le stopper :

/etc/init.d/samba stop  

Pour le relancer :

/etc/init.d/samba restart

Les modifications du fichier smb.conf sont prises en compte pour chaque nouvelle connexion. Pour les rendre effectives sur les connexions déjà établies, il faut relancer Samba.

Accès aux répertoires

modifier

Pour accéder aux partage sous Windows, il suffit d'ouvrir le voisinage réseaux d'une station Windows et de vérifier si la machine y est.

Pour se connecter en ligne de commande à un partage à partir de Linux, on peut utiliser la commande

smbclient //<nom du serveur>/<nom du partage> -U <utilisateur>

Il est également possible de monter un partage Samba avec

smbmount //<nom du serveur>/<nom du partage> <répertoire local>

Différentes options sont disponibles. On peut les consulter dans man smbclient et man smbmount. Généralement, il est conseillé d'ajouter les options -o username=compte,password=??? pour se connecter.

Par exemple, pour monter un répertoire "public" il faut préciser qu'il faut se connecter en guest :

smbmount //serveur/partage /point_de_montage -o guest


Il faut également que votre compte utilisateur ait des droits sur le montage. Le compte root peut utiliser smbmount sans trop de problème.

Autrement, plusieurs possibilités existent:

  1. compléter le fichier /etc/fstab avec votre montage //<IP-ADRESS>/<folder_on share> <your_local_mountpoint cifs defaults,iocharset=utf8,codepage=cp850,uid=1000,gid=1000,noauto,user,credentials=~/.smbcredentials 0 0)
  2. ajouter des droits dans sudoers. (par défaut sous ubuntu 10.10, sudo smbclient //<nom du serveur>/<nom du partage> <répertoire local>-o username=compte,password=??? fonctionne bien)