Samba (avancé)

De wikilivois
Aller à la navigationAller à la recherche


Ce manuel explique la configuration samba pour

  • un contrôleur de domaine
  • et/ou un serveur de fichiers

Généralités

http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/

Configuration du serveur

La configuration du serveur Samba s’écrit dans le fichier /etc/samba/smb.conf. La commande testparm permet de vérifier la validité et le contenu de la configuration de smb.conf. La commande grep permet de vérifier la configuration de paramètres précis :

#testparm | grep security
Les lignes peuvent être commentées par un point-virgule (;) ou dièse (#) devant la ligne.

Le fichier se décompose en une section « global » définissant les paramètres généraux suivie de sections pour chaque partage.

La section [global]

<licode file=/etc/samba/smb.conf> [global] netbios name=asteroide workgroup=WORKGROUP security=user log file=/var/log/samba/log.%m log level=1 encrypt passwords=yes hosts allow = 127. 192.168.10. </licode>

L’exemple de configuration ci-dessus définit :

  • le nom netbios du serveur
  • le nom du domaine ou groupe de travail
  • le type d’authentification utilisé. Il existe trois types user, share et server.

Au cours d’une authentification « user », le client commence la session en envoyant un login et un mot de passe. Le serveur accepte (ou refuse) en fonction de l’adéquation login/password et du nom de machine du client. Le client peut alors monter tous les partages sans mot de passe supplémentaire.

L’ authentification « share » force le client a donner un mot de passe à chaque fois qu’il veut monter un partage.

L’authentification « server » est intéressante pour joindre le serveur à un domaine. Le client donne son login/mot de passe au serveur de fichiers qui s’en sert pour vérifier l’authentification auprès d’un serveur distant (ex PDC).

  • la destination du fichier de logs (ici un fichier par machine d’où le %m)
  • le niveau de debuggage désiré dans les logs (de 0 à 10)
  • le cryptage des mots de passe
  • le fichier de mot de passe
  • l’option hosts allow permet de limiter les connexions à certaines adresses IPs.

Le manuel (man smb.conf) donne un description précise de chaque paramètre. On y trouve aussi la définition des variables utilisées par smb.conf :

  • %m nom netbios de la machine qui se connecte
  • %L nom netbios du serveur
  • %u nom de l’utilisateur du partage
  • %U nom de session de l’utilisateur sur le serveur
  • %v numéro de version Samba

Le fichier de mot de passe

Le plus simple pour samba est d'utiliser la base d'authentification - utilisateur et machine - TDB (trivial database). L'utilisation de cette base est recommandée pour les systèmes qui n'ont pas besoin d'authentification LDAP, avec moins de 250 utilisateurs.

<licode file=/etc/samba/smb.conf>

passdb backend = tdbsam

</licode>

Pour connaître la liste des utilisateurs, taper:

#pdbedit -w -L

Les autres sections

Elles correspondent à différents types de partages

[netlogon] est utile pour une configuration en PDC

[home] définit automatiquement les répertoires utilisateurs (cf serveur de fichiers)

[partage] définit tous les autres partages (cf serveur de fichiers)

Commandes de vérification

Commandes Linux

Chercher une machine samba sur l’adresse 127.0.0.1:

#nmblookup –U 127.0.0.1 __SAMBA__ 

Rechercher sur tout le réseau local :

#nmblookup –B 192.168.10.255 __SAMBA__ 

Lister les partages :

#smbclient  –L \\serveur 

Se connecter à un partage avec l’utilisateur user :

#smbclient \\serveur\partage –U user 

La commande smbmount monte les partages :

#smbmount //serveur/partage /mnt/partage –o ip=192.168.10.1, username=user

smbmount

smbmount //asteroide/Bureau /mnt/smb -o ip=192.168.111.1,username=chris
smbmount //asteroide/Bureau /home/chris/smb/
smbclient //asteroide/Bureau -U chris -I 192.168.111.1

Avec smbfs dans fstab: <licode file=/etc/fstab> //home/chris /mnt/home_chris smbfs user,auto,rw,uid=chris,credentials=.home.cre 0 0 //home/data /mnt/data smbfs user,exec,gid=users,credentials=.home.cre,codepage=cp850,iocharset=iso8859-15,debug=4 0 0 </licode> ou avec cifs : <licode file=/etc/fstab> //home/usbdisk /mnt/usbdisk cifs user,exec,gid=users,credentials=.home.cre,iocharset=iso8859-15 0 0 </licode>

Attention cifs utilise le dns pour retrouver home

<licode file=.home.cre> username=xxx password=xxx </licode>

Commandes Windows

#nbtstat –A 192.168.10.12 donne les noms netbios enregistrés par une adresse IP

#net view donne les serveurs de fichiers sur le réseau

#net view \\serveur donne les partages disponibles sur une machine

#net use h: \\serveur\partage /user:chris connecte un partage au lecteur réseau H:

#net use * /d déconnecte tous les partages.

Serveur de fichiers

Création des utilisateurs (si pas de PDC)

Il faut créer un compte Unix et un compte samba par utilisateur :

#adduser utilisateur
#smbpasswd –a utilisateur
L’option –a permet de rajouter le mot da passe utilisateur au fichier smbpasswd.

Il ne faut pas oublier de créer le « home » de l’utilisateur avec les bons droits :

#mkdir /home/utilisateur
#chown utilisateur.public /home/utilisateur -R
L’utilisateur correspond à son « login » et le groupe public, correspond au groupe de partage.
#ls -l
drwxr-xr-x    3 cdelivois InterAct     4096 Dec 19 18:57 cdelivois

Configuration de partages

Le partage [homes]

Le partage [homes] correspond au partage propre à chaque utilisateur qui correspond à son répertoire personnel définit dans /etc/password.

<licode file=/etc/samba/smb.conf> [homes] guest ok=no read only=no </licode> Le partage n’autorise pas l’accès aux invités et peut être utilisé en écriture.

Les partages « classiques »

<licode file=/etc/samba/smb.conf>

[Assistante]

browseable=Yes path=/home/assistante invalid users = root valid users = cdelivois,struttet writeable=yes create mask=0660 directory mask=0770 </licode>

Création des répertoires

Il faut créer les répertoires avec les bons droits. Par exemple pour le répertoire « films » :

#mkdir /home/films
#chown root.public /home/films
#chmod 770 /home/films

Remarque : Tous les utilisateurs doivent faire partie du même groupe (public en l’occurrence). Ils pourront alors accéder par l’explorateur windows aux fichiers du répertoire assistante s’ils sont référencés dans la ligne « valid users ».

Attention, cela veut dire que si ces utilisateurs ont un accès telnet ou ssh au système, ils peuvent récupérer tous les documents auxquels ils n’ont pas accès par l’explorateur. Si l’accès ssh est requis pour tous, le seul moyen est de créer un groupe d’accès par répertoire.

Pour inscrire un utilisateur dans un groupe, il suffit d’éditer le fichier /etc/group et de mettre l’utilisateur, à la fin de la ligne. Ex :

<licode file=/etc/group> films::500:you,me </licode>

Permissions

Paramètres avancés

<licode file=/etc/samba/smb.conf> hide unreadable = Yes cache les fichiers qui ne sont pas accessibles veto files =/*.exe/*.dll/*.com/*.vbs/*.{*}/ hide files = /fichieracacher.txt/*.test/

veto oplock files = /*.mdb/*.MDB/ </licode>

Op lock veut dire « Opportunist locking » : le client peut télécharger un fichier et le mettre en cache sur son disque dur pendant qu’il le modifie. Si un deuxième client veut accéder au fichier, le premier client est averti et met à jour la version sur le serveur. Cela améliore les performances mais l’oplock ne doit pas être utilisé lors de l’utilisation à plusieurs d’une base de données. Les oplocks peuvent être désactivés par les options oplocks et level2oplocks.

Autoriser la commande NET TIME \\SERVERNAME /SET /YES qui synchronise l’horloge client sur l’horloge du serveur. <licode>time server = Yes</licode>

Optimiser les performances du serveur avec socket options. <licode>socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192</licode>

Problèmes rencontrés

Le fichier docs/textdocs/DIAGNOSIS.TXT livré avec les sources de Samba permet de diagnostiquer les problèmes les plus courants.

Configuration avancée

http://us2.samba.org/samba/docs/man/Samba-HOWTO-Collection/passdb.html#id2554333

http://www.ofb.net/~jheiss/samba/ldap.shtml

LDAP

Configuration d'openldap

<licode file=/etc/openldap/slapd.conf> include /etc/openldap/schema/samba.schema

  1. Indices to maintain
    1. required by OpenLDAP

index objectclass eq

index cn pres,sub,eq index sn pres,sub,eq

    1. required to support pdb_getsampwnam

index uid pres,sub,eq

    1. required to support pdb_getsambapwrid()

index displayName pres,sub,eq

    1. uncomment these if you are storing posixAccount and
    2. posixGroup entries in the directory as well
    3. index uidNumber eq
    4. index gidNumber eq
    5. index memberUid eq

index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq index default sub </licode>

Create the new index by executing:

#/sbin/slapindex -f slapd.conf

Remember to restart slapd after making these changes:

#/etc/init.d/slapd restart

Before Samba can access the LDAP server you need to store the LDAP admin password into the Samba-3 secrets.tdb database by:

#smbpasswd -w secret

Configuration de samba

On considère que les comptes sont dans les groupes User, Group, Computers (cf Ldap & Linux)

Il faut aussi installer les outils smbldap (cf Ldap & Linux)

smb.conf

Adapter smb.conf avec les paramètres suivant (expliqués dans man smb.conf) <licode file=/etc/samba/smb.conf>

    1. ldap

ldap admin dn = "cn=Manager,dc=livois,dc=com" ldap ssl = off #start tls|on|off passdb backend = ldapsam:ldap://ldap.livois.com ldap suffix = dc=livois,dc=com ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap machine suffix = ou=Computers

  1. ldap filter = (&(objectclass=sambaSamAccount)(uid=%u))
    1. user & group management

add user script = /usr/sbin/useradd -d /dev/null -g workstation -s /bin/false -M %u add machine script = /usr/sbin/smbldap-useradd -w "%u" add user script = /usr/sbin/smbldap-useradd -m "%u" ldap delete dn = Yes

  1. delete user script = /usr/sbin/smbldap-userdel "%u"

add group script = /usr/sbin/smbldap-groupadd -p "%g"

  1. delete group script = /usr/sbin/smbldap-groupdel "%g"

add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" </licode>

Relancer samba.

Contrôleur de domaine

L’avantage de créer un contrôleur de domaine est le SSO (Single Sign On). Une fois que l’utilisateur est connecté au domaine, il n’a plus à donner son mot de passe pour se connecter à différentes applications. Le contrôleur de domaine le fait à sa place. Le contrôleur de domaine permet aussi d’imposer des paramètres de sécurité à chaque utilisateur.

Configuration du serveur

Configuration de base

<licode file=/etc/samba/smb.conf> [global] domain logon=yes workgroup=INTERACT domain admin group=@admins encrypt passwords=yes passwd program = /usr/bin/passwd </licode>

Les paramètres propres au PDC sont simples. Il faut indiquer que le serveur est un PDC (domain logon) ainsi que le groupe administrateur de domaine (admins). Il faut donc créer le group admins dans lequel on rajoutera l’utilisateur root :

#groupadd admins

puis éditer le fichier <licode file=/etc/group>admins:x:502:root</licode>

Indiquer aussi le nom du domaine et demander que les mots de passe soient cryptés.

Configuration avancée

Ajout automatique de machine (A FAIRE)

La ligne suivante dans /etc/samba/smb.conf crée automatiquement un compte Unix pour les machines qui se connecte au PDC. <licode file=/etc/samba/smb.conf> add user script = /usr/sbin/useradd –d /dev/null –g workstation –s /bin/false –M %u </licode>

Il faut créer au préalable le groupe workstation.

#groupadd workstation

Remarque : cette option ne sert pas pour les machines W95/W98. En effet cet système d’exploitation ne fournit aucune authentification machine.

Synchronisation des mots de passe SAMBA/UNIX (Echec)

La synchronisation de mots de passe SAMBA/UNIX a posé des problèmes. Son utilité est limité. Cependant, voici la théorie :

Dans la section global, rajouter les lignes : <licode file=/etc/samba/smb.conf> unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = "New SMB password:" %n\n "Retype new SMB password:" %n\n *changed* </licode>

La première ligne demande à samba de synchroniser les mots de passe à l’utilisation de la commande smbpasswd.

La deuxième ligne indique l’emplacement du programme passwd (/bin/passwd) par défaut.

La troisième ligne (la plus difficile à configurer) indique la syntaxe de smbpasswd.

Les espaces sont des délimiteurs entre chaque type de caractères.
L’* correspond à 0 ou plusieurs caractères de tout type.
Le %n correspond au nouveau mot de passe.
Le \n correspond à la touche entrée.

Exemple de syntaxe de smbpasswd sur Gentoo :

#smbpasswd cdelivois
New SMB password:
Retype new SMB password:
Password changed for user cdelivois.
Password changed for user cdelivois.

Pour debugger : <licode file=/etc/samba/smb.conf> passwd chat debug = yes log level=100 </licode>

Pour plus d’info, se référer au livre « Using Samba », Chapitre 6.

Le partage NETLOGON

Le partage netlogon contient :

  • les scripts de logon
  • et les politiques systèmes utilisées à la connexion

Créer le répertoire netlogon :

#mkdir --mode=0775 /home/netlogon
#chown root.admins /home/netlogon 

Etant donné l’importance du contenu de ce répertoire, ses permissions sont critiques! <licode file=/etc/samba/smb.conf> [netlogon] path=/home/netlogon logon script=logon.bat read only=yes write list=@admins </licode>

Scripts de logon (TODO)

Politiques systèmes (TODO)

Création des utilisateurs

http://us3.samba.org/samba/docs/man/Samba-HOWTO-Collection/passdb.html

Créer un groupe « public » :

#groupadd public

Il faut créer un compte Unix et Samba :

  • pour tous les utilisateurs du domaine
#adduser utilisateur –s /dev/null –G public
#pdbedit –a utilisateur
Il ne faut pas oublier de créer le « home » de l’utilisateur avec les bons droits :
#mkdir /home/utilisateur
#chown utilisateur.public /home/utilisateur –R
#chmod 700 /home/utilisateur -R
L’utilisateur correspond à son « login » et le groupe public, correspond au groupe de partage.
#ls -l
drwx------    3 cdelivois interact     4096 Dec 19 18:57 cdelivois

Remarque : pour ajouter des utilisateurs à un domaine, il faut d’abord créer un utilisateur root pour samba (#smbpasswd -a root).

Remarque Gentoo: on peut imaginer le script suivant pour créer un nombre important d’utilisateurs

<licode file=script>

  1. !/bin/bash

USERS="user1 user2 you me" GROUP=mygroup

for USER in $USERS; do useradd $USER -g $GROUP -s /dev/null mkdir /home/$USER chown $USER.$GROUP /home/$USER -R chmod 700 /home/$USER -R done </licode>

  • pour toutes les machines clientes du domaine

Cela doit être fait automatiquement en utilisant la commande add user script de smb.conf. Cependant, il est possible de créer le compte manuellement en ajoutant un « $ » à la fin du nom de machine :

#adduser –g workstation –d /dev/null –s /bin/false –n ‘nom_de_machine$’ smbpasswd –m –a machine

Jonction d’utilisateurs au domaine

Windows NT et 2000

Joindre la machine et un utilisateur au domaine

Vérifier que les services WINS et netbios sont lancés

  • Cliquer avec le bouton droit sur l’icône de poste de travail puis cliquer sur :

propriétés -> Identification Réseau -> ID Réseau.

  • Choisir les options pour se rattacher à un domaine (J’appartiens à un réseau d’entreprise) puis rentrer successivement :
    • Information sur le domaine et le compte utilisateur (Les coordonnées du compte à créer sur l’ordinateur)
    • Le domaine de l’ordinateur (son nom et le domaine à intégrer)
    • Nom d’utilisateur et mot de passe pour le domaine (coordonnées de root pour le domaine)

Il faut ensuite redémarrer l’ordinateur.

Remarque : le compte samba root doit être créé au préalable.

Créer un profil et le laisser en local pour l’utilisateur.

Une fois que le compte utilisateur est créé, il faut se connecter avec l’utilisateur pour créer un profile.

Ensuite on clique avec le bouton droit sur l’icône du poste de travail, on choisit « propriétés », et « Profil des utilisateurs » .

Cliquer sur « Modifier le type » puis choisir « Profil local » pour laisser le profil en local sur la machine.

Windows 95/98

Panneau de configuration -> Réseau-> Client pour les réseaux Microsoft

Si le client n’est pas installé, il faut l’installer avec un CDROM Windows.

Il se peut qu’un CD pour W95 soit nécessaire pour la configuration suivante. -> Propriétés

Cocher la case « ouvrir une session sur un domaine Windows NT »

Spécifier le nom du domaine.

Remarque : Si l’option connexion rapide est choisie, il est possible que les profiles Windows 95/98 ne soient pas copiés sur le serveur.

Migration des profils utilisateurs (NT)

Cas général

Attention aux données du profil (notamment les documents du bureau) qui sont rarement sauvegardées.

Se connecter en tant qu’administrateur du domaine (FIXME)

Afficher les fichiers cachés (explorer->outils->options des dossiers->Affichage).

Copier (et non pas déplacer !!!) l’ancien profil vers le nouveau

Note : les profils se trouvent dans C:\Documents and Settings\

En cas de problèmes

Mozilla

Localiser le profil sur la machine (exemple dans C:\Mozilla\Profiles\default)

Lancer le Profile Manager (en général dans le menu démarrer, sinon cela revient à lancer Mozilla avec l’option –ProfileManager).

Créer un nouveau profil et indiquer le chemin désiré.

Lancer mozilla et le tour est joué !

Remarque : 2 profiles ne peuvent pas avoir le même nom. Il faut parfois effacer un profile default. (Il existe une option laisser les fichiers dans la manip).

Office

Imprimantes

Problèmes rencontrés

Il est impossible de changer son mot de passe avec W95/W98. Ce n’est pas implémenté dans ces versions de Windows. Une possibilité est d’utiliser une interface Webmin/SWAT.

La configuration en serveur de fichiers est plus simple. On peut s’y restreindre pour un premier niveau de debuggage.

Migration et Restauration

La migration de profiles

(cf l’installation d’un contrôleur de domaine)

La restauration de sauvegardes (tar)

#cd /home
  • Restauration de répertoire partagés
#tar zxvf sauvegarde.tgz
#chown root.groupe rep1 rep2 ... repx –R
#chmod 770 rep1 rep2 … repx –R
  • Restauration de répertoire personnel
#tar zxvf sauvegarde.tgz
#chown utilisateur.groupe rep1 rep2 ... repx –R
#chmod 700 rep1 rep2 … repx –R

Annexes

Exemple de fichier de configuration smb.conf

<licode file=/etc/samba/smb.conf>

  1. Global parameters

[global]

       workgroup = workgroup
       netbios name = biblio
       server string = Samba Server %v
       encrypt passwords = Yes
       log file = /var/log/samba/log.%m
       max log size = 50
       socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
       printcap name = lpstat
       logon script = logon.cmd
       logon drive = H:
       logon home = \\Haribo\%u
       domain logons = Yes
       os level = 64
       preferred master = Yes
       domain master = Yes
       dns proxy = No
       printing = cups
       domain admin group=@admins
       add user script=/usr/sbin/useradd -d /dev/null -g workstation -s /bin/false -M %u

[homes]

       comment = Repertoire personnel
       read only = No
       browseable = No

[netlogon]

       path = /home/netlogon
       write list = @admins
       read only=yes

[profiles]

       path = /home/ntprofile
       read only = No
       create mask = 0600
       directory mask = 0700

[Assistante]

       comment = Echange de fichiers
       path = /home/films
       invalid users = root
       valid users = you,me
       public = no
       writable = yes
       printable = no
       create mask = 0770
       directory mask = 0770
       readonly = no

</licode>

Bibliographie

SAMBA Project Documentation

The Unofficial Samba HOWTO – David Lechnyr

Using Samba as a PDC – Andrew BARTLETT

Using Samba (Chapitre 6) – Robert Eckstein

Liste des options de smb.conf: http://us6.samba.org/samba/docs/using_samba/appb.html

Copyright

© 2007-2009 Christophe de Livois

Tête de GNU Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL.