« Samba » : différence entre les versions

De Linux Server Wiki
Aller à la navigation Aller à la recherche
Ligne 74 : Ligne 74 :
     fi
     fi
   done
   done
   #nothin found, so it's not mounted
   #nothing found, so it's not mounted
   if [ "$quiet" = 0 ]; then echo "[$name] Link is down. Trying to mount."; fi
   if [ "$quiet" = 0 ]; then echo "[$name] Link is down. Trying to mount."; fi
   if mount /mnt/link; then
   if mount /mnt/link; then

Version du 23 février 2011 à 19:58


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

[link]
path = /srv/link/
read only = no
writeable = yes
valid users = link
comment = link

Créez l'utilisateur link :

adduser link --disabled-login --home /srv/link/
smbpasswd -a link

A partir d'une machine client, vous pouvez accéder au dossier partagé avec smbclient :

smbclient //192.168.0.1/link -U link password

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