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
modifierPour 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
modifierLes 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
modifierIl 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
modifierLancement :
/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
modifierPour 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:
- 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)
- 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)