Partage
  • Partager sur Facebook
  • Partager sur Twitter

help problème de droits en FTP sur Rpi

    15 mai 2018 à 21:29:06

    Bonjour à tous,

    Je galère depuis 2 jours et j'espère trouver un peu d'aide ici pour résoudre un problème un peu pointu avec mon Raspberry Pi 3 (Raspbian Stretch).

    J'explique rapidement :

    • J'ai créé un serveur web sur Rpi pour partager des pages sur un réseau local non connecté à internet.
    • Le site est sur un serveur apache2 et j'ai installé Proftpd pour l'alimenter
    • Le site Web est situé sur /var/www/html en partie directement et en partie sur une clé USB (NTFS ou FAT32) insérée dans le Rpi et montée sur le répertoire /var/www/html/usbdisk (l'objectif est de pouvoir alimenter le site facilement depuis un PC directement sur la clé.
    • Je pense avoir géré correctement les permissions (dossiers en 770 et fichiers en 660) et owner (www-data) de ces dossiers locaux, celles du montage USB, le paramétrage de la config de Proftpd
    • mon utilisateur est un utilisateur linux dont le dossier personnel est /var/www/html et qui fait partie du groupe www-data
    mais j'ai un problème :
    • Je n'arrive pas à créer en FTP des dossiers sur ma clé USB (/var/www/html/usbdisk)
    alors que :
    • La lecture et l'écriture de fichiers marche bien sur la clé en FTP
    • La création de dossiers fonctionne sur la racine du site (/var/www/html)
    • La création de dossiers fonctionne avec le même utilisateur en connexion direct local sur le Rpi ou en SSH
    Le log de proftpd indique :
    NOTICE: directory '/usbdisk/essai/.dstXXovcdye' has unexpected mode 0770 (expected 0700)
    chmod(/usbdisk/essai/.dstXXovcdye) failed: Opération non permise

    Si quelqu'un a une idée ou besoin de plus d'info n'hésitez pas.

    Merci d'avance

    Fabrice

    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2018 à 10:59:38

      Bonjour,

      Désolé de n'avoir pas répondu avant mais j'ai été obligé de décrocher sur d'autres activités.

      Si la question est d'avoir essayé de passer les droit de montage de la clé en 0700, oui je l'ai testé : c'est pas mieux.

      Voilà comment je monte ma clé dans mon /etc/fstab :

       /dev/sda1 /var/www/html/usbdisk auto noatime,fmask=0117,dmask=0077,uid=33,gid=33,nofail 0 0

      Voilà le contenu de mon proftpd.conf :

      #
      # /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
      # To really apply changes, reload proftpd after modifications, if
      # it runs in daemon mode. It is not required in inetd/xinetd mode.
      # 
      
      # Includes DSO modules
      Include /etc/proftpd/modules.conf
      
      # Set off to disable IPv6 support which is annoying on IPv4 only boxes.
      UseIPv6				on
      # If set on you can experience a longer connection delay in many cases.
      IdentLookups			off
      
      ServerName			"FTP Techno"
      # Set to inetd only if you would run proftpd by inetd/xinetd.
      # Read README.Debian for more information on proper configuration.
      ServerType				standalone
      DeferWelcome			off
      
      MultilineRFC2228		on
      DefaultServer			on
      ShowSymlinks			on
      
      TimeoutNoTransfer		600
      TimeoutStalled			600
      TimeoutIdle			1200
      
      DisplayLogin                    welcome.msg
      DisplayChdir               	.message true
      ListOptions                	"-l"
      
      DenyFilter			\*.*/
      
      # Use this to jail all users in their homes 
      DefaultRoot			~
      
      # Users require a valid shell listed in /etc/shells to login.
      # Use this directive to release that constrain.
      RequireValidShell		off
      
      # Port 21 is the standard FTP port.
      Port				21
      
      # In some cases you have to specify passive ports range to by-pass
      # firewall limitations. Ephemeral ports can be used for that, but
      # feel free to use a more narrow range.
      # PassivePorts                  49152 65534
      
      # If your host was NATted, this option is useful in order to
      # allow passive tranfers to work. You have to use your public
      # address and opening the passive ports used on your firewall as well.
      # MasqueradeAddress		1.2.3.4
      
      # This is useful for masquerading address with dynamic IPs:
      # refresh any configured MasqueradeAddress directives every 8 hours
      <IfModule mod_dynmasq.c>
      # DynMasqRefresh 28800
      </IfModule>
      
      # To prevent DoS attacks, set the maximum number of child processes
      # to 30.  If you need to allow more than 30 concurrent connections
      # at once, simply increase this value.  Note that this ONLY works
      # in standalone mode, in inetd mode you should use an inetd server
      # that allows you to limit maximum number of processes per service
      # (such as xinetd)
      MaxInstances			30
      
      # Set the user and group that the server normally runs at.
      User				proftpd
      Group				nogroup
      
      # Umask 022 is a good standard umask to prevent new files and dirs
      # (second parm) from being group and world writable.
      Umask				000  000
      # Normally, we want files to be overwriteable.
      AllowOverwrite			on
      
      # Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
      # PersistentPasswd		off
      
      # This is required to use both PAM-based authentication and local passwords
      # AuthOrder			mod_auth_pam.c* mod_auth_unix.c
      
      # Be warned: use of this directive impacts CPU average load!
      # Uncomment this if you like to see progress and transfer rate with ftpwho
      # in downloads. That is not needed for uploads rates.
      #
      # UseSendFile			off
      
      TransferLog /var/log/proftpd/xferlog
      SystemLog   /var/log/proftpd/proftpd.log
      
      # Logging onto /var/log/lastlog is enabled but set to off by default
      #UseLastlog on
      
      # In order to keep log file dates consistent after chroot, use timezone info
      # from /etc/localtime.  If this is not set, and proftpd is configured to
      # chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight
      # savings timezone regardless of whether DST is in effect.
      #SetEnv TZ :/etc/localtime
      
      <IfModule mod_quotatab.c>
      QuotaEngine off
      </IfModule>
      
      <IfModule mod_ratio.c>
      Ratios off
      </IfModule>
      
      
      # Delay engine reduces impact of the so-called Timing Attack described in
      # http://www.securityfocus.com/bid/11430/discuss
      # It is on by default. 
      <IfModule mod_delay.c>
      DelayEngine on
      </IfModule>
      
      <IfModule mod_ctrls.c>
      ControlsEngine        off
      ControlsMaxClients    2
      ControlsLog           /var/log/proftpd/controls.log
      ControlsInterval      5
      ControlsSocket        /var/run/proftpd/proftpd.sock
      </IfModule>
      
      <IfModule mod_ctrls_admin.c>
      AdminControlsEngine off
      </IfModule>
      
      #
      # Alternative authentication frameworks
      #
      #Include /etc/proftpd/ldap.conf
      #Include /etc/proftpd/sql.conf
      
      #
      # This is used for FTPS connections
      #
      #Include /etc/proftpd/tls.conf
      
      #
      # Useful to keep VirtualHost/VirtualRoot directives separated
      #
      #Include /etc/proftpd/virtuals.conf
      
      # A basic anonymous configuration, no upload directories.
      
      # <Anonymous ~ftp>
      #   User				ftp
      #   Group				nogroup
      #   # We want clients to be able to login with "anonymous" as well as "ftp"
      #   UserAlias			anonymous ftp
      #   # Cosmetic changes, all files belongs to ftp user
      #   DirFakeUser	on ftp
      #   DirFakeGroup on ftp
      # 
      #   RequireValidShell		off
      # 
      #   # Limit the maximum number of anonymous logins
      #   MaxClients			10
      # 
      #   # We want 'welcome.msg' displayed at login, and '.message' displayed
      #   # in each newly chdired directory.
      #   DisplayLogin			welcome.msg
      #   DisplayChdir		.message
      # 
      #   # Limit WRITE everywhere in the anonymous chroot
      #   <Directory *>
      #     <Limit WRITE>
      #       DenyAll
      #     </Limit>
      #   </Directory>
      # 
      #   # Uncomment this if you're brave.
      #   # <Directory incoming>
      #   #   # Umask 022 is a good standard umask to prevent new files and dirs
      #   #   # (second parm) from being group and world writable.
      #   #   Umask				022  022
      #   #            <Limit READ WRITE>
      #   #            DenyAll
      #   #            </Limit>
      #   #            <Limit STOR>
      #   #            AllowAll
      #   #            </Limit>
      #   # </Directory>
      # 
      # </Anonymous>
      
      # Include other custom configuration files
      Include /etc/proftpd/conf.d/
      <Global>
      <Directory /var/www/html>
      AllowRetrieveRestart on
      AllowStoreRestart on
      GroupOwner www-data
      UserOwner www-data
      Umask 000 000
      </Directory>
      </Global>


      Si quelqu'un a une idée ou besoin de plus d'info...

      Merci.

      Fabrice

      -
      Edité par FabriceCi 21 mai 2018 à 11:01:14

      • Partager sur Facebook
      • Partager sur Twitter
        23 mai 2018 à 16:39:19

        Salut,

        Je vois que tu as "dmask=0077" dans ton fstab.

        => tu interdis tout au groupe 33 sur ce dossier.

        Ton utilisateur est propriétaire de ce dossier ou il fait simplement partie du groupe ?

        Essaie "dmask=0007"

        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2018 à 18:36:45

          Bonjour Psyckyo,

          Mon utilisateur est dans le groupe 33 www-data.

          J'étais au départ en dmask 0007 et je suis passé en 0077 en voyant le proftpd.log :

          NOTICE: directory '/usbdisk/essai/.dstXXovcdye' has unexpected mode 0770 (expected 0700)

          mais c'est pareil. Même problème.

          Merci tout de même de la suggestion.

          Fabrice.

          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2018 à 8:55:55

            Salut,

            Etrange, tu as bien redémarré ton service proftpd après avoir mis umask à 0007 ?

            Et si tu monte la clef simplement avec un umask =0000, ça permet la création de dossier via FTP ou pas ?

            Peux-tu également donner le résultat de la commande : sudo fdisk -L

            Il y a peut-être des piste à creuser en utilisant un formatage EXT plutôt que NTFS ou FAT (cf => https://askubuntu.com/questions/380767/please-change-the-permissions-to-0770-so-that-the-directory)

            Sinon essaie peut-être de monter ta clef avec un UID=ftp (cf => https://www.linuxquestions.org/questions/linux-server-73/proftpd-usb-external-hdd-ubuntu-10-04-a-803706/)

            Tiens nous au courant si ça se débloque, bon courage.

            • Partager sur Facebook
            • Partager sur Twitter
              29 mai 2018 à 16:17:34

              Bonjour à tous,

              J'ai résolu mon problème.

              Après avoir mis en doute mes paramétrages, j'ai fini par contacter un développeur linux qui m'a dépanné.
              Le problème ne venait pas de moi mais d'un bug de Proftpd dans sa version stable 1.3.5.

              Lors de la création d'un dossier, proftp cré le dossier puis modifie les droits du dossier pour les mettre en 0700 mais comme dans mon cas nous sommes sur une clé ntfs  montée avec les droits 0777, il s'aperçoit que la modification n'a pas fonctionné et supprime le dossier qu'il vient de créer.

              Le bug est corrigé dans la version 1.3.6 encore en testing.

              voir description ici : http://bugs.proftpd.org/show_bug.cgi?id=4063

               Merci à ceux qui ont tenté de m'aider.

              PS : Ma solution n'était pas une solution de facilité mais celle qui correspondait à mes contraintes.

              Fabrice
              • Partager sur Facebook
              • Partager sur Twitter

              help problème de droits en FTP sur Rpi

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown