User Quotas für FTP-Server einrichten

Wenn man einen FTP-Server betreibt,  sollte man sicher gehen, dass einzelne Anwender nicht durch das Ablegen von großen Dateien den ganzen Plattenplatz für sich beanspruchen. Um das zu erreichen ist es sinnvoll mit User Quotas zu arbeiten – das heißt, man beschränkt die mögliche abzulegende Menge an Bytes pro User.

Vorraussetzungen

Den FTP-Server vsftpd
Das Programm adduser
Das Programm quota

Alle Programme sind in den Standard Repositories der Linuxdistributionen enthalten

Nachdem alle Programme installiert wurden, ändern wir 2 Parameter in der /etc/vsftpd.conf (Pfad kann sich von Distri zu Distri unterscheiden)

chroot_local_user=YES 

// Dieser bewirkt, das die User ihr Homeverzeichnis nicht verlassen dürfen

write_enable=YES

// Dieser bewirkt, das die User im Homeverzeichnis schreiben dürfen

Um Userquotas zu verwenden, muss beim Mounten ein Parameter mitgegeben werden. Es empfiehlt sich also für die FTP-Verzeichnisse ein eigenes Laufwerk zu mounten. Das kann ein Loop-Device sein oder eine physische Platte bzw. Partition.

Umsetzung

Für das Beispiel verwende ich ein Loop-device

1.    Einen Ordner für das Loop Device anlegen 

mkdir /usr/loop_device

2.    Eine 50MB-Datei  erstellen

dd if=/dev/zero of=/usr/loop_device/ld1 bs=1024 count=50000

3.    Ein Dateisystem darauf erzeugen

mkfs.ext4 /usr/loop_device/ld1

4.    Ein Verzeichnis für die FTP-User anlegen

mkdir /home_ftp

5.     Und das Loopdevice darauf mounten

a.     Folgenden Eintrag in die /etc/fstab aufnehmen

/usr/loop_device/ld1 /home_ftp/         ext4 rw,loop,usrquota,grpquota  0 0

b.     Das Verzeichnis mounten

        mount -a

6.     Jetzt einen Testuser anlegen

adduser testftp –home /home_ftp/testftp

Der Parameter –home bewirkt, dass das Verzeichnis für den User angelegt wird und die Berechtigungen gleich richtig gesetzt werden

7.     Quotas für den User setzen

edquota -u testftp

edit_user_quotas

Dort unter hard 5000 eintragen – das bewirkt, das der User nur 5000 KBytes, also 5MB in sein Homeverzeichnis schreiben darf

Ob alles funktioniert hat, kann man mit repquota -st /home_ftp/ prüfen.

show_user_quotas

8.    Funktionstest

Auf dem Client 2 Dateien bereitstellen – einmal mit 3MB einmal mit 6MB und danach versuchen, diese hochzuladen

ftp> mput testfile_3mb
mput testfile_3mb? y
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
3072000 bytes sent in 0.01 secs (242522.2 kB/s)

ftp> mput testfile_6mb
mput testfile_6mb? y
200 PORT command successful. Consider using PASV.
150 Ok to send data.
netout: Connection reset by peer
451 Failure writing to local file.

Hinweis:

Das ganze funktioniert nicht nur mit User Quotas, sondern auch mit Group Quotas sowie mit feineren Einstellungen (Stichwort Softquotas). Die Erfahrung zeigt allerdings, daß man In 90% aller Fälle nur eine simple Größenbegrenzung möchte :).

Kommentare sind abgeschaltet.