1 votes

Autoriser l'utilisateur de vsftpd à télécharger uniquement dans un seul répertoire

Je dois autoriser un large accès anonyme au téléchargement via vsftpd, mais restreindre les téléchargements à un seul chemin. Existe-t-il un moyen de faire cela autrement qu'avec les permissions du système de fichiers ?

Il y a deux problèmes principaux à essayer de verrouiller le système de fichiers :

  1. Il affecte tous les utilisateurs - il s'agit d'un système hétérogène, il est donc difficile de s'assurer que tout le monde excepto l'utilisateur FTP a accès.
  2. Il ne semble pas être hiérarchisé -- même si nous pouvons verrouiller les répertoires de premier niveau, il semble facile pour quelqu'un de créer un sous-répertoire inscriptible par FTP, auquel cas vsftpd semble autoriser le téléchargement de choses vers ce sous-répertoire.

Pour l'instant, c'est le numéro 2 qui nous préoccupe le plus. Nous avons donc monté la zone en lecture seule comme un système de fichiers en lecture seule, mais cela pose ses propres problèmes.

2voto

snowdude Points 2790

Vous pouvez utiliser le bind L'option mount permet de mapper/remonter une partie déjà montée de la hiérarchie d'un système de fichiers vers un autre endroit. Disons que vous avez un partage samba avec des vidéos et un second avec une bibliothèque d'images et que vous voulez les offrir en téléchargement FTP en lecture seule.

mkdir -p /var/ftp/Videos /var/ftp/Images
mount --bind /share/Videos /var/ftp/Videos
mount --bind /share/Images /var/ftp/Images

Ensuite, faites en sorte que ces systèmes de fichiers soient en lecture seule :

mount -o remount,ro /var/ftp/Videos
mount -o remount,ro /var/ftp/Images

Les autorisations du système de fichiers restent inchangées, mais tout ce qui se trouve sous Vidéos et Images est désormais en lecture seule. Il est donc peu probable qu'un sous-répertoire avec le nom drwx------ est accessible à l'utilisateur FTP, mais l'utilisateur FTP ne peut pas non plus écrire dans un sous-répertoire ayant pour nom drwxrwxrwx permissions.

Le bind mount ne prend pas d'options donc pour obtenir un montage en lecture seule il faut un remount et donc je pense que vous ne pouvez pas utiliser fstab pour rendre cela persistant et que vous devez script cela à la place.

Ensuite, configurez le répertoire de téléchargement :

mkdir -p /var/ftp/Upload
chmod 700 /var/ftp/Upload
chown ftp.ftp /var/ftp/Upload 

Ensuite, configurez vsftpd correctement pour les téléchargements anonymes et chroot() l'utilisateur FTP anonyme vers /var/ftp. Cela fait un moment que je n'ai pas fait ça, mais c'est approximatif et non testé :

# /etc/vsftpd/vsftpd.conf
listen=YES
#The following directives prevent local users from logging in and enables anonymous access respectively.
local_enable=NO
anonymous_enable=YES
#The following directive enables write access to the ftp server’s filesystem. 
write_enable=Yes
anon_upload_enable=Yes
# Sets the root directory for anonymous connections.
anon_root=/var/ftp

Bien sûr, il y a beaucoup d'autres options pertinentes à inclure.

0voto

ALex_hha Points 6885

Vous pouvez facilement obtenir ce que vous voulez avec proftpd

<VirtualHost anonymous.example.net>
   ServerName "ANONYMOUS"

   Protocols ftp
   Port 21

   DefaultRoot /var/ftp/pub/

   <Anonymous /var/ftp/pub/>
      User ftp
      Group ftp
      UserAlias anonymous ftp

      MaxStoreFileSize 100 Mb user ftp

      <Directory /var/ftp/pub/>
         <Limit RMD MKD XMKD XRMD>
            DenyAll
         </Limit>
      </Directory>
   </Anonymous>
</VirtualHost>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X