mardi 6 septembre 2011

Samba Logs

La création d'un partage Samba a déjà été évoqué précédemment.

Une fois les différents partages et contrôle d'accès mis en place, il peut être intéressant d'avoir des logs clairs permettant de suivre l'activité des différents partages. En effet, par défaut, Samba regroupe ses logs dans plusieurs fichiers(1 par utilisateur et machine), et il peut être fastidieux de les parcourir et d'y trouver la bonne information. La solution préconisée par Samba est l'utilisation de . Le module le plus précis et paramétrable est .

Il vous suffit alors de compléter le fichier smb.conf de la manière suivante :

#======================= Global Settings =======================
[global]

       log level = 1 vfs:10
       vfs objects = full_audit
       full_audit:prefix = %u|%I|%m|%S
       full_audit:success = mkdir rename unlink rmdir pwrite
       full_audit:failure = none
       full_audit:facility = LOCAL7
       full_audit:priority = NOTICE

# penser à commenter les lignes suivantes :
# log file = /var/log/samba/%U.%m.log
# syslog only = yes
# syslog = 2

Les déclarations du module sont mises dans la section globale mais peuvent être également placées dans chaque partage.

Un peu d'explication à propos des déclarations :

  • la ligne "log level" : elle permet de préciser le niveau des logs (1 donnant le minimum d'informations utiles et 10 le maximum). Ici, on met le niveau global des logs de samba à "1" et celui du module à "10".
  • la ligne "vfs objects" : elle permet de déclarer l'utilisation du module full_audit sur tous les partages
  • la ligne "full_audit:prefix" : elle spécifie la syntaxe des lignes de logs (les samba peuvent être utilisées). Cette ligne donnera alors le nom d'utilisateur, l'adresse IP du client, le nom de la machine et le partage accédé, séparés par des pipes.
  • la ligne "full_audit:prefix" : elle permet de spécifier les à enregistrer.
  • la ligne "full_audit:failure" : de même avec les actions échouées
  • la ligne "full_audit:facility" elle permet d'attribuer une instance du syslog (1)
  • la ligne "full_audit:priority" : elle permet d'attribuer l'importance des messages (dans l'ordre d'urgence : EMERG, ALERT, CRIT, ERR, WARNING, NOTICE, INFO, DEBUG)
(1) Créer une instance du syslog

Pour créer une nouvelle instance du syslog, il faut aller modifier le fichier de configuration /etc/rsyslog.conf afin d'y rajouter :

       #creating a syslog facility
       local7.*        /var/log/samba/log.audit

Ce qui signifie que tous les messages de local7 seront écrit dans /var/log/samba/log.audit (qui devient alors notre fichier d'audit principal). Il faut ensuite redémarer le démon syslog pour prendre en compte les changements (avec /etc/init.d/rsyslog restart).

Exemple du fichier log.audit :
     Aug  4 16:46:04 localhost smbd[29819]: a-hyaric|172.18.60.233|cnu85175wc|a-hyaric|pwrite|ok|~$uveau Document Microsoft Word.docx
     Aug  4 16:46:12 localhost smbd[29819]: a-hyaric|172.18.60.233|cnu85175wc|a-hyaric|rename|ok|./93DC53A7.tmp|./Nouveau Document Microsoft Word.docx
     Aug  4 16:47:37 localhost smbd[29819]: a-hyaric|172.18.60.233|cnu85175wc|a-hyaric|unlink|ok|Copie de favicon.ico

Source : ici

DFS et samba

La création d'un partage Samba a déjà été évoqué précédemment.

Samba permet d'utiliser l'architecture Microsoft DFS permettant de regrouper des partages de différents serveurs sous un même partage appelé racine DFS.

Cela peut permettre de regrouper tous les liens des partages sous un seul partage réseau pour les utilisateurs ou encore de permettre une "double authentification" (la racine DFS ayant sa propre liste d'utilisateurs autorisés).

Par exemple, dans une entreprise ayant 3 partages (HR, Logistique, Compta) sur respectivement 3 serveurs de fichiers (srv1, srv2, srv3) sur 3 sites différents (172.18.10.251, 172.18.20.252, 172.18.30.253), il est alors possible de regrouper tous ses partages sous un seul partage sur un serveur. Les utilisateurs n'auront plus qu'à monter le lecteur réseau commun pour avoir accès ensuite aux différents partages. Il est également possible de mettre une racine DFS dans un racine DFS et ainsi de suite.

Il suffit pour cela d'abord modifier le fichier smb.conf :

#======================= Global Settings =======================

[global]

       host msdfs = yes

...

#======================= Share Definitions =======================

[nom_du_partage]

       msdfs root = yes
       path = /chemin/vers/le/dossier

Il faut ensuite aller dans le dossier de la racine DFS et faire un lien DFS :

# ln -s msdfs:adresse_serveur\\nom_partage_distant nom_local

Exemple de script permettant d'automatiser la création des liens DFS : symlink_DFS

Il se peut que vous rencontriez des erreurs lors de l'utilisation des DFS avec Samba 3.5.6, un passage à Samba 3.5.8 ou 3.5.9 peut résoudre vos problèmes.

lundi 13 décembre 2010

Partage avec samba

Configuration du partage de fichier avec Samba

  • le paquet samba doit être installé

# sudo aptitude install samba

  • toutes les configurations se font dans le fichier smb.conf (en faire une copie de sauvegarde au préalable)
1) Accès libre

Dans ce cas, le partage est accessible à toutes personnes connaissant le chemin. La particularité est que les accès se feront avec l'identité d'un utilisateur défini et ayant les droits sur le partage. Il est possible d'utiliser un utilisateur de la machine ou un utilisateur de crée spécialement (cf : 2.a )

a) Configuration

#======================= Global Settings =======================

[global]

       server string = %h server (Samba, Ubuntu)
       security = SHARE
       syslog = 0
       dns proxy = No
       guest account = utilisateur_par_defaut (ex: root, toto, sambauser ...)
       socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

#======================= Share Definitions =======================

[nom_du_partage]

       comment = commentaire sur le partage
       path =  chemin_du_partage
       public = yes
       guest ok = yes
       read only = no
       create mask = droit_en_création (ex: 0660)
       directory mask = droit_sur_le_répertoire (ex: 0770)
2) Accès Contrôlés

a) Les utilisateurs

Pour un peu plus de sécurité, nous pouvons demander à ce que toutes personnes voulant se connecter au partage soit identifié. Pour cela il y a deux possibilités:

  • Un utilisateur Samba (qui à juste le droit d'accès au(x) partage(s) )

Création de l'utilisateur :

sudo useradd -s /bin/false -d /dev/null -g guest nom_utilisateur

-s /bin/false interdit l’utilisation d'un Shell, -d /dev/null redirige le home vers le néant intersidéral et -g guest le groupe qui accueil les utilisateurs invités (à créer au besoin)

  • Etre un utilisateur du système (qui a le droit de se connecter sur la machine pour avoir un Shell)

Pas besoin de le crée, il exite déjà :)

  • Dans les deux cas il faut définir un mot de passe spécifique à Samba pour les utilisateurs :

sudo smbpasswd -a nom_utilisateur

b) Configuration

#======================= Global Settings =======================

[global]

  workgroup = WORKGROUP
  server string = %h server (Samba)
  dns proxy = no


#### Debugging/Accounting ####

  log file = /var/log/samba/log.%m
  max log size = 1000
  syslog = 0
  panic action = /usr/share/samba/panic-action %d


####### Authentication #######

  encrypt passwords = true
  passdb backend = tdbsam
  obey pam restrictions = yes
  unix password sync = yes
  passwd program = /usr/bin/passwd %u
  passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  pam password change = yes
  map to guest = bad user


########## Domains ###########

  usershare allow guests = yes

#======================= Share Definitions =======================

[nom_du_partage]

       comment = commentaire sur le partage
       path = chemin_du_partage
       create mask = droit_en_creation (ex: 0660)
       directory mask = droit_sur_le_repertoire (ex: 0770)
       read only = No
       security = share
3) Montage en lecteur windows

Pour monter automatiquement le partage dans windows, il est possible d'ajouter dans le dossier "Démarrage" du menu démarer un batch comprenant la ligne suivant :
net use z: \\chemin_du_partage /user:login mot_de_passe