Authentification samba

Résolu

Bonjour,

J'ai configuré un serveur samba sur un poste Linux Manjaro. Voici mon smb.conf :

[global]

workgroup = WORKGROUP
server string = Samba Server
restrict anonymous = no
security = user
passdb backend = smbpasswd
log file = /var/log/samba/%m.log
max log size = 500
invalid users = root
socket options = TCP_NODELAY
map to guest = bad user
guest account = smbguest
load printers = yes
smb ports = 139

[data]

path = /data
public = yes
guest only = yes
writable = yes
force create mode = 0666
force directory mode = 0777
browseable = yes

Sur le poste client, un linux Debian, lorsque j'initie une connexion un mot de passe m'est demandé mais rien ne marche : ni le mot de passe du user linux smbguest, ni le mot de passe définit par smbpasswd.

Je deviens chèvre avec samba. J'aimerais que tous mes clients puissent se connecter au serveur sans mot de passe. Comment modifier le smb.conf dans cette optique ?

Merci,

Sylvain
 

5 réponses

  1. Modérateur

    Bonjour,

    A priori, pour monter un partage samba avec une Debian en poste client, une simple commande mount suffit.. Pas besoin de bidouiller smb.conf qui selon moi sert plutôt si tu veux mettre en place un serveur samba côté Debian (or ce n'est pas ce que tu sembles vouloir faire).

    Cet exemple met en évidence que tu peux passer à la commande mount le login et le mot de passe samba, ainsi que le domaine de travail. Si la commande telle quelle marche, l'idéal serait ensuite de déporter le login et le mot de passe dans un fichier avec des droits restreints afin que ces informations ne figurent pas dans ton historique bash ou dans la table des processus (voir ce lien).

    Libre à toi ensuite de référencer certain de ces paramètres dans /etc/fstab pour les sous-entendre par la suite (voir ce tutoriel).

    Si quelque chose n'est pas clair, n'hésite pas à demander des précisions.

    Bonne chance

    1. Bonjour,

      Merci beaucoup pour ton aide !

      J'ai tenté un mount depuis mon client debian :

      mount -t cifs //192.168.1.16/data /media/partage

      La commande me demande alors un mot de passe et aucun de ceux que je rentre n'est reconnu. Voici ce que j'obtiens :

      mount error: Server abruptly closed the connection.
      This can happen if the server does not support the SMB version you are trying to use.
      The default SMB version recently changed from SMB1 to SMB2.1 and above. Try mounting with vers=1.0.
      mount error(112): Host is down

      Par ailleurs, un systemctl status smb sur le serveur me donne :

      ● smb.service - Samba SMB Daemon
           Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; preset: disabled)
           Active: active (running) since Wed 2022-10-26 11:20:43 CEST; 21min ago
             Docs: man:smbd(8)
                   man:samba(7)
                   man:smb.conf(5)
         Main PID: 925 (smbd)
           Status: "smbd: ready to serve connections..."
            Tasks: 3 (limit: 4561)
           Memory: 12.1M
              CPU: 440ms
           CGroup: /system.slice/smb.service
                   ├─925 /usr/bin/smbd --foreground --no-process-group
                   ├─942 /usr/bin/smbd --foreground --no-process-group
                   └─943 /usr/bin/smbd --foreground --no-process-group
      
      oct. 26 11:20:42 Minus systemd[1]: Starting Samba SMB Daemon...
      oct. 26 11:20:43 Minus smbd[925]: [2022/10/26 11:20:43.031923,  0] ../../source3/smbd/server.c:1741(main)
      oct. 26 11:20:43 Minus smbd[925]:   smbd version 4.17.0 started.
      oct. 26 11:20:43 Minus smbd[925]:   Copyright Andrew Tridgell and the Samba Team 1992-2022
      oct. 26 11:20:43 Minus systemd[1]: Started Samba SMB Daemon.

      Ce pourrait-il qu'il y ait un problème de versions entre mon serveur (v4.17.0) et mon client Debian (v?).

      1. Modérateur

        Bonjour,

        Concernant le message d'erreur, c'est assez bizarre.

        Côté client (Debian)

        Vérifions d'un point de vue réseau que tout est ok.

        ping -c2 192.168.1.16
        nmap 192.168.1.16 # Si nmap n'est pas installé: sudo apt install nmap

        Es-tu sûr que le nom du partage samba est bien data (on dirait que oui d'après ton premier message) ?

        Est-ce que le dossier /media/partage existe sous Debian ?

        Vu que le partage est actuellement fait en invité, as-tu essayé :

        sudo mount -o guest //192.168.1.16/data /media/partage/

        Note qu'il est possible de passer la version du protocole samba en paramètre de mount (c'est numéro de version n'ont rien à avoir avec la version du paquet samba, c'est quelque chose que tu peux spécifier au niveau de /etc/samba/smb.conf côté serveur) :

        sudo mount -o guest,vers=3.0 //192.168.1.16/data /media/partage/

        Côté serveur (Manjaro)

        Est-ce que le pare-feu bloque samba ? Si tu utilises ufw :

        sudo ufw allow samba

        Sinon, indique moi le résultat de :

        sudo iptables -L

        Concernant systemctl status smb : vu que ton serveur samba est sous Manjaro, on est bien d'accord que tu as bien lancé cette commande sous Manjaro ?

        Parviens-tu sous manjaro à monter ton partage en local ?

        sudo mkdir -p /media/partage
        sudo mount -o guest //127.0.0.1/data /media/partage

        Ce serait intéressant de regarder quand tu tentes de te connecter de lancer sur le serveur samba la commande suivante et voir les lignes qui apparaissent :

        tail -f /var/log/samba/*.log

        Autres pistes

        Pour partager des fichiers entre deux linux il existe des solutions plus simples. Personnellement j'utilise sshfs (donc rien à avoir avec samba). Il suffit que la machine qui fasse le partage ait un serveur ssh et que la machine cliente puisse s'y connecter. Côté client, en remplaçant "login" par un profil utilisateur qui existe côté serveur  :

        • avec konqueror ou dolphin : fish://login@192.168.0.16
        • avec nautilus : ssh://login@192.168.0.16

        Bonne chance

        1.  Bonjour et merci pour ton aide et ton long message !

          Reprenons :

          ping -c 192.168.1.16
          

          Ça passe sans problème.

          nmap 192.168.1.16
          PORT     STATE  SERVICE
          22/tcp   open   ssh
          25/tcp   closed smtp
          80/tcp   closed http
          139/tcp  open   netbios-ssn
          443/tcp  closed https
          445/tcp  closed microsoft-ds
          3306/tcp closed mysql


          Là je ne pige pas. Comme le port 139, j'ai bien ouvert le port 445 dans iptables :

          -A INPUT  -p tcp -m tcp --dport 139 -j ACCEPT
          -A INPUT  -p tcp -m tcp --dport 445 -j ACCEPT

          J'ai arrêté le pare feu de la box, fail2ban et iptables sur le serveur et le client sans succès : nmap me donne toujours le même résultat.

          Es-tu sûr que le nom du partage samba est bien data (on dirait que oui d'après ton premier message) ?

          Je confirme ! Je lui ai même donné le plein pouvoir :

          drwxrwxrwx   2 sylvain sylvain  4096 23 oct.  13:24 data

          Est-ce que le dossier /media/partage existe sous Debian ?

          Oui !

          Vu que le partage est actuellement fait en invité, as-tu essayé : mount -o guest //192.168.1.16/data /media/partage/

          Voici ce qu'il me répond le bougre :

          mount error: Server abruptly closed the connection.
          This can happen if the server does not support the SMB version you are trying to use.
          The default SMB version recently changed from SMB1 to SMB2.1 and above. Try mounting with vers=1.0.
          mount error(112): Host is down


          J'ai essayé également de passer la version de Samba en paramètre sans plus de résultat.

          Côté serveur :

          Voici iptables -L :

          Chain INPUT (policy DROP)
          target     prot opt source               destination         
          fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
          REJECT     all  --  vip1.dyn.hpo.s1.fti.net  anywhere             reject-with icmp-port-unreachable
          ACCEPT     all  --  anywhere             anywhere            
          REJECT     all  --  anywhere             127.0.0.0/8          reject-with icmp-port-unreachable
          ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
          ACCEPT     udp  --  anywhere             anywhere             udp dpt:54925
          ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
          ACCEPT     udp  --  anywhere             anywhere             udp dpt:netbios-ns
          ACCEPT     udp  --  anywhere             anywhere             udp dpt:netbios-dgm
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:netbios-ssn
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:microsoft-ds
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:gds-db
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:mysql
          ACCEPT     udp  --  anywhere             anywhere             udp dpt:sip
          ACCEPT     udp  --  anywhere             anywhere             udp dpt:7078
          ACCEPT     udp  --  anywhere             anywhere             udp dpt:9078
          DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,PSH,URG/FIN,PSH,URG
          DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
          DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
          DROP       tcp  --  anywhere             anywhere             tcp flags:SYN,RST/SYN,RST
          DROP       all  --  anywhere             anywhere             PKTTYPE = broadcast
          ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
          ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
          LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
          
          Chain FORWARD (policy DROP)
          target     prot opt source               destination         
          REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
          
          Chain OUTPUT (policy DROP)
          target     prot opt source               destination         
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:netbios-ns
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:netbios-dgm
          ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:netbios-ssn
          DROP       all  --  anywhere             vip1.dyn.hpo.s1.fti.net 
          ACCEPT     all  --  anywhere             anywhere            
          
          Chain fail2ban-ssh (1 references)
          target     prot opt source               destination         
          RETURN     all  --  anywhere             anywhere

          > Essai de montage en local après création du répertoire /media/partage :

          mount -t cifs -o guest //127.0.0.1/data /media/partage
          mount.cifs: permission denied: no match for /media/partage found in /etc/fstab
          tail -f /var/log/samba</span><span>/*.log

          Cela ne donne rien de pertinent...

          Autres pistes

          Je me connecte très bien en ssh avec Dolphin aux autres PC Debian et Manjaro de la maison. Je n'ai pas encore testé un connexion avec Android. Je souhaite également avoir accès au répertoire partagé depuis mon mobile.

          A+

          Sylvain

      2. Modérateur

        Bonjour,

        Le temps de faire marcher samba, désactive tout ce qui peut être bloquant : fail2ban et iptables côté client et côté serveur (même si a priori le problème ne semble pas venir de là, éliminons les éventuelles blagues le temps de comprendre).

        Le port samba (139) semble ouvert et le routage est correct. Cela voudrait dire que le problème vient bien de samba.

        Tu ne m'as pas dit si tu arrivais sur le serveur à monter ton partage samba. Ça écarterait toutes les considérations réseaux (remplace simplement 192.168.1.16 par 127.0.0.1). Plus exactement, il est bizarre que tu aies une erreur (voir mount -t cifs -o guest //127.0.0.1/data /media/partage) car normalement elle a tous les paramètres (elle est basée sur ce message). En effet, mount fait appel à /etc/fstab seulement si tu omets certains paramètres de la commande, or ici tu as donné la source, le point de montage, les options.

        Concernant tail -f /var/log/samba.log il faut la laisser tournet et regarder ce qui apparaît quand un client tente de se connecter. L'idéal serait que tu tentes la connexion depuis le client et depuis le serveur pour comparer.

        Peut-être aussi que ça vaudrait le coup de faire une authentification avec login et mot de passe (généralement c'est comme ça qu'on fait), car peut être que le problème vient spécifiquement du fait que tu tentes une connexion invité (ne me demande pas pourquoi, je n'utilise jamais samba :p).

        Autres pistes

        Il existe des clients sftp. Pour android tu peux tester AndFTP, et plus généralement n'importe quelle alternative à WinSCP pour Android.

        Bonne chance

        1. Bonjour !

          J'ai finalement trouvé ce qui clochait : apparmor interdisait les accès distants à smbd sur le serveur.

          J'ai également corrigé la façon de monter le partage et maintenant tout roule !

          Sylvain

          1. Modérateur

            Merci pour ton retour, je bascule le sujet en résolu.