====== 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