Beispiel:
Gegeben sei die Verzeichnisstruktur:
/www/vhosts/ftp//www/vhosts/ftp/anon/www/vhosts/ftp/uploadsproftpd.conf
ServerType standalone
RootLogin Off
UseReverseDNS Off
PersistentPasswd Off
RequireValidShell Off
User unixusername # anpassen !
Group unixgroupname # anpassen !
DefaultChdir ~
DefaultRoot ~
DefaultTransferMode binary
IdentLookups Off
Port 21
ServerAdmin emailadresse # anpassen !
ServerIdent On "FTP-Server"
ServerName "FTP-Server"
Umask 0111 0000
SQLAuthenticate users* groups*
SQLAuthTypes Backend Empty
SQLConnectInfo ftp@localhost:3306 ftp ftp PERSESSION
SQLHomedirOnDemand On
SQLUserInfo benutzer loginname passwort NULL NULL concat('/www/vhosts/ftp',verzeichnis) NULL # anpassen !
SQLGroupInfo gruppen name ID mitglieder
<Directory ~>
<Limit WRITE SITE_CHMOD DELE>
DenyAll
</Limit>
<Limit READ DIRS>
IgnoreHidden On
AllowAll
</Limit>
</Directory>
<Directory ~/uploads>
<Limit SITE_CHMOD DELE>
DenyAll
</Limit>
<Limit WRITE READ DIRS>
AllowAll
DenyAll
</Limit>
</Directory>
Datenbank:
[root@knowledgebase proftpd]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6235 to server version: 3.23.56
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE ftp;
mysql> use ftp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------+
| Tables_in_ftp |
+---------------+
| benutzer |
| gruppen |
| transfer |
+---------------+
3 rows in set (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON ftp.* TO 'ftp'@'%' IDENTIFIED BY 'ftp' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> DROP TABLE IF EXISTS benutzer;
mysql> CREATE TABLE `benutzer` (
`ID` int(11) unsigned NOT NULL default '0',
`Beschreibung` varchar(30) default NULL,
`loginname` varchar(16) NOT NULL default '',
`passwort` varchar(16) NOT NULL default '',
`Shell` varchar(255) default NULL,
`verzeichnis` varchar(255) NOT NULL default '/',
`Anmerkung` text,
PRIMARY KEY (`loginname`,`ID`)
) TYPE=MyISAM COMMENT='FTP-Benutzer für den FTP-Server';
mysql> INSERT INTO benutzer (ID, Beschreibung, loginname, passwort, Shell, verzeichnis, Anmerkung) VALUES("0", "Admin", "ftpadmin", "2009d4fa00e0ef29", NULL, "/", NULL);
mysql> INSERT INTO benutzer (ID, Beschreibung, loginname, passwort, Shell, verzeichnis, Anmerkung) VALUES("1", "Anonymous", "anonymous", "", NULL, "/anon", NULL);
mysql> DROP TABLE IF EXISTS gruppen;
mysql> CREATE TABLE `gruppen` (
`ID` tinyint(3) unsigned NOT NULL auto_increment,
`name` varchar(16) NOT NULL default '',
`mitglieder` text,
UNIQUE KEY `ID` (`ID`,`name`)
) TYPE=MyISAM COMMENT='FTP-Benutzergruppen für den FTP-Server';
mysql> INSERT INTO gruppen (ID, name, mitglieder) VALUES("3", "administratoren", "ftpadmin");
mysql> DROP TABLE IF EXISTS transfer;
mysql> CREATE TABLE `transfer` (
`username` varchar(60) NOT NULL default '',
`filename` varchar(255) default NULL,
`size` bigint(20) default NULL,
`host` varchar(255) default NULL,
`ip` varchar(16) NOT NULL default '',
`aktion` varchar(20) NOT NULL default '',
`dauer` varchar(10) default NULL,
`zeit_lokal` datetime default NULL,
`ui` bigint(20) NOT NULL auto_increment,
PRIMARY KEY (`ui`)
) TYPE=MyISAM COMMENT='FTP-Befehlshistory für den Server ';
mysql>
Alles klar?