Droits samba pour users SFTP

bonjour à tous,

c'est une question un peu bizarre, mais je voudrais savoir si c'est possible.

j'ai un serveur samba (linux) avec des users qui se connectent dessus, et des droits sur des rep/fichiers pour chaque user dans smb.conf (jusque là tout est normal)

j'ai un serveur sftp (sur e meme server linux que samba) (ssh configuré et opérationnel), un seul (root) configuré avec ses clés privée et publique. ça fonctionne très bien avec winscp (client sftp sous windows).

je voudrais creer des cles privees/publiques pour chaque user, qui se connecteront sur le sftp avec winscp. Le probleme est le suivant :
est-il possible de repercuter les droits d'acces de chq user dans samba, dans sftp, de maniere a ce que lorsque un user se connecte avec winscp sur le server sftp, il ne voit que ce qu'il a le droit de voir (droits samba de ce user) ?

j'espere avoir ete assez clair dans ma question, en esperant une reponse.
merci à tous

4 réponses

  1. Modérateur
    Salut,

    j'ai un serveur sftp (sur e meme server linux que samba) (ssh configuré et opérationnel)

    Ne fait pas confusion.

    Il n'y a pas de serveur sftp.
    La partie serveur est le programme sftp-server (voir le fichier sshd_config) et le client et le programme sftp.

    En gros il s'agit de SSH + le transfer de fichiers (scp et sftp).

    Il n'y a pas non plus de server linux.

    Linux c'est le kernel, GNU/Linux c'est l'OS et il y a plusieurs distributions.

    Un serveur c'est une machine ou un programme qui offre des services ou ressources à un client.

    lorsque un user se connecte avec winscp sur le server sftp, il ne voit que ce qu'il a le droit de voir (droits samba de ce user) ?

    Je ne crois pas que samba à quelque chose là dédans quand tu te connectes avec Winscp.
    Tu peux remarqué ça en arrêtant le serveur Samba. Tu verras que la connexion avec Winscp functionnera toujours.

    Si tu veux que l'utilisateur ne voie que le répertoire que lui est destiné, avec openssh il y a la possibilité de créer un environnement chrooté.
    En ce cas l'utilisateur en plus de n'avoir accès qu'à son répertoire, sera emprisonner dans un pseudo-système se trouvant à l'intérieur de ton GNU/Linux.
    Si ça ne t'interesses que pour le transfer de fichiers alors c'est de ça que tu as besoin (enfin c'est mon opinion).

    lami20j
    0
    1. Dans la suite de ce message, je parle de Paul comme d'un user qui a quelques droits sur certains repertoires.

      ---->Il n'y a pas de serveur sftp.
      ---->La partie serveur est le programme sftp-server (voir le fichier sshd_config) et le client et le programme sftp.
      bien vu

      ---->lorsque un user se connecte avec winscp sur le server sftp, il ne voit que ce qu'il a le droit de voir (droits samba de ce user) ?
      Ben le probleme est là justement, il voit tout, absolument tout. Certes il ne peut pas créer de répertoire/fichiers dans des chemins comme /etc, mais par contre il peut récupérer tous les fichiers du serveur sans exception.
      et là c un mega probleme

      ---->Je ne crois pas que samba à quelque chose là dédans quand tu te connectes avec Winscp.
      justement je voudrais que samba dise au sftp ce que PAUL peut voir, sinon il voit tout

      ---->Tu peux remarqué ça en arrêtant le serveur Samba. Tu verras que la connexion avec Winscp functionnera toujours.
      exact, ça fonctionne toujours, et c la le probleme

      ---->Si tu veux que l'utilisateur ne voie que le répertoire que lui est destiné, ...
      oui, je veux qu'il ne puisse voir que ce que je lui ai autorisé a voir dans samba
      exemple, paul peut voir :
      /volume1/bboa
      /volume1/public
      /volume1/photo
      et paul ne peut pas voir :
      /volume1/opt
      /volume1/save
      et le seul endroit dans le système, où ces droits sont gérés, c'est dans smb.conf (le fichier de config de samba) -> d'où ce post

      autre exemple :
      lorsque paul se connecte en ftp avec filezilla sur le serveur ftp, il ne voit que ce que je lui ai autorisé a voir dans samba.
      je voudrais qu'il en soit de même pour sftp (avec winscp)

      j'espere avoir été assez clair.
      Si ce n'est pas possible, tant pis, mais je serai surpris qu'il en soit ainsi.
      0
      1. Modérateur
        Salut,

        je crois qu'il y a un malentendu quelque part.

        J'ai très bien compris ce que tu veux faire et c'est faisable mais pas comment tu le penses (enfin c'est mon opinon).

        Le serveur Samba utilise le protocol SMB
        Un serveur FTP utilse le protocol FTP
        Le serveur SSH utilie le protocol SSH (version 1 et 2)

        lorsque paul se connecte en ftp avec filezilla sur le serveur ftp, il ne voit que ce que je lui ai autorisé a voir dans samba.


        Oui et c'est normal.
        Mais pas comment tu penses. (enfin tant que je n'ai pas vu les fichiers de configuration de tes serveurs je ne peux pas être sûr de ce que tu va lire, mais dans la logique c'est ça)

        Je m'explique.

        Dans le fichier de configuration de samba tu as donné accèss à certains ressources pour les utilisateurs. Donc ils peuvent se connecter et voir ce que toi a decidé. Jusqu'ici c'est bon.

        En revanche avec le ftp, les utilisateurs voient ce que tu as decidé mais pas parce que dans le fichier samba.conf tu as configureé l'accès aux ressources, mais parce que le serveur ftp (tu utilises quoi comme serveur ftp?) a aussi un fichier de configuration dans lequel on spécifie les droits, les répertoires, etc.. (ce qu'on veut partager)

        Si, ce sont les même que dans samba.conf alors ça s'explique pourquoi tu peux.

        Pour ssh il y a des solutions envisageable que je connais.

        1.
        - limitations des accès avec chroot

        SSH2 a 2 mots clé

        ChRootUsers user

        limiter l'accès au répertoire de compte user

        ChRootGroups groupe1

        s'applique pour tous le comptes d'un group

        Dans les 2 cas on peut ajouter plusieurs utilisateurs ou groupes separré par une virgule sans espace.

        je n'ai pas testé

        2.
        OpenSSH

        pour openssh il y a des patch pour pouvoir créer un environnement chrooté.

        J'ai testé sur debian et ça marche impecable. D'ailleurs je suis en train de préparer un tuto pour ça en utilisant 2 scripts perl pour automatisation.

        A savoir que avec sftp en fait tu te connectes sur un compte pour transfer de fichiers. Une fois le ssh activé de toute façon c'est normal que l'utilsateur accede à son compte (c'est le but de SSH - Le shell securisé)

        lami20j
        0
        1. Bonjour,
          j'ai effectivement compris tout ce que tu m'as dit.
          comme je n'ai pas trouvé de fichier de config ftp qui resume les droits des users, je me suis dit que le demon ftp recuperait les droits des users dans le fichier de config de samba (que j'ai joint). Plus bas dans ce post apparaissent les fichiers que j'ai trouvé et qui te donneront des infos sur ma config.

          Apparemment, la methode "limitations des accès avec chroot" ne m'interesse pas car chacun de mes users a des droits differents.
          Avec ChRootUsers user, on limite l'accès au répertoire de compte user, ca c pas du tout ce que je veux.
          Avec ChRootGroups groupe1, il faut que je cree plein de groupes et que je mettre les users dedans. pas cool

          le patch pour openssh "créer un environnement chrooté", a l'air interessant, je vais attendre que tu finisses ton tuto pour voir et tester

          Ce que je souhaite :
          paul accède aux repertoires suivants :
          /volume1/public
          /volume1/DL
          /volume1/bboa
          christian accède aux répertoires suivants :
          /volume1/public
          /volume1/web
          /volume1/DL
          /volume1/bboa
          /volume1/HDI

          pour chaque user, il y a une config differente

          merci pour ton aide précieuse

          ***********************
          voila mon fichier de config de samba
          NAS250> cat /usr/syno/etc/smb.conf
          [global]
          socket options=TCP_NODELAY
          workgroup=MSHOME
          realm=*
          printing=lprng
          winbind enum groups=yes
          idmap gid=10000-30000
          passdb backend=smbpasswd
          security=user
          idmap uid=10000-30000
          printcap name=/usr/syno/etc/printcap
          load printers=yes
          winbind enum users=yes
          [public]
          invalid users=nobody,nobody
          valid users=nobody,christian,jonathan,sylvie,paul,admin,nobody
          comment="Partage public"
          path=/volume1/public
          guest ok=yes
          browseable=yes
          read list=nobody,nobody
          write list=nobody,christian,jonathan,sylvie,paul,admin,nobody
          writeable=yes
          [web]
          invalid users=nobody,nobody
          valid users=nobody,christian,admin,nobody
          comment="Site web local"
          path=/volume1/web
          guest ok=yes
          browseable=yes
          read list=nobody,christian,nobody
          write list=nobody,admin,nobody
          writeable=yes
          [DL]
          invalid users=nobody,nobody
          valid users=nobody,Kriss,christian,sectorzero,jonathan,alphavictor,sylvie,jeanclaude,paul,SaveByFTP,admin,mohamed,nobody
          comment="Download"
          path=/volume1/DL
          guest ok=yes
          browseable=yes
          read list=nobody,Kriss,christian,sectorzero,jonathan,alphavictor,sylvie,jeanclaude,mohamed,nobody
          write list=nobody,paul,SaveByFTP,admin,nobody
          writeable=yes
          [save]
          invalid users=nobody,nobody
          valid users=nobody,SaveByFTP,admin,nobody
          comment="Sauvegardes"
          path=/volume1/save
          guest ok=yes
          browseable=yes
          read list=nobody,nobody
          write list=nobody,SaveByFTP,admin,nobody
          writeable=yes
          [bboa]
          invalid users=nobody,nobody
          valid users=nobody,christian,jonathan,sylvie,paul,admin,nobody
          comment="Big Box Of Art"
          path=/volume1/bboa
          guest ok=yes
          browseable=yes
          read list=nobody,christian,jonathan,sylvie,paul,nobody
          write list=nobody,admin,nobody
          writeable=yes
          [HDI]
          invalid users=nobody,nobody
          valid users=nobody,christian,SaveByFTP,admin,nobody
          comment="HirenDemarreurIndispensable"
          path=/volume1/HDI
          guest ok=yes
          browseable=yes
          read list=nobody,christian,nobody
          write list=nobody,SaveByFTP,admin,nobody
          writeable=yes
          [NetBackup]
          invalid users=nobody,nobody
          valid users=nobody,admin,nobody
          comment="System default share"
          path=/volume1/NetBackup
          guest ok=yes
          browseable=yes
          read list=nobody,nobody
          write list=nobody,admin,nobody
          writeable=yes
          [tmp]
          invalid users=nobody,nobody
          valid users=nobody,admin,nobody
          comment=""
          path=/volume1/tmp
          guest ok=yes
          browseable=yes
          read list=nobody,nobody
          write list=nobody,admin,nobody
          writeable=yes
          [opt]
          invalid users=nobody,nobody
          valid users=nobody,admin,nobody
          comment=""
          path=/volume1/opt
          guest ok=yes
          browseable=yes
          read list=nobody,nobody
          write list=nobody,admin,nobody
          writeable=yes
          NAS250>
          ***********************
          paul est dans le group users, comme tous les autres compte d'ailleurs
          NAS250> id -gn paul
          users
          NAS250>
          ***********************
          liste des group
          NAS250> cat /etc/group
          #$_@GID__INDEX@_$65539$

          root:x:0:
          lp:x:7:nobody,lp,nobody
          ftp:x:21:nobody,ftp,nobody
          smmsp:x:25:nobody,smmsp,nobody
          nobody:x:1023:nobody,nobody
          users:x:100:nobody,nobody
          NAS250>
          ***********************
          Fichiers contenant ftp dans leur nom
          je n'arrive pas a determiner quelle version de ftp il s'agit
          il y a juste le demon qui tourne /usr/syno/sbin/ftpd
          NAS250> find / -name ftp*
          /etc/ftpusers
          /usr/syno/sbin/ftpd
          /usr/syno/synoman/tools/ftp.cgi
          ***********************
          seul fichier de config de ftp que j'ai trouvé
          NAS250> cat /etc/ftpusers
          root
          bin
          daemon
          adm
          lp
          sync
          shutdown
          halt
          uucp
          operator
          nobody
          NAS250>
          ***********************
          0