Samba : compléments



Source de documentation

Diagnostic

  • Rappel : avant toute manipulation hasardeuse sur les fichiers de configuration, en effectuer une copie de sauvegarde.
  • En cas de problème non résolu, pour cerner la difficulté, il est conseillé d'effectuer les 10 tests systématiques de DIAGNOSIS.txt

    SWAT : interface d'administration

    Webmin


    Le problème des mots de passe cryptés

    1. Connexion sous les "anciens" Windows95
      Que l'on active ou non le service de cryptage dans smb.conf, et quel que soit le positionnement de EnablePlainTextPassword dans la base de registre des clients 95, apparemment cela n'a pas d'incidence sur les connexions de ces stations Windows 95 (Reste à comprendre pourquoi).

    2. Connexion sous Windows98
      Une station 98 correctement configurée (domaine MS, NetBios activé) voit le serveur Samba, mais le processus de connexion n'aboutit pas ...
      MS a modifié l'authentification des mots de passe. Par défaut, Windows98 les envoie maintenant cryptés par défaut et le serveur Samba les attend en clair ... Il faut donc intervenir pour rétablir une cohérence.
      Il y a 2 solutions :

    3. On ne veut pas crypter les mots de passe
      S'assurer d'abord sur le serveur que Samba ne crypte pas
      encrypt passwords = no
      Puis intervention dans la base de registre pour que Windows arrête de crypter
      1. Lancer c:\windows\regedit.exe
      2. Dans la base de registre, se placer dans le rép. HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP
      3. Menu Edition / Nouveau / valeur DWORD
      4. Une nouvelle entrée est créée, lui donner le nom EnablePlainTextPassword.
      5. Double-cliquer pour l'éditer, et donner la valeur hexadécimale 1.
      6. Fermer et redémarrez la machine .. et çà fonctionne !
      Test sur station 98
      Avec EnablePlainTextPassword"=dword:00000001, le service de cryptage n'est pas utilisé et il y a connexion possible pour les comptes existants sur le serveur Linux

    4. On paramétre Samba pour le cryptage des mots de passe
      Dans la section [global] du fichier /etc/smb.conf, on doit trouver les lignes suivantes :
      # You may wish to use password encryption. Please read
      # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
      # Do not enable this option unless you have read those documents (!) 
      encrypt passwords = yes
      smb passwd file = /etc/smbpasswd
      
      Les mots de passe cryptés utilisés par Samba seront donc placés et lus dans le fichier /etc/smbpasswd qui appartient à root.
      Le rôle et la gestion de /etc/smbpasswd sont expliqués dans le fichier ENCRYPTION.txt
      La création d'un compte utilisateur s'accompagne de l'ajout de la ligne correspondante dans passwd et dans shadow, mais n'opère pas de modification dans smbpasswd, si on a créé le compte "à la main" avec la commande useradd.
      Pour crypter les comptes samba qui ne l'auraient pas été, il faut effectuer les opérations suivantes :
      1. activer le cryptage dans /etc/smb.conf
      2. créer le fichier smbpasswd en récupérant les comptes Linux
      3. activer les mots de passe Samba
      4. paramétrer les clients 95/98 pour activer le cryptage des mots de passe

    5. Cryptage par smbpasswd et par linuxconf
      • Lorsque les comptes ont été juste créés par la commande useradd, aucun mot de passe n'a encore été défini et chiffré.
        Pour s'en convaincre, examiner /etc/shadow : une entrée a juste été créée au nom du compte.
      • On définit le mot de passe comme d'habitude, avec l'utilitaire passwd. Alors, root peut constater qu'un enregistrement contenant le mot de passe crypté a été ajouté au fichier /etc/shadow; par contre, ni cryptage, ni ajout d'une entrée n'ont été effectués dans /etc/smbpasswd
      • La commande smbpasswd nom demande 2 fois le mot de passe samba du compte dont on fournit le nom.
        Si
      • smbpasswd crypte dans /etc/smbpasswd, avec un algorithme, bien sûr identique à celui que les stations Windows utilise.Lors du premier accès à un partage situé sur le serveur Samba, le mot de passe envoyé chiffré par la station est comparé à celui résident dans /etc/smbpasswd. Cette comparaison détermine la permission ou nom d'y accéder, avec les droits attachés au partage.
      • L'utilitaire linuxconf enchaine et synchronise les 2 mots de passe, apparemment sans qu'on le lui demande !

    6. Cryptage par Samba, exemple de procédure
      1. Le cas échéant, activer le cryptage dans le fichier smb.conf
      2. Sauvegarde du fichier smbpasswd existant : cp smbpasswd smbpasswd.old
      3. Création d'un nouveau fichier smbpasswd, à partir du fichier passwd, de façon à récupérer tous les comptes déjà créés, avec l'utilitaire /usr/bin/mksmbpasswd.sh
        cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
      4. Examiner le résultat avec less /etc/smbpasswd : les mots de passe n'existent pas encore, seules les lignes correspondant aux comptes linux sont créées
        Vérifier la protection 644 de smbpasswd
      5. Créer un mot de passe samba pour stagex, avec la commande smbpasswd -a stagex
      6. Aussitôt et sans nécessité à se reconnecter, stagex peut accéder aux ressources partagée. Vérifier la présence du mot de passe dans /etc/smbpasswd
      7. Pour déprotéger un compte Samba, éditer /etc/smbpasswd et remplacer les 11 premiers 'X' du mot de passe par la chaîne "NO PASSWORD".
      8. Sur les stations Windows
        Sur les stations Windows 98, le cryptage des mots de passe est activé par défaut, il n'y a donc pas à intervenir.
        En cas de problème, notamment sur des Windows 95 "anciens", ouvrir la base de registre et changer la clé suivante :
        HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP
        "EnablePlainTextPassword"=dword:00000000
        

    7. La synchronisation des mots de passe
      Il s'agit d'une procédure permettant de garder une cohérence entre les mots de passe des comptes Linux et Samba lorsque l'un d'entre eux est changé depuis une station.
      # pour demander la synchronisation   
      unix password sync = Yes 
      # pour indiquer la commande linux pour modifier le mot de passe 
      passwd program = /usr/bin/passwd %u 
      # indique que Samba doit renvoyer 2 fois %n (nouveau mot de passe) au 
      # programme de traitement des mots de passe (indiqué par passwd program)
      # en réponse à la demande "new password" 
      passwd chat = *new*password* %n\n *new*password* %n\n *succes* 
      


    Mini FAQ Samba

    Quelques erreurs


    Station Linux, cliente d'un serveur Windows9x

    Un client SMB pour un hôte Linux est inclus dans Samba.
    La connexion étant établie, on communique avec le serveur Windows à travers une interface semblable au ftp, ce qui permet de faire du transfert de fichiers.

    Connexion au serveur Windows

    La connexion est établie par la commande /usr/sbin/smbclient -L nom où on utilise le nom NetBIOS de la machine Windows.
    Un mot de passe est requis s'il y a une protection, sinon il suffit de valider.

    Exemple :

    $ smbclient -L pc1
    Password: 
         Sharename      Type      Comment
         ---------      ----      -------
         CD_PC1         Disk      
         C_PC1          Disk      
         D_PC1          Disk      
    	 I_JP150        Printer   
         PRINTER$       Disk                  
    	 IPC$           IPC       Communication entre processus distants
    			 
         Server        Comment
         ------        -------			 
         Workgroup     Master
         ---------     ------			
    

    Transfert de fichiers

    La commande smbclient \\\\pc1\\C_PC1 permet d'accéder sur PC1 à la ressource partagée, nommée ici C_PC1 (ie le disque C:). Il faut bien entendu respecter les noms de partage attribués sur le serveur WorkGroup.
    On obtient un prompt semblable à ftp. Pour connaitre les commandes :
    smb: \> h 
    ls             dir            lcd            cd             pwd            
    get            mget           put            mput           rename         
    more           mask           del            rm             mkdir          
    md             rmdir          rd             prompt         recurse        
    translate      lowercase      print          printmode      queue          
    cancel         stat           quit           q              exit           
    newer          archive        tar            blocksize      tarmode        
    setmode        help           ?              !              
    smb: \> cd excel
    smb: \excel\>
    

    Montage de répertoire Windows


    Utiliser une imprimante partagée par Windows

    Soit une imprimante lointaine pour la station Linux, installée sur un serveur Windows9x.
    Voyons comment cette ressource peut être utilisée par le client Linux.