Hosting Anleitung · 13 min read · Nov 24, 2025

Virtuelles Hosting Mit PureFTPd Und MySQL (Incl. Quota Und Bandbreitenmanagement) Auf OpenSUSE 13.2

Virtuelles Hosting Mit PureFTPd Und MySQL (Incl. Quota Und Bandbreitenmanagement) Auf OpenSUSE 13.2

Version 1.0
Autor: Srijan Kishore
Folge howtoforge auf Twitter
Zuletzt bearbeitet am 19. Nov. 2014

Dieses Dokument beschreibt, wie man einen PureFTPd-Server installiert, der virtuelle Benutzer aus einer MySQL-Datenbank anstelle von echten Systembenutzern verwendet. Dies ist viel leistungsfähiger und ermöglicht es, Tausende von FTP-Benutzern auf einer einzelnen Maschine zu haben. Darüber hinaus werde ich die Verwendung von Quoten und Upload-/Download-Bandbreitenlimits mit diesem Setup zeigen. Passwörter werden verschlüsselt als MD5-Strings in der Datenbank gespeichert.

Für die Verwaltung der MySQL-Datenbank können Sie webbasierte Tools wie phpMyAdmin verwenden, das ebenfalls in diesem Howto installiert wird. phpMyAdmin ist eine komfortable grafische Schnittstelle, was bedeutet, dass Sie sich nicht mit der Befehlszeile herumschlagen müssen.

Dieses Dokument kommt ohne jegliche Gewährleistung! Ich möchte sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle.

1 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls ersetzen. Sie müssen eine grundlegende Open Suse-Installation haben, bevor Sie mit dem beschriebenen Vorgehen in diesem Tutorial fortfahren.

2 Installieren Sie MariaDB, Apache2 und phpMyAdmin

MariaDB, Apache und die von phpMyAdmin benötigten PHP-Module können wie folgt installiert werden:

zypper install mariadb mariadb-client apache2 apache2-mod_php5 php5-mysql php5-mcrypt php5-mbstring php5-gd
server1:~ # zypper install mariadb mariadb-client apache2 apache2-mod_php5 php5-mysql php5-mcrypt php5-mbstring php5-gd  
Lade Repository-Daten...  
Lese installierte Pakete...  
Löse Paketabhängigkeiten auf...
  
Problem: php5-mysql-5.6.1-4.1.x86_64 benötigt php5 = 5.6.1, kann aber nicht bereitgestellt werden  
  nicht installierbare Anbieter: php5-5.6.1-1.1.x86_64[openSUSE-13.2-0]  
                   php5-5.6.1-1.1.i586[repo-oss]  
                   php5-5.6.1-1.1.x86_64[repo-oss]  
                   php5-5.6.1-4.1.i586[repo-update]  
                   php5-5.6.1-4.1.x86_64[repo-update]  
 Lösung 1: Folgende Aktionen werden durchgeführt:  
  installiere php5-mysql-5.6.1-4.1.x86_64 nicht  
  installiere php5-mcrypt-5.6.1-4.1.x86_64 nicht  
  installiere php5-gd-5.6.1-4.1.x86_64 nicht  
 Lösung 2: Folgende Aktionen werden durchgeführt:  
  installiere php5-mcrypt-5.6.1-4.1.x86_64 nicht  
  installiere apache2-mod_php5-5.6.1-4.1.x86_64 nicht  
  installiere php5-gd-5.6.1-4.1.x86_64 nicht  
  installiere php5-mbstring-5.6.1-4.1.x86_64 nicht  
  installiere php5-mysql-5.6.1-4.1.x86_64 nicht  
 Lösung 3: Folgende Aktionen werden durchgeführt:  
  installiere php5-mcrypt-5.6.1-4.1.x86_64 nicht  
  installiere apache2-mod_php5-5.6.1-4.1.x86_64 nicht  
  installiere php5-gd-5.6.1-4.1.x86_64 nicht  
  installiere php5-mbstring-5.6.1-4.1.x86_64 nicht  
 Lösung 4: Folgende Aktionen werden durchgeführt:  
  installiere php5-mcrypt-5.6.1-4.1.x86_64 nicht  
  installiere apache2-mod_php5-5.6.1-4.1.x86_64 nicht  
  installiere php5-gd-5.6.1-4.1.x86_64 nicht  
  installiere php5-mbstring-5.6.1-4.1.x86_64 nicht  
 Lösung 5: Folgende Aktionen werden durchgeführt:  
  installiere php5-mcrypt-5.6.1-4.1.x86_64 nicht  
  installiere apache2-mod_php5-5.6.1-4.1.x86_64 nicht  
  installiere php5-gd-5.6.1-4.1.x86_64 nicht  
  installiere php5-mbstring-5.6.1-4.1.x86_64 nicht  
 Lösung 6: Folgende Aktionen werden durchgeführt:  
  installiere php5-mcrypt-5.6.1-4.1.x86_64 nicht  
  installiere apache2-mod_php5-5.6.1-4.1.x86_64 nicht  
  installiere php5-gd-5.6.1-4.1.x86_64 nicht  
  installiere php5-mbstring-5.6.1-4.1.x86_64 nicht  
 Lösung 7: Deinstallation von patterns-openSUSE-minimal_base-conflicts-20141007-2.1.x86_64  
 Lösung 8: breche php5-mysql-5.6.1-4.1.x86_64, indem einige seiner Abhängigkeiten ignoriert werden  

Wählen Sie aus den obigen Lösungen eine Nummer oder brechen Sie ab [1/2/3/4/5/6/7/8/c] (c): <--7

Dann erstellen wir die Systemstartlinks für MySQL (damit MySQL automatisch startet, wenn das System bootet) und starten den MySQL-Server:

systemctl enable mysql.service  
systemctl start mysql.service

Um die MySQL-Installation zu sichern, führen Sie aus:

mysql_secure_installation
server1:~ # mysql_secure_installation  
/usr/bin/mysql_secure_installation: Zeile 379: find_mysql_client: Befehl nicht gefunden  
  
HINWEIS: ES WIRD EMPFOHLEN, ALLE TEILE DIESES SKRIPTS FÜR ALLE MariaDB  
      SERVER IM PRODUKTIONSEINSATZ AUSZUFÜHREN!  BITTE JEDEN SCHRITT SORGFÄLTIG LESEN!  
  
Um sich bei MariaDB anzumelden, um es zu sichern, benötigen wir das aktuelle  
Passwort für den Root-Benutzer.  Wenn Sie MariaDB gerade installiert haben und  
Sie das Root-Passwort noch nicht festgelegt haben, ist das Passwort leer,  
also sollten Sie hier einfach die Eingabetaste drücken.  
  
Geben Sie das aktuelle Passwort für root ein (drücken Sie die Eingabetaste für keines):   
OK, Passwort erfolgreich verwendet, weiter...  
  
Das Festlegen des Root-Passworts stellt sicher, dass niemand ohne die richtige  
Autorisierung auf den MariaDB-Root-Benutzer zugreifen kann.  
  
Root-Passwort festlegen? [Y/n] <--ENTER  
Neues Passwort: <--mariadbpassword  
Neues Passwort erneut eingeben: <--mariadbpassword  
Passwort erfolgreich aktualisiert!  
Aktualisiere Berechtigungstabellen..  
 ... Erfolg!  
  
  
Standardmäßig hat eine MariaDB-Installation einen anonymen Benutzer, der es jedem  
ermöglicht, sich bei MariaDB anzumelden, ohne dass ein Benutzerkonto für  
ihn erstellt werden muss.  Dies ist nur für Testzwecke gedacht und soll  
die Installation etwas reibungsloser gestalten.  Sie sollten sie entfernen,  
bevor Sie in eine Produktionsumgebung wechseln.  
  
Anonyme Benutzer entfernen? [Y/n] <--ENTER  
 ... Erfolg!  
  
Normalerweise sollte root nur von 'localhost' aus verbinden dürfen.  Dies  
sichert, dass niemand das Root-Passwort über das Netzwerk erraten kann.  
  
Root-Login aus der Ferne verbieten? [Y/n] <--ENTER  
 ... Erfolg!  
  
Standardmäßig kommt MariaDB mit einer Datenbank namens 'test', auf die jeder  
zugreifen kann.  Dies ist ebenfalls nur für Testzwecke gedacht und sollte  
entfernt werden, bevor Sie in eine Produktionsumgebung wechseln.  
  
Testdatenbank und Zugriff darauf entfernen? [Y/n] <--ENTER  
 - Testdatenbank wird gelöscht...  
 ... Erfolg!  
 - Berechtigungen für die Testdatenbank werden entfernt...  
 ... Erfolg!  
  
Das Neuladen der Berechtigungstabellen stellt sicher, dass alle bisher  
getätigten Änderungen sofort wirksam werden.  
  
Berechtigungstabellen jetzt neu laden? [Y/n] <--ENTER  
 ... Erfolg!  
  
Aufräumen...  
  
Alles erledigt!  Wenn Sie alle oben genannten Schritte abgeschlossen haben, sollte Ihre  
MariaDB-Installation jetzt sicher sein.  
  
Danke, dass Sie MariaDB verwenden!  
server1:~ #

Jetzt sollte Ihre MySQL-Installation gesichert sein.

Dann erstellen wir die Systemstartlinks für Apache (damit es automatisch startet, wenn das System bootet) und starten es:

systemctl enable apache2.service  
systemctl start apache2.service

phpMyAdmin kann wie folgt installiert werden:

zypper install phpmyadmin

Um sicherzustellen, dass wir auf phpMyAdmin zugreifen können, bearbeiten Sie die Datei wie folgt:

vi /etc/apache2/conf.d/phpMyAdmin.conf

Fügen Sie den Alias wie folgt hinzu:

Alias /phpMyAdmin /srv/www/htdocs/phpMyAdmin
Alias /phpmyadmin /srv/www/htdocs/phpMyAdmin
[...]

Bevor wir Apache starten, müssen wir den Link folgen und Änderungen in httpd.conf vornehmen.

vi /etc/apache2/httpd.conf

Hinweis: Wenn die Dateiwerten unterschiedlich sind, ändern Sie den Wert wie folgt:

Kommentieren Sie diese Zeilen aus und fügen Sie diese Zeilen hinzu:

#  
#    Options None  
#    AllowOverride None  
#    Order deny,allow  
#   Deny from all  
#  
  
  
Options None  
AllowOverride None  
Require all denied  

Als nächstes müssen wir die Konfigurationsdatei für phpmyadmin erstellen:

cd /srv/www/htdocs/phpMyAdmin  
cp config.sample.inc.php config.inc.php

In der Konfigurationsdatei sehen Sie, dass phpmyadmin eine Datenbank namens “phpmyadmin” erwartet, die die pma-Tabellen enthält:

[...]  
$cfg['Servers'][$i]['pmadb']               = 'phpmyadmin';  
[...]  

Also erstellen wir eine:

echo "create database phpmyadmin;" | mysql -u root -p 'mariadbpassword'

und laden die Tabellen aus den phpmyadmin-Dokumenten.

mysql -u root -p 'mariadbpassword' < /usr/share/doc/packages/phpMyAdmin/examples/create_tables.sql

Jetzt starten Sie den Apache-Dienst

systemctl enable apache2.service  
systemctl restart apache2.service

Jetzt können wir auf phpmyadmin unter http://192.168.0.100/phpmyadmin oder http://server1.example.com zugreifen

3 Installieren Sie PureFTPd Mit MySQL-Unterstützung

Das PureFTPd-Paket von OpenSUSE unterstützt verschiedene Backends wie MySQL, PostgreSQL, LDAP usw. Daher müssen wir nur das normale PureFTPd-Paket installieren:

 zypper install pure-ftpd

Dann erstellen wir eine FTP-Gruppe (ftpgroup) und einen Benutzer (ftpuser), auf die alle unsere virtuellen Benutzer abgebildet werden. Ersetzen Sie die Gruppen- und Benutzer-ID 2001 durch eine Nummer, die auf Ihrem System frei ist:

groupadd -g 2001 ftpgroup  
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

4 Erstellen Sie die MySQL-Datenbank für PureFTPd

Jetzt erstellen wir eine Datenbank namens pureftpd und einen MySQL-Benutzer namens pureftpd, den der PureFTPd-Daemon später verwenden wird, um sich mit der pureftpd-Datenbank zu verbinden:

mysql -u root -p
CREATE DATABASE pureftpd;  
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';  
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';  
FLUSH PRIVILEGES;

Ersetzen Sie den String ftpdpass durch das Passwort, das Sie für den MySQL-Benutzer pureftpd verwenden möchten. Immer noch in der MySQL-Shell erstellen wir die Datenbanktabelle, die wir benötigen (ja, es gibt nur eine Tabelle!):

USE pureftpd;
CREATE TABLE `ftpd` (  
User varchar(16) NOT NULL default '',  
status enum('0','1') NOT NULL default '0',  
Password varchar(64) NOT NULL default '',  
Uid varchar(11) NOT NULL default '-1',  
Gid varchar(11) NOT NULL default '-1',  
Dir varchar(128) NOT NULL default '',  
ULBandwidth smallint(5) NOT NULL default '0',  
DLBandwidth smallint(5) NOT NULL default '0',  
comment tinytext NOT NULL,  
ipaccess varchar(15) NOT NULL default '*',  
QuotaSize smallint(5) NOT NULL default '0',  
QuotaFiles int(11) NOT NULL default 0,  
PRIMARY KEY (User),  
UNIQUE KEY User (User)  
)  ENGINE=MyISAM;
quit;

Sie können jetzt phpMyAdmin unter http://server1.example.com/phpMyAdmin/ (Sie können auch die IP-Adresse anstelle von server1.example.com verwenden) in einem Browser aufrufen und sich als Benutzer pureftpd anmelden. Dann können Sie sich die Datenbank ansehen. Später können Sie phpMyAdmin verwenden, um Ihren PureFTPd-Server zu verwalten.

5 Konfigurieren Sie PureFTPd

Bearbeiten Sie /etc/pure-ftpd/pure-ftpd.conf und stellen Sie sicher, dass die Zeilen ChrootEveryone, AnonymousOnly, MySQLConfigFile und CreateHomeDir aktiviert sind und so aussehen:

vi /etc/pure-ftpd/pure-ftpd.conf
[...]  
ChrootEveryone              yes  
[...]  
AnonymousOnly               no  
[...]  
MySQLConfigFile              /etc/pure-ftpd/pureftpd-mysql.conf  
[...]  
CreateHomeDir               yes  
[...]  

Die Einstellung ChrootEveryone sorgt dafür, dass PureFTPd jeden virtuellen Benutzer in sein Heimatverzeichnis chrootet, sodass er nicht in Verzeichnisse und Dateien außerhalb seines Heimatverzeichnisses browsen kann. Die Zeile CreateHomeDir sorgt dafür, dass PureFTPd das Heimatverzeichnis eines Benutzers erstellt, wenn der Benutzer sich anmeldet und das Heimatverzeichnis noch nicht existiert. AnonymousOnly muss auf nein gesetzt werden, da sonst nur anonyme FTP-Sitzungen erlaubt sind.

Dann erstellen wir /edit /etc/pure-ftpd/pureftpd-mysql.conf. Es sollte so aussehen:

vi /etc/pure-ftpd/pureftpd-mysql.conf
MYSQLSocket      /var/run/mysql/mysql.sock  
#MYSQLServer     localhost  
#MYSQLPort       3306  
MYSQLUser       pureftpd  
MYSQLPassword   ftpdpass  
MYSQLDatabase   pureftpd  
#MYSQLCrypt md5, cleartext, crypt() oder password() - md5 ist SEHR EMPFEHLENSWERT gegenüber Klartext  
MYSQLCrypt      md5  
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")  
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")  
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")  
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")  
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")  
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")  
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")  
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

Stellen Sie sicher, dass Sie den String ftpdpass durch das tatsächliche Passwort für den MySQL-Benutzer pureftpd in der Zeile MYSQLPassword ersetzen! Bitte beachten Sie, dass wir md5 als MYSQLCrypt-Methode verwenden, was bedeutet, dass wir die Passwörter der Benutzer als MD5-String in der Datenbank speichern, was viel sicherer ist als die Verwendung von Klartext-Passwörtern!

Jetzt erstellen wir die Systemstartlinks für PureFTPd und starten es:

systemctl enable pure-ftpd  
systemctl start pure-ftpd

6 Füllen Sie die Datenbank und testen Sie

Um die Datenbank zu füllen, können Sie die MySQL-Shell verwenden:

mysql -u root -p
USE pureftpd;

Jetzt erstellen wir den Benutzer exampleuser mit dem Status 1 (was bedeutet, dass sein FTP-Konto aktiv ist), das Passwort secret (das verschlüsselt mit der MD5-Funktion von MySQL gespeichert wird), die UID und GID 2001 (verwenden Sie die Benutzer-ID und Gruppen-ID des Benutzers/der Gruppe, die Sie am Ende von Schritt zwei erstellt haben!), das Heimatverzeichnis /home/www.example.com, eine Upload- und Download-Bandbreite von 100 KB/s (Kilobyte pro Sekunde) und eine Quote von 50 MB:

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');
quit;

Jetzt öffnen Sie Ihr FTP-Client-Programm auf Ihrer Arbeitsstation (etwas wie WS_FTP oder SmartFTP, wenn Sie ein Windows-System verwenden, oder gFTP auf einem Linux-Desktop) und versuchen Sie, eine Verbindung herzustellen. Als Hostnamen verwenden Sie server1.example.com (oder die IP-Adresse des Systems), der Benutzername ist exampleuser und das Passwort ist secret.

Wenn Sie sich verbinden können - herzlichen Glückwunsch! Wenn nicht, ist etwas schiefgelaufen.

Jetzt, wenn Sie ausführen

ls -l /home/
server1:~ # ls -l /home/  
total 0  
drwxr-xr-x 1 administrator users    128 Nov  7 14:30 administrator  
drwxr-xr-x 1 ftpuser       ftpgroup  18 Nov 19 14:32 www.example.com  
server1:~ #

sollten Sie sehen, dass das Verzeichnis /home/www.example.com (das Heimatverzeichnis von exampleuser) automatisch erstellt wurde und es dem ftpuser und ftpgroup gehört (dem Benutzer/der Gruppe, die wir am Ende von Schritt zwei erstellt haben):

7 Datenbankverwaltung

Für die meisten Menschen ist es einfacher, wenn sie eine grafische Benutzeroberfläche für MySQL haben; daher können Sie auch phpMyAdmin (in diesem Beispiel unter http://server1.example.com/phpMyAdmin/ oder http://192.168.0.100/phpMyAdmin/) verwenden, um die pureftpd-Datenbank zu verwalten.

Wann immer Sie einen neuen Benutzer erstellen möchten, müssen Sie einen Eintrag in der Tabelle ftpd erstellen, daher werde ich hier die Spalten dieser Tabelle erklären:

ftpd-Tabelle:

  • User: Der Name des virtuellen PureFTPd-Benutzers (z.B. exampleuser).

  • status: 0 oder 1. 0 bedeutet, dass das Konto deaktiviert ist, der Benutzer kann sich nicht anmelden.

  • Password: Das Passwort des virtuellen Benutzers. Stellen Sie sicher, dass Sie die MD5-Funktion von MySQL verwenden, um das Passwort verschlüsselt als MD5-String zu speichern:


  • UID: Die Benutzer-ID des FTP-Benutzers, den Sie am Ende von Schritt zwei erstellt haben (z.B. 2001).

  • GID: Die Gruppen-ID der FTP-Gruppe, die Sie am Ende von Schritt zwei erstellt haben (z.B. 2001).

  • Dir: Das Heimatverzeichnis des virtuellen PureFTPd-Benutzers (z.B. /home/www.example.com). Wenn es nicht existiert, wird es erstellt, wenn der neue Benutzer sich das erste Mal über FTP anmeldet. Der virtuelle Benutzer wird in dieses Heimatverzeichnis eingesperrt, d.h. er kann nicht auf andere Verzeichnisse außerhalb seines Heimatverzeichnisses zugreifen.

  • ULBandwidth: Upload-Bandbreite des virtuellen Benutzers in KB/s (Kilobyte pro Sekunde). 0 bedeutet unbegrenzt.

  • DLBandwidth: Download-Bandbreite des virtuellen Benutzers in KB/s (Kilobyte pro Sekunde). 0 bedeutet unbegrenzt.

  • comment: Hier können Sie einen Kommentar eingeben (z.B. für Ihre interne Verwaltung). Normalerweise lassen Sie dieses Feld leer.

  • ipaccess: Geben Sie hier IP-Adressen ein, die sich mit diesem FTP-Konto verbinden dürfen. * bedeutet, dass jede IP-Adresse sich verbinden darf.

  • QuotaSize: Speicherplatz in MB (nicht KB, wie bei ULBandwidth und DLBandwidth!), den der virtuelle Benutzer auf dem FTP-Server verwenden darf. 0 bedeutet unbegrenzt.

  • QuotaFiles: Anzahl der Dateien, die der virtuelle Benutzer auf dem FTP-Server speichern darf. 0 bedeutet unbegrenzt.

8 Anonymer FTP

Wenn Sie ein anonymes FTP-Konto erstellen möchten (ein FTP-Konto, auf das jeder ohne Passwort zugreifen kann), benötigen Sie einen Benutzer und eine Gruppe namens ftp. Beide wurden automatisch erstellt, als Sie das pure-ftpd-Paket installiert haben, sodass Sie sie nicht manuell erstellen müssen. Das Heimatverzeichnis von ftp ist jedoch standardmäßig /srv/ftp, aber ich möchte das anonyme FTP-Verzeichnis in /home/ftp erstellen (die normalen Benutzer-FTP-Verzeichnisse befinden sich ebenfalls in /home, z.B. /home/www.example.com). Aber natürlich können Sie das Verzeichnis /srv/ftp für anonymes FTP verwenden, wenn Sie es bevorzugen.

Wenn Sie /home/ftp verwenden möchten, öffnen Sie /etc/passwd und ändern Sie das Heimatverzeichnis des FTP-Benutzers von /srv/ftp auf /home/ftp (tun Sie dies nicht, wenn Sie /srv/ftp verwenden möchten):

vi /etc/passwd
[...]  
#ftp:x:40:49:FTP account:/srv/ftp:/bin/bash  
ftp:x:40:49:FTP account:/home/ftp:/bin/bash  
[...]  

Dann verschieben Sie /srv/ftp nach /home (tun Sie dies nicht, wenn Sie /srv/ftp verwenden möchten):

mv /srv/ftp /home

Dann erstellen wir das Verzeichnis /home/ftp/incoming, das es anonymen Benutzern ermöglicht, Dateien hochzuladen. Wir geben dem Verzeichnis /home/ftp/incoming Berechtigungen von 311, sodass Benutzer hochladen können, aber keine Dateien in diesem Verzeichnis sehen oder herunterladen können. Das Verzeichnis /home/ftp erhält Berechtigungen von 555, die das Sehen und Herunterladen von Dateien erlauben:

chown ftp:nobody /home/ftp  
cd /home/ftp  
mkdir incoming  
chown ftp:nobody incoming/  
chmod 311 incoming/  
cd ../  
chmod 555 ftp/

(Wenn Sie /srv/ftp stattdessen verwenden möchten, ersetzen Sie /home/ftp durch /srv/ftp in den obigen Befehlen.)

Anonyme Benutzer können sich anmelden und dürfen Dateien aus /home/ftp herunterladen, aber Uploads sind auf /home/ftp/incoming beschränkt (und sobald eine Datei in /home/ftp/incoming hochgeladen wird, kann sie von dort nicht gelesen oder heruntergeladen werden; der Serveradministrator muss sie zuerst in /home/ftp verschieben, um sie anderen zur Verfügung zu stellen).

Jetzt müssen wir PureFTPd für anonymes FTP konfigurieren. Öffnen Sie /etc/pure-ftpd/pure-ftpd.conf und stellen Sie sicher, dass Sie die folgenden Einstellungen darin haben:

vi /etc/pure-ftpd/pure-ftpd.conf
[...]  
NoAnonymous                 no

[...]  
AnonymousBandwidth            8  
[...]  
AnonymousCantUpload         no  
[...]  

(Die Einstellung AnonymousBandwidth ist optional - sie ermöglicht es Ihnen, Upload- und Download-Bandbreiten für anonyme Benutzer zu begrenzen. 8 bedeutet 8 KB/s. Verwenden Sie jeden Wert, den Sie möchten, oder kommentieren Sie die Zeile aus, wenn Sie keine Bandbreitenbegrenzungen wünschen.)

Schließlich starten wir PureFTPd neu:

systemctl restart pure-ftpd.service

9 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.