« Samba » : différence entre les versions
(Page créée avec « category:serveur category:debian ») |
|||
(15 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[category:serveur]] | [[category:serveur]] | ||
[[category:debian]] | [[category:debian]] | ||
Samba est une implémentation libre du protocole SMB/CIFS de Microsoft. | |||
Nous allons voir comment configurer un serveur samba afin de partager des fichiers sur un réseau local. | |||
=Installation et configuration de base= | |||
Installez le serveur samba : | |||
<pre>aptitude install samba smbclient</pre> | |||
L'installeur vous demandera de choisir un domaine de travail. Vous pouvez laisser workgroup. | |||
Éditez le fichier <code>/etc/samba/smb.conf</code> : | |||
<pre> | |||
interfaces = 192.168.0.1 | |||
bind interfaces only = yes | |||
security = user | |||
encrypt passwords = true | |||
passdb backend = tdbsam | |||
obey pam restrictions = yes | |||
unix password sync = no | |||
pam password change = no | |||
load printers = no | |||
</pre> | |||
Vous pouvez constater que j'ai choisi de désactiver la synchronisation entre les mots-de-passes linux et samba. | |||
Nous allons maintenant créer un premier partage nommé <code>link</code> accessible uniquement par l'utilisateur <code>link</code> en lecture comme en écriture. Ce partage samba permettra d'accéder au dossier <code>/srv/link/</code> sur le serveur. | |||
Editez encore une fois <code>/etc/samba/smb.conf</code> : | |||
<pre> | |||
[link] | |||
path = /srv/link/ | |||
read only = no | |||
writeable = yes | |||
valid users = link | |||
comment = link | |||
</pre> | |||
Créez maintenant l'utilisateur link sur le serveur : | |||
<pre> | |||
adduser link --disabled-login --home /srv/link/ | |||
smbpasswd -a link | |||
</pre> | |||
A partir d'une machine client, vous pouvez accéder au dossier partagé en ligne de commande grâce à <code>smbclient</code> : | |||
<pre>smbclient //192.168.0.1/link -U link password</pre> | |||
=Éditer la liste des utilisateurs samba= | |||
Pour cela, il faut utiliser l'outil <code>pdbedit</code> fournit avec le paquet <code>samba</code> sous debian/ubuntu. | |||
Pour lister les utilisateurs de la base de donnée : | |||
<pre>pdbedit --list</pre> | |||
=Monter un partage automatiquement au boot= | |||
Si vous voulez que le partage soit monté automatiquement au démarrage du client, ajoutez les lignes suivantes dans le fichier <code>/etc/fstab</code> du client : | |||
<pre> | |||
//192.168.0.1/link /mnt/link smbfs credentials=/root/.smbpasswd 0 0 | |||
</pre> | |||
Le fichier <code>/root/.smbpasswd</code> contient les informations de connexion : | |||
<pre> | |||
username=link | |||
password=password | |||
</pre> | |||
=Remonter un partage automatiquement= | |||
Ce petit script, lancé en cron, permet de vérifier l'état d'un partage samba. Il nécessite d'avoir configuré le fichier <code>/etc/fstab</code> comme décrit précédemment. | |||
<pre> | |||
#! /bin/bash | |||
name="core-link" | |||
host="192.168.0.1" | |||
port="139" | |||
mount="/mnt/link" | |||
quiet=0 | |||
if [ "$1" = "--quiet" ]; then | |||
quiet=1 | |||
fi | |||
if nc -zv -w30 $host $port <<< ” &> /dev/null; then | |||
if [ "$quiet" = 0 ]; then echo "[$name] Service available, checking link status."; fi | |||
for i in `cat /proc/mounts | cut -d' ' -f2`; do | |||
if [ "$i" = "$mount" ]; then | |||
#already mounted, stop here | |||
if [ "$quiet" = 0 ]; then echo "[$name] Link is up."; fi | |||
exit 0 | |||
fi | |||
done | |||
#nothing found, so it's not mounted | |||
if [ "$quiet" = 0 ]; then echo "[$name] Link is down. Trying to mount."; fi | |||
if mount /mnt/link; then | |||
if [ "$quiet" = 0 ]; then echo "[$name] Link established."; fi | |||
else | |||
echo "[$name] Link mount failed. See error logs above." | |||
fi | |||
else | |||
echo "[$name] Service unavailable. Will wait until next cron." | |||
fi | |||
</pre> | |||
Et le fichier crontab <code>/etc/cron.d/link</code> (lancement toutes les 5 minutes) : | |||
<pre> | |||
# m h dom mon dow user command | |||
*/5 * * * * root /root/services/link.sh --quiet | |||
</pre> |
Dernière version du 31 mai 2011 à 11:55
Samba est une implémentation libre du protocole SMB/CIFS de Microsoft.
Nous allons voir comment configurer un serveur samba afin de partager des fichiers sur un réseau local.
Installation et configuration de base
Installez le serveur samba :
aptitude install samba smbclient
L'installeur vous demandera de choisir un domaine de travail. Vous pouvez laisser workgroup.
Éditez le fichier /etc/samba/smb.conf
:
interfaces = 192.168.0.1 bind interfaces only = yes security = user encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = no pam password change = no load printers = no
Vous pouvez constater que j'ai choisi de désactiver la synchronisation entre les mots-de-passes linux et samba.
Nous allons maintenant créer un premier partage nommé link
accessible uniquement par l'utilisateur link
en lecture comme en écriture. Ce partage samba permettra d'accéder au dossier /srv/link/
sur le serveur.
Editez encore une fois /etc/samba/smb.conf
:
[link] path = /srv/link/ read only = no writeable = yes valid users = link comment = link
Créez maintenant l'utilisateur link sur le serveur :
adduser link --disabled-login --home /srv/link/ smbpasswd -a link
A partir d'une machine client, vous pouvez accéder au dossier partagé en ligne de commande grâce à smbclient
:
smbclient //192.168.0.1/link -U link password
Éditer la liste des utilisateurs samba
Pour cela, il faut utiliser l'outil pdbedit
fournit avec le paquet samba
sous debian/ubuntu.
Pour lister les utilisateurs de la base de donnée :
pdbedit --list
Monter un partage automatiquement au boot
Si vous voulez que le partage soit monté automatiquement au démarrage du client, ajoutez les lignes suivantes dans le fichier /etc/fstab
du client :
//192.168.0.1/link /mnt/link smbfs credentials=/root/.smbpasswd 0 0
Le fichier /root/.smbpasswd
contient les informations de connexion :
username=link password=password
Remonter un partage automatiquement
Ce petit script, lancé en cron, permet de vérifier l'état d'un partage samba. Il nécessite d'avoir configuré le fichier /etc/fstab
comme décrit précédemment.
#! /bin/bash name="core-link" host="192.168.0.1" port="139" mount="/mnt/link" quiet=0 if [ "$1" = "--quiet" ]; then quiet=1 fi if nc -zv -w30 $host $port <<< ” &> /dev/null; then if [ "$quiet" = 0 ]; then echo "[$name] Service available, checking link status."; fi for i in `cat /proc/mounts | cut -d' ' -f2`; do if [ "$i" = "$mount" ]; then #already mounted, stop here if [ "$quiet" = 0 ]; then echo "[$name] Link is up."; fi exit 0 fi done #nothing found, so it's not mounted if [ "$quiet" = 0 ]; then echo "[$name] Link is down. Trying to mount."; fi if mount /mnt/link; then if [ "$quiet" = 0 ]; then echo "[$name] Link established."; fi else echo "[$name] Link mount failed. See error logs above." fi else echo "[$name] Service unavailable. Will wait until next cron." fi
Et le fichier crontab /etc/cron.d/link
(lancement toutes les 5 minutes) :
# m h dom mon dow user command */5 * * * * root /root/services/link.sh --quiet