
Ich habe versucht, Benutzerfestplattenkontingente für vsftpd zu konfigurieren.
Ich habe Kontingente für virtuelle FTP-Benutzer mit dem Paket „Quota“ unter Debian konfiguriert (Sie wissen schon, indem ich /etc/fstab und all das bearbeitet habe). Im Internet habe ich erfahren, dass dies die einzige Lösung mit vsftpd ist.
Das Problem ist: Wenn eine Datei auf den FTP-Server hochgeladen wird, ist ihr Besitzer ftp:nogroup, sodass das Kontingent für meinen Benutzer, z. B. bob:bob, nicht gilt.
Ich habe auch versucht, ftp:bob den Zielordner zu chownen und Gruppenquoten für die Bob-Gruppe zu verwenden, aber das hat nicht funktioniert
Also bin ich direkt zu den FAQ gegangen und habe das nicht gefunden :) Haben Sie eine Lösung für dieses Quotenproblem?
Grüße, Mehdi
Antwort1
Führen Sie zur Einrichtung folgende Schritte aus:
VSFTPd
Erstellen Sie die Datei /etc/vsftd.conf
#nano /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
download_enable=yes
guest_enable=NO
write_enable=yes
#If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot()
chroot_local_user=no
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Erstellen Sie als nächstes Ihre Chroot-Liste, um zu verhindern, dass Benutzer außerhalb ihres Home-Verzeichnisses surfen
#nano /etc/vsftpd.chroot_list
someusernamehere
SSH
Da dieser Benutzer nun ein echtes Konto auf dem System hat (Festplattenkontingente funktionieren bei virtuellen Benutzern nicht), sollten Sie SSH aktualisieren, wenn es ausgeführt wird. Fügen Sie in der unteren Zeile Folgendes hinzu und stellen Sie sicher, dass der obige Benutzer nicht aufgeführt ist (d. h. listen Sie nur Benutzer auf, die per SSH auf den Server zugreifen sollen):
#nano /etc/ssh/sshd_config
AllowUsers username1 username2
Einhängepunkte vorbereiten
Will wird jetzt Kontingente installieren und aktivieren
Hier wird gezeigt, wie dies pro Benutzer und pro Gruppe durchgeführt wird. Übrigens ist die Kontingentunterstützung aktiviert, wenn die Dateisysteme gemountet werden. Sie müssen Ihren Server also neu starten, wenn Sie die folgenden Schritte ausführen. Führen Sie dies bitte nicht auf einem Remotecomputer aus, es sei denn, Sie wissen genau, was Sie tun.
Führen Sie Folgendes als Root aus oder verwenden Sie sudo:
#nano /etc/fstab
Sie müssen Folgendes in Ihrer fstab-Datei haben (usrquota oder grpquota). Hier sind einige Beispiele, je nachdem, wie Sie Ihren Ubuntu-Server installiert haben:
/dev/hda1 /home ext2 defaults,usrquota 1 1
oder
# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home ext4 defaults,usrquota 0 2
oder
# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home ext4 defaults,usrquota,grpquota 0 2
Sie können die Bereitstellung durch einen Neustart oder mithilfe des folgenden Beispiels erneut durchführen:
#mount -o remount,usrquota /home
Überprüfen Sie Ihre Halterungen:
#mount | grep quota
Laden Sie das Quota-Kernelmodul:
#modprobe quota_v2 echo 'quota_v2' >> /etc/modules
Einrichten Ihrer Kontingente
Installieren Sie das Quota-Paket.
#apt-get install quota quotatool
Erstellen Sie die folgenden Dateien, falls sie noch nicht vorhanden sind. In diesen Dateien werden Ihre Kontingentgrenzen gespeichert:
#touch /home/aquota.user
#touch /home/aquota.group
#chmod 600 /home/aquota.user /home/aquota.group
quatacheck ohne Neustart einschalten:
# quotacheck -vagum
Wenn Ihr Kernel Journaling Quota unterstützt, Sie diese aber nicht verwenden, wird wahrscheinlich eine Fehlermeldung angezeigt. Verwenden Sie in diesem Fall diesen Befehl:
# quotacheck -fvagum
Legen Sie Grenzwerte für Benutzer fest:
#quotatool -u someusername -bq 100M -l '200 Mb' /home
Der erste Wert ist ein weiches Limit, der zweite ein hartes Limit. Beachten Sie: Wenn ein Benutzer versucht, eine 100 MB große Textdatei zu laden und sein weiches Limit bereits um 20 MB überschritten hat, wird seine Textdatei um 20 MB gekürzt, um unter dem harten Limit von 200 MB zu bleiben.
Kontingente prüfen:
#repquota /home
Wenn Sie jemals ein Kontingent für einen Benutzer entfernen möchten, setzen Sie einfach dessen harte und weiche Grenzen auf „0“.
Ich weiß, das ist viel, aber das sollte reichen! Ich habe den Vorgang vor der Veröffentlichung noch einmal von vorne begonnen, nur um sicherzugehen.
Antwort2
Patrick hat eine gute Anleitung gemacht. Ich würde zwei Dinge hinzufügen.
- quotatool ist nicht obligatorisch
- Wenn Sie keine eigene physische Partition für Ihre FTP-Ordner haben, können Sie Loop-Dateien verwenden. Ich habe das gemacht und es funktioniert wirklich gut
mkdir /usr/loop_device
Erstellen Sie eine 50MB Datei
dd if = /dev /zero of = /usr/loop_device/ld1 bs = 1024 count = 50000
Erstellen Sie darauf ein Dateisystem
mkfs.ext4 /usr/loop_device/ld1
Erstellen Sie ein Verzeichnis für den FTP-Benutzer
mkdir /home_ftp
Montieren Sie das Loopdevice
fügen Sie den folgenden Eintrag zur /etc/fstab hinzu
/usr/loop_device/ld1 /home_ftp/ ext4 rw,loop,usrquota,grpquota 0 0
Ich habe es hier mit Screenshots aufgeschrieben:
Antwort3
Kontingente funktionieren nur mit Systembenutzern. Sie müssen vsftp also so konfigurieren, dass Systembenutzer verwendet werden. Virtuelle Benutzer können nicht verwendet werden.
Bearbeiten:
Hier ist eine schnelle und einfache Konfiguration, die funktioniert:
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
download_enable=yes
anon_mkdir_write_enable=yes
guest_enable=NO
anon_world_readable_only=no
anon_upload_enable=yes
write_enable=yes
chroot_local_user=no
anon_other_write_enable=yes
Verwenden Sie dann „quotacheck“, um Kontingente einzurichten. Vergessen Sie nicht, die Option „userquota“ zu Ihrer fstab hinzuzufügen.