Virtuelles Hosting mit Proftpd und MySQL (Inkl. Quota) auf Fedora 9 - Seite 2

6 Datenbank füllen und testen

Um die Datenbank zu füllen, wird die MySQL Kommandozeile verwendet:

mysql -u root -p

USE ftp;

Als erstes erstellen wir einen Eintrag in der Tabelle ftpgroup. Es enthält den Gruppennamen, die GruppenID sowie den Benutzernamen der FTP Gruppe/Benutzers den wir am Ende des zweiten Schrittes erstellt haben (ersetze die GruppenID entsprechend wenn Du eine andere als 2001 nutzt):

INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');

Das war es schon für die Tabelle ftpgroup, es müssen hier keine weiteren Einträge erstellt werden. Immer wenn ein neuer virtueller Benutzer angelegt wird, geschieht das in der Tabelle ftpquotalimits und ftpuser. Erstellen wir unseren ersten Benutzer exampleuser mit einer Quota von 15MB und dem Passwort secret (Achtung, wir befinden uns immer noch auf der MySQLKommandozeile):

INSERT INTO `ftpquotalimits` (`name`, `quota_type`, `per_session`, `limit_type`, `bytes_in_avail`, `bytes_out_avail`, `bytes_xfer_avail`, `files_in_avail`, `files_out_avail`, `files_xfer_avail`) VALUES ('exampleuser', 'user', 'true', 'hard', 15728640, 0, 0, 0, 0, 0);

INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'exampleuser', 'secret', 2001, 2001, '/home/www.example.com', '/sbin/nologin', 0, '', '');

quit;

(Bitte versichere Dich dass Du die Gruppen- und BenutzerID 2001 im letzten INSERT Befehl entsprechend geändert hast, solltest Du andere Werte als in dieser Anleitung benutzen!)

Öffne nun auf Deinem Arbeitsplaz Dein FTP Client Programm (etwas wie WS_FTP oder SmartFTP wenn Du Dich auf einem Windows System befindest oder gFTP auf einem Linux Desktop) und versuche Dich zu verbinden. Als Hostname verwendest Du server1.example.com (oder die IP Adresse des Systems), der Benutzername ist exampleuser und das Passwort ist secret.

Wenn Du Dich verbinden kannst, dann herzlichen Glückwunsch! Wenn nicht, ist etwas schief gelaufen.

Wenn Du nun Folgendes ausführst:

ls -l /home/

...solltest Du feststellen, dass das Verzeichnis /home/www.example.com (exampleusers Home Verzeichnis) automatisch erstellt wurde und dass es dem ftpuser und der ftpgroup (der Benutzer/die Gruppe, die wir am Ende von Schritt 2 angelegt haben) gehört:

[root@server1 ~]# ls -l /home/
total 4
drwxr-xr-x 2 ftpuser ftpgroup 4096 2008-07-01 18:08 www.example.com
[root@server1 ~]#

7 Administration der Datenbank

Für die meisten Leute ist es einfacher, wenn sie ein grafisches Frontend für MySQL haben; daher kannst Du auch phpMyAdmin (in diesem Beispiel unter http://server1.example.com/phpMyAdmin/) verwenden, um die ftp Datenbank zu verwalten.


Immer wenn ein neuer Benutzer angelegt wird, müssen nur die Einträge in der Tabelle ftpquotalimits und ftpuser erstellt werden, so dass ich die Spalten dieser Tabelle hier erkläre:

ftpuser-Tabelle:

Die wichtigen Spalten sind folgende (alle anderen werden von MySQL oder Proftpd automatisch erstellt, fülle sie daher auf keinen Fall manuell aus!):
  • userid: Der Name des virtuellen Proftpd Benutzers (z. B. exampleuser).
  • passwd: Das unverschlüsselte Passwort des Benutzers.
  • uid: Die BenutzerID des FTP-Benutzers den wir am Ende des zweiten Schrittes erstellt haben (z.B. 2001).
  • gid: Die GruppenIDid der FTP-Gruppe die wir am Ende des zweiten Schrittes erstellt haben (z.B. 2001).
  • homedir: Das Home Verzeichnis des virtuellen Proftpd Benutzers (z. B. /home/www.example.com). Wenn es nicht existiert, wird es beim ersten Einloggen des Benutzers erstellt, sobald dieser per FTP zugreift. Der virtuelle Benutzer wird in seinem Home Verzeichnis gesperrt, d.h. er kann auf andere Verzeichnisse außerhalb seines Home Verzeichnisses nicht zugreifen.
  • shell: Hier kann man /sbin/nologin als Standard einsetzen.

ftp Quotabeschränkung-Tabelle:

Die wichtigen Spalten sind folgende (alle anderen werden von MySQL oder Proftpd automatisch erstellt, fülle sie daher auf keinen Fall manuell aus!):
  • name: Der Name des virtuellen Proftpd Benutzers (z. B. exampleuser).
  • quota_type: user oder group. Üblicherweise nutzen wir hier user.
  • per_session: true oder false. true bedeutet dass die Quotabeschränkung nur für eine Sitzung gültig sind. Hat der Benutzer beispielsweise eine Quota von 15 MB, und lädt 15 MB während der aktuellen Sitzung hoch, kann er keine Daten mehr hochladen. Wenn der Benutzer sich allerdings ausloggt und wieder einloggt, hat er wieder 15 MB zur Verfügung. false bedeutet dass der Benutzer 15 MB zur Verfügung hat, uanbhängig davon ob er sich ein- und ausloggt.
  • limit_type: hard oder soft. Eine hard Quotabeschränkung ist ein strikte Limitierung, während eine soft Quota temporär überschritten werden kann. Normalerweise wird hard benutzt.
  • bytes_in_avail: Upload Begrenzung in Bytes (z. B. 15728640 für 15 MB). 0 bedeutet unbeschränkt.
  • bytes_out_avail: Download Begrenzung in Bytes. 0 bedeutet unbeschränkt.
  • bytes_xfer_avail: Transfer-Beschränkung in Bytes. Die Summe der Up- und Downloads die einem Benutzer gestattet werden. 0 bedeutet unbeschränkt.
  • files_in_avail: Upload Begrenzung von Dateien.0 bedeutet unbeschränkt.
  • files_out_avail: Download Begrenzung von Dateien.0 bedeutet unbeschränkt.
  • files_xfer_avail: Transfer Begrenzung von Dateien.0 bedeutet unbeschränkt.
Die ftpquotatallies Tabelle wird von Proftpd intern zum Management von Quotas benutzt, daher dürfen die Einträge dort nicht verändert werden!

8 Anonymes FTP Konto

Wenn Du ein anonymes FTP Konto erstellen möchtest (ein FTP Konto, in das sich jeder ohne Passwort einloggen kann), gehe folgendermassen vor:

Zuerst erstellen wir einen Benutzer sowie eine Gruppe mit dem Namen anonymous_ftp. Der Benutzer hat das Home Verzeichnis /home/anonymous_ftp:

groupadd -g 2002 anonymous_ftp
useradd -u 2002 -s /bin/false -d /home/anonymous_ftp -m -c "Anonymous FTP User" -g anonymous_ftp anonymous_ftp

(Ersetze 2002 mit einer Gruppen-/BenutzerID das auf Deinem System frei ist.)

Einige Dateien die mit einem Punkt . beginnen sind mit dem letzten Befehl (useradd) im /home/anonymous_ftp Verzeichins erstellt worden. Sie werden nicht gebraucht und können daher gelöscht werden :

cd /home/anonymous_ftp
rm -f .bash_logout
rm -f .bash_profile
rm -f .bashrc
rm -f .gnome2
rm -f .zshrc

Dann erstellen wir das Verzeichnis /home/anonymous_ftp/incoming, welches anonymen Benutzern erlaubt Dateien hochzuladen:

mkdir /home/anonymous_ftp/incoming
chown anonymous_ftp:nobody /home/anonymous_ftp/incoming

Öffne /etc/proftpd.conf und hänge folgende Anweisungen an, ganz zum Ende:

vi /etc/proftpd.conf

[...]
<Anonymous ~anonymous_ftp> User anonymous_ftp Group nobody # We want clients to be able to login with "anonymous" as well as "ftp" UserAlias anonymous anonymous_ftp # Cosmetic changes, all files belongs to ftp user DirFakeUser on anonymous_ftp DirFakeGroup on anonymous_ftp RequireValidShell off # Limit the maximum number of anonymous logins MaxClients 10 # We want 'welcome.msg' displayed at login, and '.message' displayed # in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir .message # Limit WRITE everywhere in the anonymous chroot <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> <Directory incoming> # Umask 022 is a good standard umask to prevent new files and dirs # (second parm) from being group and world writable. Umask 022 022 <Limit READ WRITE> DenyAll </Limit> <Limit STOR> AllowAll </Limit> </Directory> </Anonymous>
Proftpd wird nun neu gestartet:

/etc/init.d/proftpd restart

Nun können sich anonyme Benutzer einloggen. Sie können Dateien von /home/anonymous_ftp herunterladen, die Uploads sind jedoch auf /home/anonymous_ftp/incoming limitert (wurde eine Datei nach /home/anonymous_ftp/incoming hochgeladen, kann es von dort aus weder gelesen noch heruntergeladen werden; der Administrator des Servers muss es nach /home/anonymous_ftp ziehen, um es für andere zugänglich zu machen).

(Bitte merke: Du kannst nur ein anonymes ftp Konto pro IP Adresse haben!)

9 References

Mandrake 10.1 - Proftpd + MySQL Authentifizierung + Quotas Anleitung: http://www.khoosys.net/single.htm?ipg=848

10 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte