Serveur ftp droit d'acces

Résolu
Bonjour,

Voila j'ai acquis un Netgear Readynas duo v2 qui a un noyau Debian si je di pas de bêtise! avec l'interface du Nas c'est une grosse %$#@ a configurer les droits!

Je souhaite en fait que
- l'Admin (moi) ait accès à tout sur le serveur,
- et je souhaite créer un utilisateur qui a accès uniquement à un seul dossier (et qu'il ne voit pas les autres).

Je me connecte en ssh au NAS mais après c'est l'histoire du chmod que j'ai du mal!

Architecture du ftp:

-Media
-musique
-Video

-Www

Compte Admin a tout les droits partout ;)
Compte webmaster a accès juste a Www et ne voit pas le dossier Media

18 réponses

  1. Modérateur
    Parfait maintenant il ne reste plus qu'à configurer proftpd correctement et le redémarrer pour prendre les modifications en compte.

    Par défaut la configuration de proftpd sous debian consiste à avoir un utilisateur ftp qui correspond à chaque utilisateur linux (et en utilisant le même mot de passe) hormis root. Par exemple si sur ta machine sont configurés les utilisateurs toto et tata, alors il y a implicitement moyen de se connecter via ftp en tant que toto ou en tant que tata. La seule exception est root.

    On va supposer que toto peut se promener partout, tandis que tata doit resté prisonnier dans /home/tata. Pour cela on va utiliser cette option :
    http://www.proftpd.org/docs/directives/linked/config_ref_DefaultRoot.html

    Pour comprendre cette exemple il faut bien comprendre que en shell, /home/toto = ~toto = ~ quand on est loggué en toto. Sur le même principe, /home/tata = ~tata = ~ quand on est loggué en tata. En écrivant ceci on dit que tous les utilisateurs vont atterrir (et rester prisonniers) dans leur home directory. Ainsi on pourrait par exemple écrire dans /etc/proftpd/proftpd.conf ceci :

    DefaultRoot ~


    Maintenant, supposons que seul tata doit être prisonnier, mais pas toto. Alors on va expliciter qui est soumis à la règle "DefaultRoot" comme suggéré dans le lien précédent :

    DefaultRoot ~ tata,!toto


    Il ne reste plus qu'à sauver le fichier /etc/proftpd/proftpd.conf et relancer proftpd :

    service proftpd restart


    Enfin, un petit test (par exemple avec le client lftp) et c'est parti :

    aptitude install lftp
    lftp toto@localhost


    Une fois authentifié en ftp affiche le contenu du répertoire courant, essaye de remonter, puis réaffiche le contenu du répertoire courant (dans lftp les commandes sont inspirées de celles du shell) :

    ls
    cd ..
    ls
    bye


    Même test avec lftp tata@localhost, et normalement l'affaire est dans le sac :-)

    Bonne chance
    1
    1. Modérateur
      En fait ça dépend un peu du serveur ftp que tu utilises (protftpd, vsftpd etc...). Le plus simple c'est peut être d'installer proftpd (par exemple) et une interface graphique pour le configurer (gproftpd).

      Bonne chance
      0
      1. justement c'est pas possible! car c'est L'OS propriétaire netgear du nas la seul facon que je puisse faire est via ssh en root a l'ancienne :S
        0
        1. Modérateur
          Ok, mais en attendant tu as quand même un serveur ftp qui tourne, non ?

          Et ce serveur tu peux le configurer via ssh en altérant ses fichiers de configuration (par exemple avec nano) et en relançant le serveur ftp. Typiquement :
          http://www.mistra.fr/tutoriel-linux-nano.html

          En root :

          nano /etc/proftpd/proftpd.conf


          Une fois le fichier corrigé :

          service proftpd restart


          Ça c'est en admettant que ce soit proftpd qui soit utilisé, mais il faudrait déjà voir quelle serveur est installé sur ton OS. Tu peux par exemple le voir avec la commande "dpkg -l" si tu es sous debian ou en regardant qu'est ce qui écoute sur le port 21 (qui est utilisé par ftp).

          (root@silk) (~) # dpkg -l | grep ftp
          ii  lftp                                 4.3.6-1                            Sophisticated command-line FTP/HTTP client programs
          ii  proftpd-basic                        1.3.4a-2+b1                        Versatile, virtual-hosting FTP daemon - binaries
          
          (root@silk) (~) # netstat -ntlp | grep 21
          tcp6       0      0 :::21                   :::*                    LISTEN      2398/proftpd: (acce
          


          Bonne chance
          0
          1. c'est proftpd a la base mais la j'ai mis vsftpd mais je n'arrive plus a l'enlever message d'erreur

            dpkg: error processing vsftpd (--remove):
             subprocess installed post-removal script returned error exit status 1
            configured to not write apport reports
                                                  Errors were encountered while processing:
             vsftpd
            
            0
            1. Modérateur
              Quelle commande as-tu lancé pour désinstaller vsftpd ? Au pire essaye de le réinstaller et de le supprimer

              aptitude update
              aptitude safe-upgrade
              aptitude reinstall vsftpd
              aptitude purge vsftpd
              aptitude install proftpd-basic


              Bonne chance
              0
              1. j'ai fais un reset du coup c'est de retour proftpd qui fonctionne

                root@nas:~# vi /etc/proftpd.conf
                TimeoutNoTransfer 600
                TimeoutStalled 600
                TimeoutIdle 1200
                DisplayLogin welcome.msg
                DisplayChdir .message
                DenyFilter \*.*/
                PersistentPasswd on
                #Quotas off
                Port 21
                
                DynMasqRefresh 7200
                PassivePorts 1121 1122
                AllowForeignAddress off
                MaxInstances 30
                User nobody
                Group nogroup
                RequireValidShell off
                <Directory /*>
                Umask 022 022
                AllowOverwrite on
                </Directory>
                Include /etc/frontview/proftpd/ftps.conf
                Include /etc/frontview/proftpd/User.conf
                - /etc/proftpd.conf 44/44 100%
                # Do not edit.
                ServerName "NETGEAR ReadyNAS"
                ServerType standalone
                DeferWelcome off
                MultilineRFC2228 on
                DefaultServer on
                ShowSymlinks on
                AllowOverwrite on
                AllowStoreRestart off
                UseReverseDNS off
                IdentLookups off
                TimesGMT off
                WtmpLog off
                ServerLog /var/log/proftpd.log
                SystemLog /var/log/proftpd.log
                TransferLog /var/log/proftpd.log
                BanLog /var/log/proftpd.log
                MaxLoginAttempts 2
                BanEngine on
                BanTable /ramfs/ftp_ban.tbl
                BanOnEvent MaxLoginAttempts 5/00:10:00 00:15:00
                TimeoutNoTransfer 600
                TimeoutStalled 600
                - /etc/proftpd.conf 1/44 2%
                
                0
                1. ok je comprends, on mets ça dans proftpd.conf ?

                  Moi mon souhait est je me connecte en root je vois tout ceux qui est normal, mais je veux que par exemple toto quand il se connecte voit seulement un dossier qui est a la racine du ftp et non sont dossier user
                  0
                  1. salut ,

                    si tu n ' y arrives pas avec vsftpd une autre méthode :

                    -sftp : utilisation ssh + ftp
                    -rssh : commandes restrictives pour l 'utilisateur qui se connecte (shell réduit)
                    -chrootage: l' utilisateur est enfermé dans un répertoire (et sous répertoire) bien défini.

                    sftp n ' est pas la même chose que ftps qui utilise openssl, à ne pas confondre.

                    et bien évidement, cela reste compatible aussi avec un client Windows comme WinSCP.

                    si je t' indique ceci, c' est parceque le noyau en question est Debian.

                    les explications qui répondent exactement à ce que tu cherches:
                    https://www.debian-fr.org/t/serveur-sftp-shell-reduit-rssh-et-chroot/26813
                    0
                2. Modérateur
                  Oui dans /etc/proftpd/proftpd.conf (puis relance proftpd).

                  Si tu regardes ce que j'ai écrit dans mon précédent message, il suffit de voir ce que j'ai défini pour toto et tata et de l'adapter avec les profils que tu veux utiliser (root et toto).
                  0
                  1. j'ai ajouté la ligne

                    DefaultRoot ~ tata,!toto
                    et j'ai essayer DefaultRoot /www ~ webmaster,!root

                    et aucun changement..
                    0
                    1. Modérateur
                      Déjà tu es sûr que ce n'est pas plutôt /var/www (au lieu de /www). Ensuite Tu as mis deux répertoires derrière DefaultRoot (/www et ~) or normalement il n'y en n'a qu'un. Du coup la ligne serait plutôt

                      DefaultRoot /var/www webmaster,!root


                      Autre possibilité, tu fais atterrir tout le monde dans son ~ (respectivement /home/webmaster et /root), quitte à monter le contenu de /www (ou de /var/www) dans /home/webmaster/ avec un mount bind :
                      https://forums.commentcamarche.net/forum/affich-16654048-lien-symbolique-sur-ftp

                      Concrètement ça consiste à ajouter une ligne dans /etc/fstab, ou tu indiques que le contenu de /var/www et de /home/webmaster/www concordent. Ajoute à la fin de /etc/fstab cette ligne :

                      /var/www   /home/webmaster/www       none        bind        0 0


                      Ensuite tape les commandes suivantes en root :

                      mkdir -p /home/webmaster/www
                      mount /home/webmaster/www


                      Bonne chance
                      0
                      1. j'ai essayer des solution mais en vain

                        mon utilisateur a bien un dossier /home/web
                        mais quand il se connecte il y se trouve la racine..
                        0
                        1. Modérateur
                          Si tu ne me reportes pas la ligne DefaultRoot de /etc/proftpd/proftpd.conf et le résultat pour root (quel répertoire, peut-il aller partout) + pareil pour l'autre utilisateur, je vois difficilement comment je peux t'aider.
                          0
                          1. Bon j'avance :D

                            DisplayLogin welcome.msg  
                            DisplayChdir .message  
                            DenyFilter \*.*/  
                            PersistentPasswd on  
                            #Quotas off  
                            Port 21  
                            
                            DefaultRoot ~  
                            
                            
                            DynMasqRefresh 7200  
                            PassivePorts 1121 1122  
                            AllowForeignAddress off  
                            MaxInstances 30  
                            User nobody  
                            Group nogroup  
                            RequireValidShell off  
                            <Directory /*>  
                            Umask 022 022  
                            AllowOverwrite on  
                            </Directory>  
                            Include /etc/frontview/proftpd/ftps.conf  
                            Include /etc/frontview/proftpd/User.conf  
                            root@nas:~# service proftpd restart  
                            Stopping ftp server: proftpd.  
                            Starting ftp server: proftpd.  
                            root@nas:~# service proftpd restart  
                            Stopping ftp server: proftpd.  
                            Starting ftp server: proftpd.  
                            root@nas:~# vi /etc/proftpd.conf  
                            TimeoutStalled 600  
                            TimeoutIdle 1200  
                            DisplayLogin welcome.msg  
                            DisplayChdir .message  
                            DenyFilter \*.*/  
                            PersistentPasswd on  
                            #Quotas off  
                            Port 21  
                            
                            DefaultRoot ~ !admin  
                            
                            
                            DynMasqRefresh 7200  
                            PassivePorts 1121 1122  
                            AllowForeignAddress off  
                            MaxInstances 30  
                            User nobody  
                            Group nogroup  
                            RequireValidShell off  
                            <Directory /*>  
                            Umask 022 022  
                            AllowOverwrite on  
                            </Directory>  
                            root@nas:~# service proftpd restart  
                            Stopping ftp server: proftpd.  
                            Starting ftp server: proftpd.  
                            


                            Dernier bug c'est que quand je me log en admin je souhaiterai voir et modifier le dossier web

                            drwx------ 2 admin admin 4096 2012-08-19 00:42 admin
                            drwx------ 2 web   users 4096 2012-08-21 21:19 web
                            
                            0
                            1. Modérateur
                              Juste quelques remarques, ça m'étonne que tu es la directive DefaultRoot a deux endroits. À mon avis tout peut s'écrire sur une ligne, non ?

                              DefaultRoot ~  
                              ...
                              DefaultRoot ~ !admin  


                              Autre conseil, je te conseille d'écrire tes noms de fichiers en minuscules pour avoir des notations homogènes (même si ce que tu as écris est tout à fait juste).

                              Include /etc/frontview/proftpd/ftps.conf  
                              Include /etc/frontview/proftpd/User.conf 


                              Dernier bug c'est que quand je me log en admin je souhaiterai voir et modifier le dossier web

                              Plusieurs solution :
                              - tu attribues le dossier web à admin:web et tu donnes les droits en écriture au groupe web

                              cd /le/repertoire/dans/lequel/est/place/web
                              sudo chown -R admin:web web/
                              find web/ -type f -exec chmod 640 {} \;
                              find web/ -type d -exec chmod 750 {} \;

                              Si la gestion des droits te paraît obscure (chown, chmod etc...) je t'invite à lire le man correspondant et ce cours :
                              http://www.mistra.fr/tutoriel-linux-profils-et-droits.html
                              http://www.mistra.fr/tutoriels-linux-mode-texte/tutoriel-linux-man.html

                              man chown
                              man chmod


                              Note qu'ici les fichiers appartiennent à admin pour que web ne puisse pas changer les droits associés à ces fichiers.

                              - autre solution, tu peux utiliser des droits acl :
                              http://doc.ubuntu-fr.org/acl
                              0
                              1. Bien vu pour le doublon de defaultroot je vai regler le soucis ;)

                                Pour les histoires de majuscule c'est mon Nas qui le fait ..

                                donc si je dit pas de betise il suffit de faire:

                                root@nas:/home# chown -r admin:web web

                                puis un chmod -r 770 web

                                exact?
                                0
                                1. Modérateur
                                  Ouais, et vu que tu as marqué le problème en résolu, j'imagine que tu es satisfait du résultat !

                                  Bonne continuation
                                  0