Ok, dneska mám dobrej den, tak ti tu napisu navod teda no..
apt-get install proftpd-basic proftpd-mod-mysql
groupadd -g 2001 proftpd
useradd proftpd
usermod -d /home/ftp -g proftpd -u 2001 proftpd -s /bin/false
chown -R proftpd:proftpd /home/ftp/
groupadd ftpgroup -g 2002
useradd ftpuser -d /home/ftp -u 2002 -g ftpgroup -s /bin/false
mysql -u root -p
create database proftpd;
GRANT ALL PRIVILEGES ON proftpd.* TO proftpd@localhost IDENTIFIED BY 'mojeheslo';
FLUSH PRIVILEGES;
use proftpd;
CREATE TABLE proftpd_group (
groupname varchar(16) NOT NULL default 'ftpuser',
gid smallint(6) NOT NULL default '2002',
members varchar(16) NOT NULL default 'ftpgroup',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';
CREATE TABLE proftpd_quota (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail bigint(10) unsigned NOT NULL default '0',
bytes_out_avail bigint(10) unsigned NOT NULL default '0',
bytes_xfer_avail bigint(10) unsigned NOT NULL default '0',
files_in_avail bigint(10) unsigned NOT NULL default '0',
files_out_avail bigint(10) unsigned NOT NULL default '0',
files_xfer_avail bigint(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE proftpd_quota_allies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used bigint(10) unsigned NOT NULL default '0',
bytes_out_used bigint(10) unsigned NOT NULL default '0',
bytes_xfer_used bigint(10) unsigned NOT NULL default '0',
files_in_used bigint(10) unsigned NOT NULL default '0',
files_out_used bigint(10) unsigned NOT NULL default '0',
files_xfer_used bigint(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE proftpd_user (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '2002',
gid smallint(6) NOT NULL default '2002',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/bin/false',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
INSERT INTO `proftpd_group` (`groupname`, `gid`, `members`) VALUES ('ftpuser', 2002, 'ftpgroup');
INSERT INTO `proftpd_quota` (`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 ('admin', 'user', 'true', 'hard', 15728640, 0, 0, 0, 0, 0);
INSERT INTO `proftpd_user` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'admin', 'mojeheslo', 2002, 2002, '/home/ftp/', '/sbin/nologin', 0, '', '');
quit
rm -R /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.conf
#
# /etc/proftpd/proftpd.conf -- Toto je zakladni konfiguracni soubor proftpd.
# Pokud chceme uplatnit veskere zmeny, je treba reloadnout proftpd.
#
### Vloz konfiguracni soubor s DSO moduly:
Include /etc/proftpd/modules.conf
### Podporovat IPv6?:
UseIPv6 on
### Jmeno serveru:
ServerName "Nas novy ftp server"
### Typ spusteni (standalone = daemon nebo inetd = superserver)
ServerType standalone
### Podpora RFC2228 – kazdy radek ma kod, coz je lehci pro komunikaci s klientem:
MultilineRFC2228 on
### Pokud prijde pozadavek na ip a ne na DNS nazev (hlavne u VirtualServeru),
# tak by server vyhodil nedostupnost sluzby, zapnuti direktivy toto resi:
DefaultServer on
### Nasledovat symlinky?:
ShowSymlinks off
### Casove limity, po kterych dojde k odpojeni (v sekundach):
# Casovy limit pro prihlaseni
TimeoutLogin 120
# Bezprostredne po pripojeni bez jakehokoli pozadavku:
TimeoutNoTransfer 600
# Delka zivotnosti procesu prenosu dat, kterym se data prestala prenaset:
TimeoutStalled 600
# Jak dlouho muze byt klient necinny po dokonceni prenosu dat:
TimeoutIdle 1200
### Zobrazit uvitaci zpravu:
# (zadanim relativni cesty dame uzivateli moznost definovat si onu zpravu):
# DisplayLogin welcome.msg
# Zadanim absolutni cesty bude nastaveni pro vsechny uzivatele stejne:
DisplayLogin /home/ftp/welcome.msg
### Nezobrazovat uvitaci text driv, nez je uzivatel prihlasen
DeferWelcome off
### Po otevreni adresare se objevi hlaska; zastarale, vetsina prohlizecu ignoruje:
DisplayChdir .message true
### ListOptions: definuje, jak bude vypadat vypis adresare:
# -l Jedna radka pro jeden soubor
# -A Vypis vsechny soubory vyjma "." a ".."
# -a Vypis vsechny soubory vcetne skrytych (tj. zacinajicich "." – napriklad .htaccess)
# -C Vypis do kolonek
# -d Vypis jen adresare (misto jejich obsahu)
# -F V pripade, ze dany soubor obsahuje identifikator souboru ("*", "/", "=", "@" or "|"), vypise jej take
# -h Vypisuje velikosti souboru v "citelnejsi" podobe (1K, 10MB, 2,4GB atd.)
# -L Vypisuje soubory, na ktere ukazuje symbolicky odkaz
# -l Podrobny vypis
# -n Pri vypisu ukaze jen cisla GID a UID pro skupiny/uzivatel misto jejich nazvu
# -R Bude prochazet adresare rekurzivne
# -r Vypise soubory v obracenem poradi
# -S Seradi a vypise soubory podle velikosti
# -t Seradi a vypise soubory podle data posledni upravy
ListOptions "-l"
### Zakazat rootovi prihlasit se na ftp:
RootLogin off
### Nepozadujeme, aby mel uzivatel shell:
RequireValidShell off
### Zabezpeceni proti nastaveni nebezpecnych filtru na masku regularniho vyrazu
DenyFilter \*.*/
### Pokud chceme, aby byli vsichni uzivatele
# pouze ve svych domovskych adresarich, tak pouzijeme "~"
DefaultRoot ~
### Port, na kterem ma proftpd naslouchat (stadardne 21)
Port 21
### Pro pasivni prenos nastavime rozsah komunikacnich portu:
PassivePorts 40000 44000
### Maximalni pocet instanci (hlavne proti DoS utoku),
# funguje pouze v rezimu serveru jako standalone
MaxInstances 30
### Maximalni pocet klientu:
MaxClients 10 "Promin, maximalne %m uzivatelu -- zkus se pripojit pozdeji"
### Omezeni poctu pripojeni jednoho klienta
MaxClientsPerHost 3 "Muzes byt pripojen pouze: %m"
### Maximalni pocet pokusu o prihlaseni
MaxLoginAttempts 3
### Ma byt uzivatelske jmeno ziskano pres ident(RFC1413)?
# Pokud je volba zapnuta, tak se dosti prodlouzi prihlasovani
IdentLookups off
### Pokud je volba zapnuta, server zjistuje existenci reverzniho zaznamu
# klienta (minoritni bezpecnostni prvek). Tim se ovsem opet zpomaluje prihlasovani.
UseReverseDNS off
### Ma se cas zobrazovat v GMT, a ne lokalni?
TimesGMT off
### Uzivatel a skupina, pod nimiz je server spusten
User proftpd
Group proftpd
### Linuxovy umask noveho adresare a souboru
Umask 022 022
### Soubory mohou byt prepisovany
AllowOverwrite on
### Povolit klientum znovu navazat na stahovani
AllowRetrieveRestart on
### Povolit klientum znovu navazat na upload
AllowStoreRestart on
### Povolit .ftpaccess soubory (trochu zpomaluje vypis slozky)
AllowOverride on
### Zakaze zobrazeni vsemoznych informaci o serveru (verzi apod) hned po prihlaseni
# (takovy maly bezpecnostni prvek)
ServerIdent Off
### Zamaskovat skutecne jmeno uzivatele souboru/adresare
DirFakeUser on pepa
### Zamaskovat skutecne jmeno skupiny souboru/adresare
DirFakeGroup on pepagroup
### Zamaskuje nastaveni prav na souboru
DirFakeMode 0000
### Pokud adresar uzivatele neexistuje, tak ho vytvori s pravy 755
CreateHome on 755 dirmode 755
### Maximalni cas procesoru v sekundach na proces
#RLimitCPU 600 600
### Maximum pameti pouzitou na proces (v bajtech)
#RLimitMemory 64M 64M
### Maximalni pocet otevrenych souboru na proces
#RLimitOpenFiles 1024 1024
### Logujeme
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# Zaznamenavat vsechny sql dotazy (jen v pripade ladeni, jinak nedoporucuji zapinat):
#SQLLogFile /var/log/proftpd/sqllog.log
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
### Zaznamenavat pristupy k souborum a adresarum
ExtendedLog /var/log/proftpd/proftpd.access_log WRITE,READ write
### Zapsat vsechna prihlaseni
ExtendedLog /var/log/proftpd/proftpd.auth_log AUTH auth
### Paranoidni uroven zaznamu
# ExtendedLog /var/log/proftpd/proftpd.paranoid_log ALL default
### Povolit logovani pomoci symlinku
AllowLogSymlinks off
### Nastaveni pro ACL aj. (vypnuto)
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
AdminControlsEngine on
### Vlozit konfiguracni soubor ohledne nastaveni SQL
Include /etc/proftpd/sql.conf
rm -R /etc/proftpd/sql.conf
nano /etc/proftpd/sql.conf
#
# Ukazkovy ProFTPD konfiguracni soubor pro autentizaci zalozenou na SQL.
#
#
# Vyberte SQL backend: MySQL nebo PostgreSQL.
# Oba moduly jsou nacitany ve vychozim nastaveni, specifukujte tedy, ktery backend ma byt pouzit,
# a zakomentujte nebo odkomentujte prislusne direktivy v /etc/proftpd/modules.conf.
# Opet lze pouzit hodnoty 'mysql' nebo 'postgres'.
#
### Jaky backend (databazi) pouzijeme:
SQLBackend mysql
### Zapneme podporu SQL:
SQLEngine on
AuthOrder mod_sql.c
### Pouzit backend-crypted nebo crypted password
#SQLAuthTypes Backend Crypt
SQLAuthTypes Plaintext Crypt
### Pripojeni:
#===============
SQLConnectInfo proftpd@localhost proftpd mojeheslo
SQLUserInfo proftpd_user userid passwd uid gid homedir shell
SQLGroupInfo proftpd_group groupname gid members
SQLMinID 2000
### Vytvorit automaticky adresar uzivatele – zastarale, v dalsi verzi nebude fungovat
#SQLHomedirOnDemand on
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" proftpd_user
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" proftpd_user
### Uzivatelske quoty:
#=======================
QuotaEngine on
QuotaLog /var/log/proftpd/quota.log
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "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 FROM proftpd_quota WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM proftpd_quota_allies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" proftpd_quota_allies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" proftpd_quota_allies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
SQLNamedQuery gettally SELECT "ROUND((bytes_in_used/1048576),2) FROM proftpd_quota_allies WHERE name='%u'"
SQLNamedQuery getlimit SELECT "ROUND((bytes_in_avail/1048576),2) FROM proftpd_quota WHERE name='%u'"
SQLNamedQuery getfree SELECT "ROUND(((proftpd_quota.bytes_in_avail-proftpd_quota_allies.bytes_in_used)/1048576),2) FROM proftpd_quota,proftpd_quota_allies WHERE proftpd_quota.name = '%u' AND proftpd_quota_allies.name = '%u'"
SQLShowInfo LIST "226" "Vyuzito %{gettally}MiB z %{getlimit}MiB. Jeste vam zbyva %{getfree}MiB volneho mista."
rm -R /etc/proftpd/modules.conf
nano /etc/proftpd/modules.conf
#
# Tento soubor je pouzivan ke sprave modulu a funkci DSO.
#
### Adresar, kde jsou DSO moduly umisteny
ModulePath /usr/lib/proftpd
### Pouze root muze pripojovat a odpojovat moduly,
# ostatni mohou jen videt pripojene moduly
ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *
LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c
### Pokud chceme pouzit MySQL (proftpd-mod-mysql) nebo PostgreSQL (proftpd-mod-pgsql), tak odkomentujeme
LoadModule mod_sql.c
### Pokud chceme pouzit LDAP, tak odkomentujeme
#LoadModule mod_ldap.c
### Direktivy 'SQLBackend mysql' nebo 'SQLBackend postgres' vyzaduji, kterou SQL autorizaci maji pouzit.
# Odkomentujte tedy prislusny modul
# Pri pouziti proftpd-mod-mysql odkomentujeme toto:
LoadModule mod_sql_mysql.c
# Pri pouziti proftpd-mod-pgsql odkomentujeme toto:
#LoadModule mod_sql_postgres.c
LoadModule mod_radius.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
### Pri pouziti proftpd-mod-ldap odkomentujeme toto:
#LoadModule mod_quotatab_ldap.c
### Nainstalovany proftpd-mod-pgsql nebo proftpd-mod-mysql pouziva tyto moduly:
LoadModule mod_quotatab_sql.c
LoadModule mod_quotatab_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
LoadModule mod_load.c
LoadModule mod_ban.c
LoadModule mod_wrap2.c
LoadModule mod_wrap2_file.c
#LoadModule mod_wrap2_sql.c
LoadModule mod_dynmasq.c
# Nechte tento modul posledni
LoadModule mod_ifsession.c
/etc/init.d/proftpd restart
Vsak pokud si to jednou posral, tak podruhy to pujde blbe spravit...