====== Transfert de fichiers sécurisé ====== On peut utiliser différentes méthodes, * si vous avez déjà un accès ssh, vous pouvez déjà utiliser ''scp'' ou ''rsync'' * sinon on va configurer un accès spécifique et limité à SFTP (secure FTP) ===== SFTP ===== On va créer un utilisateur dédié ''filez'' ainsi qu'une zone dédiée aux échanges sur le serveur (idéalement sur une partition à part pour ne pas laisser la possibilité aux utilisateurs de saturer une partition importante pour le serveur!) adduser filez chown -R root:root /home/filez chmod go-rwx /home/filez mkdir -p /sftp/filez/incoming chown filez:filez /sftp/filez/incoming Et bride cet accès depuis le fichier de configuration du service SSH, ''/etc/ssh/sshd_config'': # override default of no subsystems #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match User filez PasswordAuthentication yes X11Forwarding no AllowTcpForwarding no AllowAgentForwarding no ChrootDirectory /sftp/%u ForceCommand internal-sftp Notez ci-dessus * on permet une identification par mot de passe spécifiquement pour ''filez'', afin de faciliter la vie des utilisateurs. * on interdit les autres usages de ssh, et on n'autorise que le sftp * ''internal-sftp'' est spécifié (à la place de la valeur par défaut de subsystem) * et on utilise un ''chroot'' afin de verrouiller l'utilisateur dans son dossier ''/sftp/filez/'' Ensuite, on peut utiliser la commande ''sftp'' (qui se repose sur son ''$HOME/.ssh/config'') ou bien un client interactif comme [[https://filezilla-project.org/|FileZilla]] plus accessible pour la plupart des utilisateurs. Pensez à bien sélectionner le protocole "SFTP" via l'icone de gauche dans la barre des icones, afin de configurer la connexion: {{:doc:formations:hebergement:serveur:filezilla_config_sftp.jpg?500|}} ===== Quota ===== Il y a plusieurs façons de limiter la taille d'un dossier avec des quotas, mais la plus simple reste d'avoir une partition dédiée, physique ou virtuelle. ==== Partition virtuelle dans un fichier ==== On crée un fichier ''/sftp/volume.img'' de 5GO que l'on va utiliser comme une partition virtuelle: mkdir /sftp dd if=/dev/zero of=/sftp/volume.img bs=1G count=5 mkfs -t ext4 /sftp/volume.img On va le monter en tant que "loop device": mount -t auto -o loop /sftp/volume.img /sftp Désormais ''/sftp'' montre le système de fichier à l'intérieur du fichier ''/sftp/volume.img''. Le fichier image semble avoir disparu car on l'a monté sur le dossier qui le contient lui-même ! # Il faut (donc) recréer le dossier vu précédemment: mkdir -p /sftp/filez/incoming chown filez:filez /sftp/filez/incoming On peut voir l'occupation disque associée: df -hl /sftp # Filesystem Size Used Avail Use% Mounted on # /dev/loop1 4.9G 32K 4.6G 1% /sftp On peut ajouter cette ligne à ''/etc/fstab'' pour que le montage soit fait au reboot: /sftp/volume.img /sftp ext4 loop 0 0 Pour retirer le montage et détruire le volume (ex. après usage): umount /sftp rm /sftp/volume.img ==== LVM ==== Si vous avez partitionné votre disque dur avec LVM, vous pourrez aisément modifier la taille de la partition (''apt install lvm2''): # Créer un espace virtuel de 10GO nommé "sftpdata" dans le groupe de volumes "vg0" lvcreate -L 10G -n sftpdata vg0 # On le formatte en ext3 mke2fs -j /dev/vg0/sftpdata # On le monte (en général vous voudrez l'indiquer dans /etc/fstab pour que ce soit rémanent) mount /dev/vg0/sftpdata /sftp Ensuite on peut facilement étendre la taille du système de fichier virtuel associé: # Ajouter 2GO d'espace au volume: lvextend -L +2g /dev/vg0/sftpdata # Puis on retaille le système de fichier: resize2fs /dev/vg0/sftpdata