Table des matières
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
oursync
- 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 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:
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