Configuration du serveur samba

Installation du paquet Samba

aptitude install samba libpam-smbpass

Configuration de Samba

Création du fichier de sauvegarde de la configuration originale Samba.

mv /etc/samba/smb.conf /etc/samba/smb.conf.master

Création du nouveau fichier de configuration samba

testparm -s /etc/samba/smb.conf.master > /etc/samba/smb.conf

On édite le fichier /etc/samba/smb.conf

nano /etc/samba/smb.conf

Voici un exemple de configuration Samba avec les partages suivants

  • Public : Partage ouvert en lecture à tous, mais uniquemenent en écriture pour l'utilisateur nicolas
  • Transfer : Partage ouvert à tous en lecture et en écriture
  • Private : Partage autorisé en lecture et en écriture uniquement pour le groupe sambaprivate
  • Homes : Partage des répertoires utilisateurs

Pour chaque partage la corbeille réseau est activée dans le répertoire .recycle

[global]
#Nom du workgroup
  workgroup = WORKGROUP
 
#Nom sur le réseau
  netbios name = %h
 
#Description du serveur
  server string = %h NAS
 
# Restriction des interfaces réseau
  bind interfaces only = Yes
# Liste des interfaces réseau autorisées
  interfaces = 127.0.0.1 eth0
 
#Securite
#Type de sécurité par compte utilisateur
  security = user
#Synchronisation des mots de passe
  passdb backend = tdbsam
  obey pam restrictions = yes
  pam password change = Yes
  passwd program = /usr/bin/passwd %u
  passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  unix password sync = yes
#Nom du compte invité
  guest account = pcguest
 
#Paramètres de log
  syslog = 0
  log file = /var/log/samba/log.%m
  max log size = 1000
  panic action = /usr/share/samba/panic-action %d
 
#Désactivation du proxy DNS
  dns proxy = No
 
#Fichiers qui seront cachés
  hide files = /lost+found/
 
#Optimisations Samba
  strict allocate = Yes
  read raw = Yes
  write raw = Yes
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=13107
  min receivefile size = 16384
  use sendfile = true
  aio read size = 16384
  aio write size = 16384
 
############## PARTAGES ################
## Partage Public ##
[public]
#Chemin
  path = /mnt/data/share/public
 
#Description
  comment = Dossier public
 
# Masques de création
#create mask = 0700    # Fichiers : Tous les droits pour le propriétaire et rien pour les autres
#directory mask = 700  # Répertoires : idem
 
#Partage en lecture seule pour tous
read only = yes
 
#Liste d'utilisateur autorisés à écrire
write list = nicolas
 
#On autorise les invités
guest ok = yes
 
#Corbeille réseau
vfs object = recycle
recycle:repository = .recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp
 
[transfer]
#Chemin
  path = /mnt/data/share/transfer 
 
#Description
  comment = Dossier de transfert
 
#Partage en lecture/ecriture pour tous
read only = no 
 
#On autorise les invites
guest ok = yes
 
#Corbeille réseau
vfs object = recycle
recycle:repository = .recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp
 
[private]
#Chemin
  path = /mnt/data/share/private
 
#Description
  comment = Dossier privé
 
#Partage en lecture pour le groupe sambaprivate
read list = @sambaprivate 
#Partage en écriture pour le groupe sambaprivate
write list = @sambaprivate
 
#Corbeille réseau
vfs object = recycle
recycle:repository = .recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp
 
#Partage des répertoires personnels
[homes]
comment = Répertoire personnel
#Par défaut les répertoires utilisateurs sont cachés
browseable = no
#Partage en lecture/écriture
read only = no
 
#Corbeille réseau
vfs object = recycle
recycle:repository = .recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:exclude = *.tmp
recycle:exclude_dir = /tmp

On enregistre maintenant la configuration Création du répertoire de partage public

mkdir /mnt/data/share/
mkdir /mnt/data/share/public

Création du groupe Sambausers et ajout d'un utilisateur

groupadd sambausers
usermod -a -G sambausers nicolas
pdbedit -a nicolas

Création de l'utilisateur Guest

useradd -c "Guest User" -d /dev/null -s /bin/false pcguest
usermod -a -G sambausers pcguest
pdbedit -a pcguest

Puis l'on redémarre Samba

/etc/init.d/samba restart

Script de nettoyage de la corbeille réseau

Copier ce script dans /usr/local/smbclean.sh

#!/bin/sh
 
CHK_DIR="/home /data/share"
DAY_KEEP="60"
DIR_NAMES=".recycle"
VERBOSE=0
 
if [ -z "$CHK_DIR" ] || [ -z "$DAY_KEEP" ] || [ -z "$DIR_NAMES" ]; then
  echo "ERROR: One or more environment variables are not set!" >&2
  exit 1
fi
 
if [ "$CHK_DIR" = "/" ] || [ -n "$(echo "$CHK_DIR" |grep -v -e "^/")" ]; then
  echo "ERROR: Using $CHK_DIR as target directory is not allowed!" >&2
  exit 2
fi
 
if [ ! -d "$CHK_DIR" ]; then
  echo "ERROR: Directory $CHK_DIR does not exist!" >&2
  exit 3
fi
 
for DIR in $CHK_DIR/*; do
  for SUBDIR in $DIR_NAMES; do
    if [ -d "$DIR/$SUBDIR" ]; then
      # First check all file ages
      find "$DIR/$SUBDIR/" -depth -mindepth 1 -daystart -mtime +$DAY_KEEP -ctime +$DAY_KEEP ! -type d |while IFS=$'\n' read FN; do
        result=`rm -vf "$FN"`
        if [ "$VERBOSE" != "0" ] && [ -n "$result" ]; then
          echo "$result"
        fi
      done
 
      # Remove empty directories
      find "$DIR/$SUBDIR/" -depth -mindepth 1 -type d |while IFS=$'\n' read FN; do
        result=`rmdir --ignore-fail-on-non-empty "$FN"`
        if [ "$VERBOSE" != "0" ] && [ -n "$result" ]; then
          echo "$result"
        fi
      done
    fi
  done
done
 
exit 0

On ajoute la permission d'éxecution sur le script

chmod +x /usr/local/bin/smbclean.sh

On ajoute ensuite le script au cron pour qu'il soit executé chaque jour

ln -s /usr/local/bin/smbclean.sh /etc/cron.daily/smbclean

Faire démarrer samba automatiquement

sudo update-rc.d samba defaults
  • Partager le signet (social bookmarking)
  • Partager "Configuration du serveur samba" sur del.icio.us
  • Partager "Configuration du serveur samba" sur Digg
  • Partager "Configuration du serveur samba" sur blogmarks
  • Partager "Configuration du serveur samba" sur Google
  • Partager "Configuration du serveur samba" sur Facebook
  • Partager "Configuration du serveur samba" sur Twitter