auf Facebook teilen auf Google+ teilen auf LinkedIn teilen auf Pinterest teilen twittern
Werbehinweise
» Startseite » Software » Linux » Pure-FTPd » Virtuelle User 

Pure-FTPd

Virtuelle User

Pure-FTPd unterstützt virtual users. Wem das kein Begriff sein sollte, hier in einem Satz: Virtuelle User sind User, die nur dem Programm bekannt sind und nicht real auf dem System existieren.

Dies ist aus sicherheitstechnischen Gründen – und wegen der Verwaltung – sehr praktisch.

Da die virtuellen User kein »richtiges« Benutzerkonto auf dem Rechner haben, können sie sich auch nicht via Telnet oder SSH am Rechner anmelden. Somit schließt man eine nicht notwendige Sicherheitslücke und vereinfacht das Usermanagement auf einen Schlag – auch wenn es zunächst anders aussehen mag.

Zunächst muß ein »echter« Benutzer angelegt werden. In der Datei README.Virtual-Users ist bereits eine Anleitung enthalten, ich habe sie etwas abgewandelt. Daher entspricht meine Variante nicht dem Vorschlag aus der eben erwähnten Datei.

Der neue Benutzer wird mit

 useradd -u 7777 -g 65534 -d /dev/null -s /etc ftpuser 

angelegt. Die uid »7777« ist bei mir im System noch nicht belegt gewesen, daher habe ich sie für den neuen Benutzer ftpuser gewählt. Die verwendete gid »65534« entspricht nogroup.

Da diese Gruppe bereits existiert, konnte ich das in der Readme-Datei angegebene Anlegen einer neuen Gruppe umgehen.

Anschließend können die virtuellen Benutzerkonten mit dem Befehl pure-pw verwaltet werden. Eine Auswahl der zur Verfügung stehenden Optionen:

 pure-pw useradd userdel usermod passwd show mkdb 

Nun kann ein virtueller Benutzer hinzugefügt werden:

 pure-pw useradd joe -u ftpuser -g nogroup -d /home/ftp/joe 

Mit diesem Aufruf wird ein virtueller Benutzer »joe« angelegt, welcher die Systemuser-ID »ftpuser« verwendet und der Systemgruppe »nogroup« angehört. Nach der Eingabe des Befehls wird nach einem Passwort für den Benutzer gefragt.

Sein Home-Verzeichnis /home/ftp/joe wird noch nicht erstellt. Dies kann man mit dem Startparameter -j vom Pure-FTPd erledigen lassen. Sobald sich der Benutzer das erste mal anmeldet, wir das Verzeichnis erstellt. Der »echte« Benutzer ftpuser und die Gruppe nogroup werden dabei als Benutzer und Gruppe dem neu angelegten Verzeichnis zugeordnet.

Noch kann sich der Benutzer aber nicht anmelden, da er nur angelegt, aber noch nicht initialisiert worden ist. Dies bedeutet im Klartext: Es wurde zwar ein Eintrag in der Datei /etc/Pure-FTPd.passwd erstellt, auf diesen greift aber der Pure-FTPd nicht zu. Es muß erst eine Database im Binärformat erstellt werden:

 pure-pw mkdb 

Die Datei /etc/pureftpd.passwd wird in die Datei /etc/pureftpd.pdb »übersetzt«. Jetzt muß der Pure-FTPd allerdings noch per Startparameter die Information erhalten, dass er auch darauf zugreifen soll. Hier ein Beispiel für die Startparameter für den Pure-FTPd, damit virtuelle User unterstützt, und deren Verzeichnisse beim ersten Login angelegt werden:

 pure-ftpd -j -l puredb:/etc/pureftpd.pdb 

Natürlich muß der bisher laufende Pure-FTPd neu gestartet werden (beim standalone-Modus), oder der inetd neu gestartet werden (kill -i <pid>), damit die Änderungen in der /etc/inetd.conf übernommen werden.

Sollte danach die folgende Fehlermeldung erscheinen...

 421 Unknown authentication method: puredb:/etc/pureftpd.pdb 

...wurde Pure-FTPd ohne Unterstützung für alternative Authentifizierungsmöglichkeiten kompiliert. Mit der Option --with-everything sollte sie auf alle Fälle unterstützt werden.

Sollte dies bereits geschehen sein und dennoch diese Fehlermeldung erscheinen, so könnte beim Aufruf des Servers oder aber beim anlegen der pureftpd.pdb ein kleiner Buchstabendreher die Ursache des Problems sein.

Benutzereinstellungen anpassen

Vorneweg ein paar wichtige Informationen: Nach einer Änderung der Daten eines Benutzers oder nach dem Anlegen eines neuen Benutzers muß erneut pure-pw mkdb aufgerufen werden. Die Änderungen/das Anlegen wird nicht sofort in die Datenbank übernommen sondern in einer anderen Datei zwischengespeichert. Erst nach dem Aufruf wird die neue Datenbank erstellt.

Ein Neustart des Servers ist nicht notwendig, da die Datenbank bei jedem Aufruf abgefragt wird. Es wird schließlich nur der Inhalt der Datenbank verändert, nicht ein Startparameter des Servers.

Sollte der Server vom inetd aus gestartet werden wird er so oder so bei einer neuen Verbindung neu gestartet. So. Nun aber zum eigentlichen Thema, dem anpassen von Benutzereinstellungen.

Man kann für jeden virtuellen Benutzer diverse Einstellungen bzw. Beschränkungen einrichten. Die bereits zugeteilten Einstellungen kann man sich mit dem folgenden Befehl anzeigen lassen:

 pure-pw show joe 

Die Ausgabe sieht so (oder so ähnlich) aus:

 Login : joe Password : CONTENT$fALoMD40$Wf.UzMQkvyNeYHHGdQjrp1 UID : 7777 (ftpuser) GID : 65534 (nogroup) Directory : /home/ftp/joe/./ Full name : Download bandwidth : 0 Kb (unlimited) Upload bandwidth : 0 Kb (unlimited) Max files : 0 (unlimited) Max size : 0 Mb (unlimited) Ratio : 0:0 (unlimited:unlimited) Allowed local IPs : Denied local IPs : Allowed client IPs : Denied client IPs : Time restrictions : 0000-0000 (unlimited) Max sim sessions : 0 (unlimited) 

Wie man sehen kann gibt es eine Anzahl von Möglichkeiten, die Benutzer individuell einzurichten. Insbesondere die Ratio-Einstellungen und natürlich auch die Bandbreiten-Kontrolle wären auf LANs interessant. Für den Hosting-Einsatz ist die Beschränkung des Speicherplatzes sehr wichtig. Hierzu gleich ein einfaches Beispiel: Der Speicherplatz des Benutzers joe soll auf 100 MB beschränkt werden:

 pure-pw usermod joe -N 100 

Anschließend wieder mit pure-pw show joe kontrollieren, ob die Änderung wie gewünscht übernommen worden ist:

 Login : joe Password : CONTENT$fALoMD40$Wf.UzMQkvyNeYHHGdQjrp1 UID : 7777 (ftpuser) GID : 65534 (nogroup) Directory : /home/ftp/joe/./ Full name : Download bandwidth : 0 Kb (unlimited) Upload bandwidth : 0 Kb (unlimited) Max files : 0 (unlimited) Max size : 100 Mb (enabled) Ratio : 0:0 (unlimited:unlimited) Allowed local IPs : Denied local IPs : Allowed client IPs : Denied client IPs : Time restrictions : 0000-0000 (unlimited) Max sim sessions : 0 (unlimited) 

Wie man jetzt sehen kann, hat sich die Angabe von (unlimited) in (enabled) geändert worden. Weiterhin sind die 100 MB als Grenze eingetragen worden.

Die übrigen Einstellungen wie beispielsweise Quotas und die Beschränkungen des Zugriffs von bzw. auf bestimmte IPs werden auf die gleiche Art und Weise dem Benutzer zugeordnet.

Mir mißfällt zwar die Übersetzung »Heimatverzeichnis« für »home directory«, aber diese wird nunmal oft verwendet und ist somit eindeutig. Dafür habe ich es bei »Ratio« belassen und nicht in »Verhältnis« übersetzt.

Hier nun der aus der Hilfe zu pure-pw übernommene Teil mit den Optionen vom Aufruf pure-pw usermod:

 pure-pw usermod <Benutzername> -f <Passwortdatei> -u <uid> [-g <gid>] -D/-d <Heimatverzeichnis> -[c <gecos>] [-t <Download Bandbreite>] [-T <Upload bandbreite>] [-n <maximale Anzahl der Dateien>] [-N <max Mbyte>] [-q <Upload Ratio>] [-Q <Download Ratio>] [-r <erlaube Client-IP>/<mask>] [-R <verbiete Client-IP>/<mask>] [-i <erlaube lokale IP>/<mask>] [-I <verbiete lokale IP>/<mask>] [-y <maximale Anzahl von gleichzeitigen Sitzungen>] [-z <hhmm>-<hhmm>] [-m] 

Noch ein paar Hinweise zu den Schaltern:

-d <heimatverzeichnis> : chroot Benutzer (empfohlen)
-D <heimatverzeichnis> : kein chroot des Benutzers
-y 0 : unbegrenzte Anzahl von gleichzeitigen Sitzungen
-m : anschließend die /etc/pureftpd.pdb Datenbank aktualisieren
Um einen 1:10 Ratio einzurichten, -q 1 -Q 10 angeben
Um den Zugriff ausschließlich zwischen 9 Uhr morgens und 6 Uhr abends, -z 0900-1800 angeben

Und – wie schon geschrieben – nicht vergessen mit pure-pw mkdb die Änderungen in die Datenbank zu übernehmen!

anonymous ftp

Standardmäßig ist beim Pure-FTPd ein Zugriff über einen anonymen Benutzer möglich. Sowohl über den Benutzernamen »ftp« als auch über das als Alias verwendete »anonymous« ist die Verbindung als anonymer Benutzer möglich. Allerdings müssen dafür einige Vorraussetzungen erfüllt sein.

Die Benutzer nobody, ftp und die Gruppen nogroup, ftp müssen vorhanden sein. Dies kann man überprüfen, indem man mit cat /etc/passwd | grep nobody nach dem Benutzer nobody sucht und das Gleiche mit ftp anstatt nobody wiederholt. Bei den Gruppen lautet der Aufruf cat /etc/group | grep nogroup bzw. ftp anstatt von nogroup.

Sind die Benutzer und die Gruppen angelegt, so sollte anonymes FTP mit dem Pure-FTPd möglich sein – sofern er dementsprechend gestartet worden ist.

Sollte ein Benutzer und/oder eine Gruppe fehlen, dann muss man ihn/sie anlegen. Zunächst muß ein Verzeichnis für den FTP-User angelegt werden (sofern noch nicht vorhanden): mkdir /home/ftp.

Nun den Benutzer mit Gruppe anlegen. Bei dem von mir verwendeten Debian GNU/Linux darf man ab der uid »1000« neue Benutzer definineren. Bis zur uid »999« sind sie für das System und für die Paketinstallation reserviert. Standardmäßig bekommt der Benutzer ftp bei Debian (laut mehreren Seiten im Web) die uid »101«. Bei anderen Distributionen kann sich dies unterscheiden.


 turanga:~# addgroup ftp Adding group ftp (101)... Done. 

Nun muß der Benutzer ftp angelegt werden. Er bekommt als gid die »101« von geradeeben mit, sollte sie differieren muß der Aufruf angepasst werden. Vorsicht: Damit der Aufruf nicht die Formatierung sprengt, habe ich einen Zeilenumbruch eingebaut.

 turanga:~# adduser --system --no-create-home --gecos "Ftp user" --gid 101 --disabled-password ftp Adding system user ftp... Adding new user ftp (101) with group ftp. Not creating home directory. 

Der Benutzer ftp hat die uid »101« erhalten – zumindest auf meinem System. Nun kann das Home-Verzeichnis vom Benutzer ftp per CHOWN richtig konfiguriert werden:

 chown 101:101 /home/ftp 

Zu beachten sind auch in diesem Fall natürlich die richige uid und gid. Eigentlich sollte nun anonymes FTP problemlos funktionieren. Sowohl der Benutzer ftp als auch der Benutzer anonymous lassen eine Anmeldung als anonymer Benutzer zu.

Im Zweifelsfall müssen die neu angelegten User/Gruppen dem Pure-FTPd erst »bekanntgemacht« werden. Spätestens nach einem Reboot sollte also alles wie gewünscht funktionieren.

umask

Die umask (Schalter -U) gibt an, welche Zugriffsrechte die hochgeladenen Dateien zugewiesen bekommen. Hierzu ein Beispiel: Der Besitzer der Dateien sollen rwx-Zugriffe erhalten, die Gruppe darf lediglich lesen und Others haben keine Zugriffsrechte. Etwas übersichtlicher dargestellt:

 rwx r-- -- 

Es würde beim chmod-Befehl dem Wert 740 entsprechen. Der Wert der umask wird anders gebildet. Man nimmt als »Startwert« den Wert 777 und zieht davon den »normalen« Wert des chmod-Befehls Stelle um Stelle ab. Somit ergibt »777« weniger »740« die umask 037.


 
 
Das Generieren dieser Seite dauerte genau 0.37703 Sekunden.