Le système d'exploitation GNU-Linux/Le partage de fichiers Samba

Un livre de Wikilivres.



Introduction[modifier | modifier le wikicode]

Samba est l'implémentation du protocole SMB (Server Message Block) sous Unix / Linux. Il sert à partager des fichiers et des imprimantes avec les réseaux Microsoft.

Site officiel : www.samba.org

Samba lance deux services : smbd et nmbd.

Le protocole SMB est tout sauf performant : il pollue le réseau par l'utilisation intensive du broadcast.

Samba utilise les ports 137 (netbios name service, nbname, en UDP), 138 (netbios datagram service nbdatagram, en UDP), 139 (netbios session service, nbsession, en TCP), et 445 ("direct-hosted" tcp, en tcp et udp).

La méthode de connexion traditionnelle smb utilise les ports 137, 138 et 139 tandis que la nouvelle méthode (CIFS, sur Windows XP) n'utilise que le port 445.

Installation[modifier | modifier le wikicode]

Pour installer Samba, on tape la commande suivante :

 # apt-get install samba smbclient smbfs winbind

Configuration[modifier | modifier le wikicode]

Le fichier de configuration de Samba est /etc/samba/smb.conf.

Le programme testparm analyse le fichier smb.conf et signale les erreurs éventuelles.

Après avoir modifié la configuration, il faut relancer le service :

 # /etc/init.d/samba restart


Le fichier /etc/samba/smb.conf se divise en différentes sections :

  • La section [global] : configuration globale de samba
  • La section [homes] : cette section particulière permet de remonter une ressource qui correspond au répertoire de travail (home directory) de l'utilisateur qui s'est authentifié.

On peut ensuite créer différentes sections, une par partage voulu.

Samba peut fonctionner de différentes manières. Voici quelques cas de figures courants.


Le partage par ressource sur un réseau Workgroup[modifier | modifier le wikicode]

Voici un fichier /etc/samba/smb.conf permettant de partager une ressource (répertoire ou imprimante) sur un réseau Workgroup :

 # PARTAGE PAR RESSOURCES (share)
 
 # Il y a 2 cas possibles :
 #
 # CAS n°1 : on partage une ressource totalement anonyme
 # CAS n°2 : on partage une ressource avec un mot de passe associé à la ressource
  
 # Section GLOBAL
 # Configuration globale de Samba
 [global]
       # Nom du groupe de travail
       workgroup = WORKGROUP
       
       # Nom Netbios de la machine (identification réseau)
       netbios name = PC230
       
       # Chaine de commentaire associé au serveur (voisinage réseau)
       server string = %h Serveur (Samba %v)
       
       # Utilisateurs interdits
       invalid users = root
       
       # Enregistre un fichier de log par machine cliente du réseau MS
       log file = /var/log/samba/log.%m
       
       # Taille maximale des logs : 1 Mo
       max log size = 1000
       
       # On n'utilise pas Syslog pour enregistrer les logs
       syslog = 0
       
       # On fait un partage par ressources
       security = share
       
       # On utilise les mots de passe encryptés
       # (attention, W95 et W98a fonctionnent avec les mdp en clair)
       encrypt passwords = true
       
       # Accélère les transferts réseaux
       socket options = TCP_NODELAY
       
       # Empeche nmbd de chercher à résoudre le nom netbios via le DNS
       dns proxy = no
       
       # Nom du compte invité qui va permettre de créer une
       # ressource partagée par mot de passe (celui du compte invite)
       guest account = invite
       
       # Emplacement du fichier contenant les logins et mdp samba
       smb passwd file = /etc/samba/smbpasswd
       
       # Pour récupérer les imprimantes définies dans CUPS
       printing = cups  
       
       
 # Section HOMES
 # Cette section est inutile ici car on utilise le mode share
 
 
 # Section PRINTERS
 # Cette section permet de partager les imprimantes définies sur le serveur
 [printers]
       # Le commentaire associé à l'imprimante
       comment = Les imprimantes
       
       # Affiche les imprimantes dans la liste des partages du serveur
       browseable = yes
       
       # Dans le cas d'une imprimante, c'est l'emplacement 
       # des fichiers temporaires
       path = /tmp
 
       # Spécifie qu'il s'agit d'une imprimante et non un répertoire
       printable = yes
       
       # Partage l'imprimante de manière anonyme
       public = yes
       
       # Logique
       writable = no
       
       # Empeche d'autres utilisateurs de supprimer mes impressions
       create mode = 0700
 
 
 # Sections REPERTOIRES PARTAGES
 
 # CAS n°1: un CDROM partagé anonymement
 [cdrom]
       # Le commentaire associé au CDROM
       comment = Le CDROM
       
       # Point de montage du CDROM
       # synonyme de directory =
       path = /cdrom
       
       # Empeche le bloquage d'un fichier par un utilisateur
       locking = no
        
       # Logique
       writable = no
       
       # Partage le CDROM de manière anonyme
       public = yes
 
 
 # CAS n°2 : un répertoire partagé mais protégé par mot de passe
 [partage]
       # Le commentaire associé au répertoire
       comment = Un répertoire partagé mais protégé par mot de passe
       
       # Emplacement du répertoire partagé
       path = /home/partage
       
       # Support en lecture / écriture
       # synonyme de read only = no
       writable = yes
       
       # Partage anonyme désactivé (cas par défaut)
       # synonyme de guest ok = no
       public = no
       
       # Voir explication ci-dessous
       valid users = invite
       
       # Masque de création des fichiers et répertoires
       create mask = 0644
       directory mask = 0755
        

Dans le cas du mode share, pour pouvoir positionner un mot de passe sur une ressource, il faut créer un compte UNIX 'invite' :

 # adduser --shell /bin/false --disabled-login invite

On crée ensuite une entrée dans le fichier /etc/samba/smbpasswd :

 # smbpasswd -a invite

Le mot de passe saisi correspondra à celui du répertoire partagé.

NB : dans les versions récentes de Samba, il faut utiliser la commande pdbedit à la place de smbpasswd :

 # pdbedit -a invite

Il faut ensuite créer le répertoire partagé et donner l'arborescence partagée à l'utilisateur invite du groupe invite :

 # mkdir /home/partage
 # chown nobody.invite /home/partage

NB : il faut que l'utilisateur nobody ait le droit d'écriture sur le répertoire partagé.

Petit rappel : il est toujours utile de faire un testparm pour vérifier la cohérence du fichier de configuration, et ne pas oublier de relancer le service pour que les modifications soient prises en compte.

On peut tester la configuration avec la commande smbclient :

 # smbclient -L PC230
 Password:
 Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.24]
 
       Sharename       Type      Comment
       ---------       ----      -------
       cdrom           Disk      Le CDROM
       partage         Disk      Un répertoire partagé mais protégé par mot de passe
       IPC$            IPC       IPC Service (pc230 Serveur (Samba 3.0.24))
       HP_LaserJet_1200_LPT_parport0_HPLIP Printer   HP LaserJet 1200
 
 Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.24]
 
       Server               Comment
       ---------            -------
       PC230                pc230 Serveur (Samba 3.0.24)
       Workgroup            Master
       ---------            -------
       ...                  ...
       

La commande smbclient demande un mot de passe, on tape entrée.

Le partage par utilisateur sur un réseau Workgroup[modifier | modifier le wikicode]

Voici un fichier /etc/samba/smb.conf permettant de partager une ressource (répertoire ou imprimante) avec une authentification Utilisateur / Mot de passe sur un réseau Workgroup :

 # PARTAGE PAR UTILISATEUR (user) - Groupe de travail
 
 # Il y a 2 cas possibles :
 #
 # CAS n°1 : on partage une ressource totalement anonyme
 # CAS n°2 : cas normal du mode user, on fait une authentification 
 #           par login et mot de passe
 
 
 # Section GLOBAL
 # Configuration globale de Samba
 [global]
       # Nom du groupe de travail
       workgroup = WORKGROUP
       
       # Nom Netbios de la machine (identification réseau)
       netbios name = PC230
       
       # Chaîne de commentaire associé au serveur (voisinage réseau)
       server string = %h Serveur (Samba %v)
       
       # Utilisateurs interdits
       invalid users = root
       
       # Enregistre un fichier de log par machine cliente du réseau MS
       log file = /var/log/samba/log.%m
       
       # Taille maximale des logs : 1 Mo
       max log size = 1000
       
       # On n'utilise pas Syslog pour enregistrer les logs
       syslog = 0
       
       # On fait un partage par utilisateur
       security = user
       
       # On utilise les mots de passe encryptés
       # (attention, W95 et W98a fonctionnent avec les mdp en clair)
       encrypt passwords = true
       
       # Accélère les transferts réseaux
       socket options = TCP_NODELAY
       
       # Empêche nmbd de chercher à résoudre le nom netbios via le DNS
       dns proxy = no
       
       # Nom du compte invité qui va permettre de créer une
       # ressource partagée par mot de passe (celui du compte invite)
       # POUR LE CAS n°1
       guest account = invite
       
       # Emplacement du fichier contenant les logins et mdp samba
       # concerne le CAS n°1 et n°2
       smb passwd file = /etc/samba/smbpasswd
       
       
 # Section HOMES
 # Cette section particulière permet de remonter une ressource
 # qui correspond au répertoire de travail (home directory)
 # de l'utilisateur qui s'est authentifié
 [homes]
       # Correspond au home directory de l'utilisateur authentifié
       # %U sera remplacé par le nom d'utilisateur (login)
       comment = Le répertoire personnel de %U
       
       # Si on active cette option, on dispose d'une ressource 'homes'
       # redondante avec la ressource 'login'
       browseable = no
       
       # Il faut que l'utilisateur soit authentifié pour accéder
       # à la ressource (son home directory sur le serveur)
       public = no
       
       # Autorise l'écriture dans le répertoire personnel
       writable = yes
       
       # Droits d'accès des fichiers et répertoires créés
       create mask = 0644
       directory mask = 0755
       
       
 # Section PRINTERS
 # Cette section permet de partager les imprimantes définies sur le serveur
 [printers]
       # Le commentaire associé à l'imprimante
       comment = Les imprimantes
       
       # Affiche les imprimantes dans la liste des partages du serveur
       browseable = yes
       
       # Dans le cas d'une imprimante, c'est l'emplacement 
       # des fichiers temporaires
       path = /tmp
       
       # Spécifie qu'il s'agit d'une imprimante et non un répertoire
       printable = yes
       
       # Partage l'imprimante de manière anonyme
       public = yes
       
       # Logique
       writable = no
       
       # Empêche d'autres utilisateurs de supprimer mes impressions
       create mode = 0700
       
       
 # Sections REPERTOIRES PARTAGES
 
 # CAS n° 1 : une ressource anonyme sans mot de passe
 # Un CDROM
 [cdrom]
       # Le commentaire associé au CDROM
       comment = Le CDROM
       
       # Point de montage du CDROM
       # synonyme de directory =
       path = /cdrom
       
       # Empêche le bloquage d'un fichier par un utilisateur
       locking = no
       
       # Logique
       writable = no
       
       # Partage le CDROM de manière anonyme
       public = yes
       
       
 # CAS n°2 : un répertoire partagé qu'à certains utilisateurs
 [prive]
       # Le commentaire associé au répertoire
       comment = Un répertoire partagé qu'a certains utilisateurs (CAS n°2) 
       
       # Emplacement du répertoire partagé
       path = /home/prive
       
       # Support en lecture / écriture
       # synonyme de read only = no
       writable = yes
       
       # Partage anonyme désactivé (cas par défaut)
       # synonyme de guest ok = no
       public = no
       
       # Voir explication ci-dessous
       # le @prive désigne le groupe Unix 'prive'
       valid users = @prive
       
       # Masque de création des fichiers et répertoires
       create mask = 0644
       directory mask = 0755
       

Dans le cas du mode user, pour ne partager une ressource partagée qu'à certains utilisateurs, il faut tout d'abord créer un compte UNIX pour chacun d'eux :

 # adduser --shell /bin/false --disabled-login paul
 # adduser --shell /bin/false --disabled-login pierre

On crée ensuite une entrée dans le fichier /etc/samba/smbpasswd :

 # smbpasswd -a paul
 # smbpasswd -a pierre

NB : dans les versions récentes de Samba, il faut utiliser la commande pdbedit à la place de smbpasswd :

 # pdbedit -a paul
 # pdbedit -a pierre

Coté Linux, les utilisateurs doivent avoir le droit d'écriture sur le répertoire partagé. La meilleure méthode consiste à créer un groupe Unix contenant les utilisateurs autorisés, et d'attribuer le répertoire partagé au groupe en question :

 # addgroup prive
 # adduser paul prive
 # adduser pierre prive
 # mkdir /home/prive
 # chgrp prive /home/prive
 # chmod 770 /home/prive

Avantage : pour partager cette ressource à de nouveaux utilisateurs, il suffit de leur créer le compte Unix, une entrée dans smbpasswd et de les ajouter au groupe prive (il n'est plus nécessaire de modifier le fichier smb.conf).

 # chmod g+s /home/prive

Permet de définir le propriétaire des fichiers créés avec l'option +s. Ici les propriétaires seront les membres du groupe prive au lieu de l'utilisateur.

Connexion à un Active Directory Windows 2012[modifier | modifier le wikicode]

Serveur AD : SERV2012 (192.168.10.254)

Domaine : DOMWIN.LAN

Configuration de /etc/resolv.conf[modifier | modifier le wikicode]

Il faut indiquer dans le fichier /etc/resolv.conf d'utiliser le serveur AD en tant que serveur DNS :

# cat /etc/resolv.conf
nameserver 192.168.10.254

Configuration de Kerberos[modifier | modifier le wikicode]

On installe Kerberos pour l'authentification sur AD :

# apt-get install krb5-{admin-server,user}

On configure Kerberos avec notre domaine AD (DOMWIN.LAN) :

# cat /etc/krb5.conf

[logging]
Default = FILE:/var/log/krb5.log

[libdefaults]
ticket_lifetime = 24000
clock-skew = 300
default_realm = domwin.lan
# dns_lookup_realm = false
# dns_lookup_kdc = true

[realms]
domwin.lan = {
kdc = 192.168.10.254:88
admin_server = 192.168.10.254:464
default_domain = domwin.lan
}

[domain_realm]
.domwin.lan = domwin.lan
domwin.lan = domwin.lan

Configuration de Samba[modifier | modifier le wikicode]

...
[global]
    workgroup = DOMWIN
    netbios name = ALEX
    wins support = no
    security = ads
    realm = DOMWIN.LAN
...

Connexion au domaine AD[modifier | modifier le wikicode]

On obtient un ticket Kerberos :

# kinit Administrateur@DOMWIN.LAN
# klist

On récupére le SID du serveur AD (nom netbios de AD : SERV2012) :

# net rpc getsid -S SERV2012

On rejoint le domaine AD :

# net ads join -U Administrateur -S SERV2012

On vérifie en interrogeant les partages du serveur AD. Pour cela, on utilise un compte définit sur AD :

# smbclient -L SERV2012 -U etudiant

On essaye d'accéder à un partage définit sur AD :

# smbclient '\\SERV2012\partage' -U etudiant

Fichiers /etc/krb5.conf et /etc/samba/smb.conf : Voir pastebin.com/EDxh7yqH

Le partage sur un domaine Microsoft[modifier | modifier le wikicode]

Voici un fichier /etc/samba/smb.conf permettant de rejoindre un domaine existant afin de partager des ressources :

 # PARTAGE PAR UTILISATEUR (server) - Domaine avec authentification
 # déléguée à un controleur de domaine (PDC : Primary Domain Controller)
 
 # Il y a 2 cas possibles :
 #
 # CAS n°1 : on partage une ressource totalement anonyme
 # CAS n°2 : cas normal du mode user, on fait une authentification 
 #           par login et mot de passe
 
 
 # Section GLOBAL
 # Configuration globale de Samba
 [global]
       # Nom du groupe de travail
       workgroup = DOMAINE
        
       # Nom Netbios de la machine (identification réseau)
       netbios name = PC230
       
       # Chaine de commentaire associé au serveur (voisinage réseau)
       server string = %h Serveur (Samba %v)
       
       # Utilisateurs interdits
       invalid users = root
       
       # Enregistre un fichier de log par machine cliente du réseau MS
       log file = /var/log/samba/log.%m
       
       # Taille maximale des logs : 1 Mo
       max log size = 1000
       
       # On n'utilise pas Syslog pour enregistrer les logs
       syslog = 0
       
       # On fait un partage par utilisateur, l'authentification est
       # déléguée au controleur de domaine (PDC)
       security = server
       password server = PDC
       
       # On utilise les mots de passe encryptés
       # (attention, W95 et W98a fonctionnent avec les mdp en clair)
       encrypt passwords = true
       
       # Accélère les transferts réseaux
       socket options = TCP_NODELAY
       
       # Empeche nmbd de chercher à résoudre le nom netbios via le DNS
       dns proxy = no
       
       # Nom du compte invité qui va permettre de créer une
       # ressource partagée par mot de passe (celui du compte invite)
       # POUR LE CAS n°1
       guest account = invite
       
       # Emplacement du fichier contenant les logins et mdp samba
       # concerne le CAS n°1 et n°2
       smb passwd file = /etc/samba/smbpasswd
 
 
 # Section HOMES
 # Cette section particulière permet de remonter une ressource
 # qui correspond au répertoire de travail (home directory)
 # de l'utilisateur qui s'est authentifié
 [homes]
       # Correspond au home directory de l'utilisateur authentifié
       # %U sera remplacé par le nom d'utilisateur (login)
       comment = Le répertoire personnel de %U
 
       # Si on active cette option, on dispose d'une ressource 'homes'
       # redondante avec la ressource 'login'
       browseable = no
 
       # Il faut que l'utilisateur soit authentifié pour accéder
       # à la ressource (son home directory sur le serveur)
       public = no
 
       # Autorise l'écriture dans le répertoire personnel
       writable = yes
 
       # Droits d'accés des fichiers et répertoires créés
       create mask = 0644
       directory mask = 0755
       
 
 # Section PRINTERS
 # Cette section permet de partager les imprimantes définies sur le serveur
 [printers]
       # Le commentaire associé à l'imprimante
       comment = Les imprimantes
 
       # Affiche les imprimantes dans la liste des partages du serveur
       browseable = yes
 
       # Dans le cas d'une imprimante, c'est l'emplacement 
       # des fichiers temporaires
       path = /tmp
 
       # Spécifie qu'il s'agit d'une imprimante et non un répertoire
       printable = yes
 
       # Partage l'imprimante de manière anonyme
       public = yes
 
       # Logique
       writable = no
 
       # Empeche d'autres utilisateurs de supprimer mes impressions
       create mode = 0700
 
 
 # Sections REPERTOIRES PARTAGES
 
 # CAS n° 1 : une ressource anonyme sans mot de passe
 # Un CDROM
 [cdrom]
       # Le commentaire associé au CDROM
       comment = Le CDROM
 
       # Point de montage du CDROM
       # synonyme de directory =
       path = /cdrom
 
       # Empeche le bloquage d'un fichier par un utilisateur
       locking = no
       
       # Logique
       writable = no
 
       # Partage le CDROM de manière anonyme
       public = yes
 
 
 # CAS n°2 : un répertoire partagé qu'à certains utilisateurs
 [prive]
       # Le commentaire associé au répertoire
       comment = Un répertoire partagé qu'à certains utilisateurs (CAS n°2) 
 
       # Emplacement du répertoire partagé
       path = /home/prive
 
       # Support en lecture / écriture
       # synonyme de read only = no
       writable = yes
 
       # Partage anonyme désactivé (cas par défaut)
       # synonyme de guest ok = no
       public = no
       
       # Voir explication ci-dessous
       # le @prive désigne le groupe Unix 'prive'
       valid users = @prive
 
       # Masque de création des fichiers et répertoires
       create mask = 0644
       directory mask = 0755
 

Remarque : Pour que le serveur Linux puisse rejoindre le domaine existant, il faut se connecter au moins une fois avec le compte Administrateur défini sur le contrôleur de domaine, afin que ce dernier crée un compte machine :

 # net join -U Administrateur
 Administrateur's password:
 [2008/02/12 11:58:41, 0] utils/net_ads.c:ads_startup(289)
 ads_connect: Chaîne multi-octets ou étendue de caractères invalide ou incomplète
 ADS join did not work, falling back to RPC...
 Joined domain DOMAINE.

Dans le cas du mode server, les utilisateurs (login et mot de passe) sont définis sur un serveur existant.

Coté Linux, les utilisateurs doivent avoir le droit d'écriture sur le répertoire partagé. Cependant, les utilisateurs ne sont pas définis sur le serveur Linux mais sur le contrôleur de domaine. La solution consiste à permettre à tout le monde d'écrire dans ce répertoire, Samba se chargeant de n'autoriser que les utilisateurs autorisés sur le contrôleur de domaine.

 # mkdir /home/prive
 # chmod 777 /home/prive

Samba en contrôleur de domaine Microsoft[modifier | modifier le wikicode]

Voici un fichier /etc/samba/smb.conf permettant de faire un contrôleur de domaine Microsoft :

 # Controleur de domaine PDC (Primary Domain Controller)
 
 # Section GLOBAL
 # Configuration globale de Samba
 [global]
       # Nom du groupe de travail
       workgroup = DOMAINE
        
       # Nom Netbios de la machine (identification réseau)
       netbios name = PC230
 
       # Chaine de commentaire associé au serveur (voisinage réseau)
       server string = %h Serveur (Samba %v)
 
       # Utilisateurs interdits
       invalid users = root
 
       # Enregistre un fichier de log par machine cliente du réseau MS
       log file = /var/log/samba/log.%m
 
       # Taille maximale des logs : 1 Mo
       max log size = 1000
 
       # On n'utilise pas Syslog pour enregistrer les logs
       syslog = 0
 
       # On est PDC, on fait l'authentification par utilisateur
       security = user
 
       # On utilise les mots de passe encryptés
       # (attention, W95 et W98a fonctionnent avec les mdp en clair)
       encrypt passwords = true
         
       # Accélère les transferts réseaux
       socket options = TCP_NODELAY
 
       # Empeche nmbd de chercher à résoudre le nom netbios via le DNS
       dns proxy = no
 
       # Nom du compte invité qui va permettre de créer une
       # ressource partagée par mot de passe (celui du compte invite)
       guest account = invite
 
       # Emplacement du fichier contenant les logins et mdp samba
       smb passwd file = /etc/samba/smbpasswd
 
       # Permet de devenir le master browser du réseau
       # Le master browser est responsable de l'état du réseau
       # C'est en général le PDC qui effectue cette tache
       local master = yes
 
       # Permet de devenir le DOMAIN master browser du réseau
       domain master = yes
 
       # Cette option permet de déclencher une election sur le réseau 
       # afin de déterminer qui sera le master browser
       # Le fait de déclencher cette election me donne le plus de chance
       # devenir ce master browser
       preferred master = yes
 
       # Si ce chiffre est le plus grand du réseau, je deviens le PDC
       os level = 255
 
       # Permet aux utilisateurs de changer leur mot de passe sur ce serveur
       # depuis leur poste
       update encrypted = yes
 
       # Définit que le daemon nmbd doit agir en tant que serveur WINS
       wins support = yes
 
       # Winbind permet de placer des machines dans un domaine controlé 
       # par un PDC et d'autoriser les utilisateurs a accéder
       # à ces machines en utilisant les informations du PDC
       winbind separator = +
       winbind enum users = no
       winbind enum groups = no
       winbind uid = 10000-20000
       winbind gid = 10000-20000
 
       # désactive le support des ACL (Access Control List)
       # fonctionnalité utilisée par Active Directory
       nt acl support = no
 
       # Logins autorisés à se connecter aux ressources administratives
       # comme C$, ADMIN$ et IPC$
       admin users = admin
 
       # PRIMORDIAL !, sinon ca marche pas :
       # il faut que la ressource [netlogon] existe, meme si on n'utilise
       # pas un script logon
       domain logons = yes
       
       # Nom du fichier netlogon
       logon script = logon.bat  
 
       # Pour autoriser les utilisateurs a changer leurs mots de passe
       passwd program = /usr/bin/passwd %u
       passwd chat = *Enter\snew\sUnix\spassword:* %n\n *Retype\snew\sUnix\spassword:* %n\n
 
 # Section NETLOGON
 # Permet de faire exécuter un script d'initialisation réseau par le poste 
 # client du domaine. Ceci permet par exemple connecter un lecteur réseau (Z:) ou de synchroniser l'heure
 [netlogon]
       # Il n'apparaitra pas dans la liste des ressources partagées
       browsable = no
 
       # Répertoire contenant le netlogon
       path = /etc/samba/netlogon
 
       # Le netlogon n'a pas besoin d'etre public
       public = no
 
       # Pour la sécurité, cette ressource est exportée en read only
       writable = no
 
       # Permet à plusieurs utilisateurs d'utiliser le meme fichier
       # en meme temps
       locking = no
 
 ### Ce serveur effectuant la mission cruciale de PDC, il n'est pas
 ### recommandé de partager des ressources, bien que cela soit possible
 
 [homes]
       path = %H
       browsable = no
       writable = yes
       public = no
 
 [partage]
       path = /home/partage
       public = yes
       browsable = yes
 
 
 [profiles] 
       comment = Partage pour stocker les profils itinérants
       path =  /home/samba/profiles
       writable = yes
       browseable = no 
       create mode = 0644
       directory mode = 0755


On crée ensuite le compte de l'utilisateur admin. il faudra utiliser ce compte lors de la première connexion d'un ordinateur au domaine.

 # adduser --shell /bin/false --disabled-login admin
 # smbpasswd -a admin

NB: Sur une Ubuntu, le groupe admin existe déjà, donc, soit on rajoute l'option --ingroup users, soit on utilise un compte différent pour l'administration (ex: Administrateur).

NB2 : dans les versions récentes de Samba, il faut utiliser la commande pdbedit à la place de smbpasswd :

 # pdbedit -a admin

Pour chaque membre du domaine, il faut créer un compte unix correspondant à la machine et rajouter une entrée de type machine dans smbpasswd.

Attention : ce login doit porter le nom netbios de la machine et se terminer par un dollar (d'ou le --force-badname) :

 # adduser --shell /bin/false --disabled-login --force-badname nompc$ 
 # smbpasswd -a -m nompc$       # ou pdbedit -a -m nompc$

NB : On peut automatiser la création des comptes machines en rajoutant la ligne suivante dans la section [global] de smb.conf :

Sous Debian :

 add machine script = /usr/sbin/adduser --shell /bin/false --disabled-login --force-badname %u

Sous Redhat :

 add machine script = /usr/sbin/useradd -d /var/lib/nobody -g 100 -s /bin/false -M %u


Il faut aussi créer le répertoire pouvant accueillir le netlogon :

 # mkdir /etc/samba/netlogon

On crée également le répertoire stockant les profils itinérants :

 # mkdir -p /home/samba/profiles
 # chmod 777 /home/samba/profiles

Le netlogon peut servir par exemple à créer automatiquement un volume réseau (ex: Z:), ou ajuster l'heure de l'ordinateur avec celle du contrôleur de domaine.

On peut optionnellement créer un fichier logon.bat :

 # echo '@echo off' > /etc/samba/netlogon/logon.bat
 # echo 'echo Bienvenue sur le domaine' >> /etc/samba/netlogon/logon.bat
 # echo 'net use T: \\PC230\partage' >> /etc/samba/netlogon/logon.bat
 # echo 'net time \\PC230 /set /yes' >> /etc/samba/netlogon/logon.bat
 # echo 'pause' >> /etc/samba/netlogon/logon.bat

Il faut ensuite relancer samba et winbind :

 # /etc/init.d/samba restart
 # /etc/init.d/winbind restart

Utilisation de smbclient[modifier | modifier le wikicode]

smbclient est un client pour les réseaux samba.

Exemple :

 >smbclient -L PC230
 Password:
 Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.24]
 
       Sharename       Type      Comment
       ---------       ----      -------
       cdrom           Disk      Le CDROM
       partage         Disk      Un répertoire partagé mais protégé par mot de passe
       IPC$            IPC       IPC Service (pc230 Serveur (Samba 3.0.24))
       HP_LaserJet_1200_LPT_parport0_HPLIP Printer   HP LaserJet 1200
 
 Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.24]
 
       Server               Comment
       ---------            -------
       BLACKPEARL
       CHRIS-B48CAF99F
       D
       DEBIANTOINE          Debiantoine server
       PC230                pc230 Serveur (Samba 3.0.24)
       PCPROF-LDKBQYFP
       Workgroup            Master
       ---------            -------
       ATELIER              BOOWISS-MOBIL
       CIS                  KALMIYA
       HOUCINE              ORDI-PARIS02
       KOOKYOO.LAN          KOOKYNUX
       LECHAT               CREUFOP12
       NONOLEROBOT          SERVERPARIS01
       PC237'S DOMAIN       PC237
       WORKGROUP            DEBIANTOINE


Monter un répertoire réseau[modifier | modifier le wikicode]

Manuellement :

 # mount -t smbfs -o username=invite,password=invite //PC230/partage /mnt
 # ...
 # umount /mnt

Automatique à chaque démarrage :

Rajouter dans /etc/fstab :

 # <file system> <mount point> <type> <options> <dump> <pass>
 ...
 //PC230/partage /mnt smbfs username=invite,passwd=invite 0 0

Utilisation de SWAT : Samba Web Administration Tools[modifier | modifier le wikicode]

SWAT est une page web permettant de configurer samba de façon plus "simple", mais comme souvent avec les interfaces graphiques, de manière moins pointue.

Pour les amateurs du clickodrôme:

 # apt-get install swat

<Image de SWAT>

Une fois installé, on accède à SWAT avec un navigateur sur l'adresse localhost:901 Swat va lire le fichier smb.conf et le présenter dans une page html. Les onglets permettent de configurer les partages, les imprimantes, de voir les docs etc. Par défaut, l'accès distant à SWAT est interdit, mais il est activable. Toutefois, il est déconseillé d'utiliser cette option.