Forum Linux.général Question SFTP

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
22
mar.
2021

Bonjour,

J'ai un utilisateur "toto" et je souhaiterais avec SFTP donner l'accès uniquement à un dossier précis ("/home/toto/dossier") à un utilisateur n'ayant pas d'accès shell à la machine.

J'ai regardé les exemples d'utilisation de SFTP en mode chroot mais il semblerait que ce je veuille faire ne soit pas possible.

Auriez-vous des suggestions ?

Cordialement.

  • # une piste

    Posté par  . Évalué à 2.

    • [^] # Re: une piste

      Posté par  . Évalué à 1. Dernière modification le 22 mars 2021 à 18:46.

      Déjà tenté… avant de poster mon message.

      Mais merci d'avoir participé :-)

      Edit:
      J'arrive à créer un utilisateur SFTP et à le confiner dans son chroot (par exemple "/mnt") mais ensuite la création d'un lien symbolique vers "/home/toto/dossier" ne marche pas : sftp refuse de suivre le lien :-(

      Même chose si je créé l'utilisateur SFTP avec son chroot directement dans "/home/toto/dossier".

      Dans les deux, sftp annonce une erreur relative aux droits d'accès…

      • [^] # Re: une piste

        Posté par  . Évalué à 4. Dernière modification le 22 mars 2021 à 19:02.

        J'arrive à créer un utilisateur SFTP et à le confiner dans son chroot (par exemple "/mnt") mais ensuite la création d'un lien symbolique vers "/home/toto/dossier" ne marche pas : sftp refuse de suivre le lien :-(

        heu, c'est normal non ?

        tu veux le bloquer dans le dossier /mnt (c'est le but du chroot)
        et puis tu lui demandes de suivre le lien qui va vers /home/toto/dossier (donc qui SORT du dossier /mnt)

        Même chose si je créé l'utilisateur SFTP avec son chroot directement dans "/home/toto/dossier".

        il faut là, que le dossier /home/toto/dossier ait les bons droits pour l'utilisateur sftpuser

        NB : je viens de faire la procedure car elle m'intéresse aussi pour remplacer mon vieux FTP qui traine dans un coin, et ca fonctionne comme prévu.
        j'arrive bien dans le dossier /sftp/monuser/incoming

        sur debian10, ssh/sftp-server 7.9p1-10+deb10u2

        • [^] # Re: une piste

          Posté par  . Évalué à 1.

          il faut là, que le dossier /home/toto/dossier ait les bons droits pour l'utilisateur sftpuser

          Oui… mais non :-(

          Selon le lien que tu as posté, il est indiqué (section 6) de faire :
          chown guestuser:sftpusers /sftp/guestuser/incoming.

          Donc si je transpose, cela donnera :
          chown nouveau_user:sftpusers /home/toto/dossier

          Du coup, sauf erreur de ma part, l'utilisateur toto ne sera plus propriétaire de "dossier" et ne pourra plus créer/effacer les fichiers dans "dossier" comme il le fait actuellement.

          • [^] # Re: une piste

            Posté par  . Évalué à 3.

            c'est exactement le sens du toto faire arriver l'utilisateur dans un dossier qui lui appartient.

            ensuite il faut adapter à TON besoin

            1°) dans la config ssh, régler le chroot (racine du "système" sur /home/toto
            et le dossier home de l'utilisateur visiteurs sur /dossier (pour qu'il arrive à la fin dans /home/toto/dossier

            2°) donner les droits à cet utilisateur sur le dossier /home/toto/dossier
            en comprenant la gestion des droits linux
            chown monuser:sftpusers /home/toto/dossier
            va donner la propriété à tonuser et au groupe sftpusers sur le /dossier dans /home/toto

            si tu adaptes cela en chown toto:sftpusers pour que toto garde la main, et que les gens du groupe sftpusers puisse intervenir dessus

            il ne te reste plus qu'à autoriser l'écriture (si nécessaire) au gens du groupe
            chmod 775 /home/toto/dossier

            • [^] # Re: une piste

              Posté par  . Évalué à 1.

              Bah ça ne veut toujours pas…

              Voila ce que je vois dans "/var/log/auth.log" :
              Mar 22 20:29:09 server sshd[28440]: Accepted password for new_user from xxxxxxxxx port 28062 ssh2
              Mar 22 20:29:09 server sshd[28440]: pam_unix(sshd:session): session opened for user new_user by (uid=0)
              Mar 22 20:29:09 server sshd[28446]: fatal: bad ownership or modes for chroot directory "/home/toto"
              Mar 22 20:29:09 server sshd[28440]: pam_unix(sshd:session): session closed for user new_user

              Voici mes settings :

              root@server:/home/toto# grep new_user /etc/group /etc/passwd
              /etc/group:ssh-user:x:1001:toto,new_user
              /etc/passwd:new_user:x:1002:1003::/dossier:/sbin/nologin

              root@server:/home/toto# grep ssh-user /etc/group /etc/passwd
              /etc/group:ssh-user:x:1001:toto,new_user

              root@server:/home/toto# grep sftp-user /etc/group /etc/passwd
              /etc/group:sftp-user:x:1003:

              root@server:/home/toto# ls /home/
              total 4.0K
              drwxr-xr-x 14 toto toto 4.0K 22-03-2021 20:01 toto

              root@server:/home/toto# ls /home/toto/
              drwxr-xr-x 270 new_user sftp-user 56K 22-03-2021 00:12 dossier

              root@server:/home/toto# cat /etc/ssh/sshd_conf

              Subsystem sftp internal-sftp
              Match Group sftp-user
              ChrootDirectory /home/toto
              ForceCommand internal-sftp
              PasswordAuthentication yes
              PermitEmptyPasswords no

              Je précise que le résultat est le même avec "dossier" appartenant à toto:sftp-user.

              • [^] # Re: une piste

                Posté par  . Évalué à 3.

                un bug avec ta version de SSH alors ?

                parce que hier j'ai fait tout le test
                creer un utilisateur1
                fait un dossier dans /home/utilisateur1 (donc /home/utilisateur1/dossier)
                donner les droits sur ce dossier à utilisateur1 en plus de son home

                creer le nouvel utilisateur2 avec son chroot sur /home/utilisateur1 et son home en /dossier

                par defaut il pouvait l'ouvrir mais pas écrire dedans,
                d'ou ma suggestions de regarder les problèmes de droits,
                que j'ai réglé avec un chown utilisateur1:sftpusers /home/utilisateur1/dossier
                et un chmod 775 /home/utilisateur1/dossier

                à partir de là mon utilisateur2 pouvait écrire dans /home/utilisateur1/dossier

  • # Proftpd

    Posté par  . Évalué à 2.

    Je pense que prodftpd est un bon choix si tu veux faire des choses sophistiquées.

    Le truc à prévoir c'est soit d'avoir une IP dédiée au service, qui permettent d'utiliser protftpd et sshd sur le port 22, ou mettre proftpd sur le port 2222 par exemple, avec si tu veux un NAT de port en entrée de réseau.

  • # Work around trouvé

    Posté par  . Évalué à 4. Dernière modification le 22 mars 2021 à 23:54.

    En lisant des tutoriaux pour monter un serveur FTP, j'ai repéré un truc prometteur : "mount --bind".

    Au final, j'obiens ça :
    /home/new_user/dossier

    Lors de sa création, "new_user" a son $HOME en "/home" et la valeur de ChrootDirectory est "/home/%u".

    Puis "mount --bind /home/toto/dossier /home/new_user/dossier".

    Et ça marche comme souhaité.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.