VST 3 je nově pod licencí MIT. S verzí 3.8.0 proběhlo přelicencování zdrojových kódů z licencí "Proprietary Steinberg VST3 License" a "General Public License (GPL) Version 3". VST (Virtual Studio Technology, Wikipedie) je softwarové rozhraní pro komunikaci mezi hostitelským programem a zásuvnými moduly (pluginy), kde tyto moduly slouží ke generování a úpravě digitálního audio signálu.
Open source 3D herní a simulační engine Open 3D Engine (O3DE) byl vydán v nové verzi 25.10. Podrobný přehled novinek v poznámkách k vydání.
V Londýně probíhá dvoudenní Ubuntu Summit 25.10. Na programu je řada zajímavých přednášek. Zhlédnout je lze také na YouTube (23. 10. a 24. 10.).
Gemini CLI umožňuje používání AI Gemini přímo v terminálu. Vydána byla verze 0.10.0.
Konference OpenAlt 2025 proběhne již příští víkend 1. a 2. listopadu v Brně. Nabídne přibližně 80 přednášek a workshopů rozdělených do 7 tematických tracků. Program se může ještě mírně měnit až do samotné konference, a to s ohledem na opožděné úpravy abstraktů i případné podzimní virózy. Díky partnerům je vstup na konferenci zdarma. Registrace není nutná. Vyplnění formuláře však pomůže s lepším plánováním dalších ročníků konference.
Samsung představil headset Galaxy XR se 4K Micro-OLED displeji, procesorem Snapdragon XR2+ Gen 2, 16 GB RAM, 256 GB úložištěm, operačním systémem Android XR a Gemini AI.
Před konferencí Next.js Conf 2025 bylo oznámeno vydání nové verze 16 open source frameworku Next.js (Wikipedie) pro psaní webových aplikací v Reactu. Přehled novinek v příspěvku na blogu.
Sovereign Tech Fund oznámil finanční podporu následujících open source projektů: Scala, SDCC, Let's Encrypt, Servo, chatmail, Drupal, Fedify, openprinting, PHP, Apache Arrow, OpenSSL, R Project, Open Web Docs, conda, systemd a phpseclib.
Bylo vydáno OpenBSD 7.8. S předběžnou podporou Raspberry Pi 5. Opět bez písničky.
Valkey (Wikipedie) byl vydán v nové major verzi 9.0. Valkey je fork Redisu.
Na internetu je hodně návodů, jak nainstalovat FTP server ProFTPD, ale ani jeden mi nepřijde zcela kompletní, polopatický a hlavně v češtině, aby jej každý pochopil. Delší dobu jsem přemýšlel, že napíši nějaké pořádné howto na toto téma. Nakonec jsem si našel čas a sepsal něco, co by měl pochopit úplně každý.
ProFTPD je velmi modulární a nastavitelný FTP server, který je šířen pod licencí GPL. V článku si krok za krokem vysvětlíme, jak ProFTPD nastavit, jak funguje propojení s databází MySQL (uživatelé nemají systémové účty, veškerá správa uživatelů a jejich nastavení je uloženo v databázi MySQL a je jednoduše spravováno třeba přes phpMyAdmin). Podíváme se samozřejmě i na nastavení kvót. Jak už bylo řečeno, jednou z jeho výhod je i modulárnost, tudíž jsou dostupné i moduly třetích stran. Do článku jsem tedy nakonec zahrnul i vlastní kompilaci ProFTPD včetně několika vybraných modulů, jež nejsou přímo jeho součástí. Pro začátečníky uvedu i nějaké tipy a triky pro nastavení uživatelských práv, omezení trafiku a příklady k jednodlivým externím modulům.
Mimo ProFTPD je ještě velmi populární FTP server PureFTPd. ProFTPD jsem si vybral jednoduše proto, že ho delší čas používám. Stejně tak, jako jsem si vybral propojení s MySQL, a ne LDAP. Vše má své pro i proti, rozhodnutí je vždy na vás. V článku je vše postaveno na distribuci GNU/Debian (Lenny), ale věřím, že nebude problém použít tento návod i na jiných distribucích. Směle tedy do toho.
Nešifrovaný protokol pro přenos dat. Přenosová rychlost je dobrá, nicméně není určen k přenosu souborů o velké velikosti (může docházet k nekonzistenci dat, protokol není navržen pro možné výpadky spojení atd.).
Je velmi pomalý při přenosu velkého počtu malých souborů (stále navazuje spojení atd.). Spojení probíhá na portu 21, samotný přenos dat pak na portu 20. Tzn., že ke komunikaci používá více portů.
FTP může probíhat ve dvou základních režimech:
Rozšíření protokolu FTP o SSL/TLS šifrování. Začínají být problémy při traverzi NAT. Jsou dvě metody:
Nejdříve se vytvoří pomocí SSH tunel, přes který poté běží samotná komunikace FTP. Dost lidí zaměňuje „Secure FTP“ a „SFTP“. Tak pozor na to, jedná se o dvě zcela rozdílné věci.
Čím dál více rozšířený protokol pro přenos dat. S klasickým FTP již nemá nic společného. SFTP k autentizaci a přenosu dat používá většinou protokol SSH-2. Je vlastně takovou náhradou za velmi jednoduchý protokol scp.
My se tedy v článku zaměříme na FTP a FTPS s explicitním šifrováním.
Nejdříve nainstalujeme příslušné balíčky (typ spouštění ProFTPD nastavíme jako standalone):
aptitude install mysql-server mysql-client libmysqlclient12-dev proftpd-basic proftpd-mod-mysql
Dále vytvoříme příslušnou skupinu:
groupadd -g 2001 proftpd
Instalací ProFTPD by se nám měl automaticky vytvořit i uživatel; komu ne, nechť si ho vytvoří:
useradd proftpd
Uživateli nastavíme domovský adresář a přiřadíme ho k příslušné skupině:
usermod -d /home/ftp -g proftpd -u 2001 proftpd -s /bin/false chown -R proftpd:proftpd /home/ftp/
Nyní máme vytvořenou skupinu a uživatele, pod nimiž bude server běžet. Ještě musíme vytvořit uživatele a skupinu, pod jejichž právami si budou klienti ukládat svá data na ftp server.
groupadd ftpgroup -g 2002 useradd ftpuser -d /home/ftp -u 2002 -g ftpgroup -s /bin/false
Pro ukázku možností ProFTPD jsem si zvolil kompilaci se všemi možnými standardními moduly a následujícími moduly třetích stran:
Další moduly je možno vidět zde: Modules.
Nejdříve si nainstalujeme programy a knihovny potřebné pro kompilaci:
aptitude install gcc g++ make bzip2 libmysql++-dev postgresql-server-dev-8.3 libldap2-dev libwrap0-dev checkinstall
Dále stáhnout a rozbalit archiv. Kdo chce přímo vývojovou verzi, tak si jí může stáhnout přímo z cvs:
aptitude install cvs cvs -d:pserver:anonymous@proftp.cvs.sourceforge.net:2401/cvsroot/proftp -z3 co proftpd
Já mám odzkoušenou současnou stabilní verzi:
cd /usr/local/src/ wget -c ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.2.tar.bz2 tar xvfj proftpd-1.3.2.tar.bz2
Stáhneme si moduly, rozbalíme a poté nakopíruje do příslušných míst:
wget -c http://www.castaglia.org/proftpd/modules/proftpd-mod-md5-0.3.3.tar.gz wget -c http://www.castaglia.org/proftpd/modules/proftpd-mod-sftp-0.9.6.tar.gz wget -c http://www.castaglia.org/proftpd/modules/proftpd-mod-sftp-sql-0.1.tar.gz wget -c http://www.castaglia.org/proftpd/modules/proftpd-mod-vroot-0.8.5.tar.gz tar xvfz proftpd-mod-md5-0.3.3.tar.gz tar xvfz proftpd-mod-sftp-0.9.6.tar.gz tar xvfz proftpd-mod-sftp-sql-0.1.tar.gz tar xvfz proftpd-mod-vroot-0.8.5.tar.gz cp mod_md5/mod_md5.c proftpd-1.3.2/contrib/ cp -r mod_sftp proftpd-1.3.2/contrib/ cp mod_sftp_sql/mod_sftp_sql.c proftpd-1.3.2/contrib/ cp mod_vroot/mod_vroot.c proftpd-1.3.2/contrib/
Nakonfigurujeme. Pokud nevíte, jak na to, zkuste si nainstalovat distribuční verzi ProFTPD a podívat se, jak je nakonfigurována (poté jí stačí opět odinstalovat):
aptitude install proftpd-basic proftpd-mod-mysql
proftpd -V
Compile-time Settings:
Version: 1.3.2 (stable)
Platform: LINUX
Built: Po čen 1 02:12:43 CEST 2009
Built With:
configure '--prefix=/usr' '--with-includes=/usr/include/postgresql:/usr/include/mysql' '--mandir=/usr/share/man' '--sysconfdir=/etc/proftpd' '--localstatedir=/var/run' '--libexecdir=/usr/lib/proftpd' '--disable-sendfile' '--enable-facl' '--enable-dso' '--enable-autoshadow' '--enable-ctrls' '--with-modules=mod_readme' '--enable-ipv6' '--enable-nls' '--build' 'i486-linux-gnu' '--with-shared=mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:mod_sql_mysql:mod_sql_postgres:mod_dynmasq:mod_quotatab_sql:mod_ldap:mod_quotatab_ldap:mod_ratio:mod_tls:mod_rewrite:mod_radius:mod_wrap:mod_wrap2:mod_wrap2_file:mod_wrap2_sql:mod_quotatab_file:mod_quotatab_radius:mod_facl:mod_ctrls_admin:mod_ifsession' 'build_alias=i486-linux-gnu'
...
aptitude remove proftpd-basic proftpd-mod-mysql
Nyní se stačí jen podívat do changelogu nové verze, poupravit si drobnosti a jdeme na to (pozor! mod_ifsession musí být uveden až po mod_md5, nejlepší by stejně bylo, kdyby byl až na konci):
cd proftpd-1.3.2 ./configure --prefix=/usr --with-includes=/usr/include/postgresql:/usr/include/mysql --mandir=/usr/share/man --sysconfdir=/etc/proftpd --localstatedir=/var/run --libexecdir=/usr/lib/proftpd --enable-facl --enable-dso --enable-openssl --enable-autoshadow --enable-ctrls --with-modules=mod_readme --enable-ipv6 --enable-nls --build i486-linux-gnu --with-shared=mod_unique_id:mod_vroot:mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:mod_sql_mysql:mod_sql_postgres:mod_dynmasq:mod_quotatab_sql:mod_ldap:mod_quotatab_ldap:mod_ratio:mod_tls:mod_rewrite:mod_radius:mod_wrap:mod_wrap2:mod_wrap2_file:mod_wrap2_sql:mod_quotatab_file:mod_quotatab_radius:mod_facl:mod_ctrls_admin:mod_sftp:mod_sftp_sql:mod_md5:mod_ifsession
Zkompilujeme, zabalíme do balíčku pomocí checkinstall a nainstalujeme (Checkinstall je dostačující a rychlá věc pro koncové balíčky, na kterých už nic jiného nezávisí. Pro jiné záležitosti bych si ho nedovolil použít.):
make checkinstall -D dpkg -i proftpd_1.3.2-1_i386.deb
Nyní bychom měli mít nainstalovaný ProFTPD server s podporou všeho možného :/). Na závěr přikládám záznam výše provedených událostí proftpd_compile.log.
Nyní vytvoříme databázi pro ProFTPD a současně i uživatele:
mysql -u root -p mysql> create database proftpd; GRANT ALL PRIVILEGES ON proftpd.* TO proftpd@localhost IDENTIFIED BY 'mojeheslo'; FLUSH PRIVILEGES;
Tak, nyní můžeme začít vytvářet tabulky. První bude se skupinami:
mysql> use proftpd; mysql> 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';
Tabulky pro quoty musí být biginit. Pokud jsou jen init, tak mod_ifsession může být velikost quoty maximálně 4 GiB. Tj, ať se do tabulky pokusíte zapsat sebevětší číslo, tak víc jak 4294967295 B tam nenacpete.
mysql>
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;
Tabulka proftpd_quota_allies slouží pro interní věci ProFTPD. Do ní nic nebudeme zapisovat.
mysql>
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;
Tabulka pro virtuální uživatele:
mysql> 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';
Zapíšeme informace o lokálním uživateli (ten, pod kterým má uživatel ftp práva) do db:
mysql> INSERT INTO `proftpd_group` (`groupname`, `gid`, `members`) VALUES ('ftpuser', 2002, 'ftpgroup');
Vytvoříme si testovacího uživatele s limitem ftp 15 MiB:
mysql> 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);
mysql> 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, '', '');
mysql> quit
Další uživatele vytváříme stejně, jen změníme hodnotu ID (o jeden výše) a userid/name (jméno uživatele). V selectu jsou tučně vyznačeny. Toto jsou nezbytné položky dalšího nového uživatele. Volitelné položky jsou potom třeba „domovský adresář“, „quota“ atd.
Zde předkládám tři nutné konfigurační soubory. Jejich komentáře snad mluví za vše.
#
# /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)
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>
### Vlozit konfiguracni soubor ohledne nastaveni SQL
Include /etc/proftpd/sql.conf
Jen si nezapomeňte v tomto souboru změnit heslo dle svého.
#
# Ukazkovy ProFTPD konfiguracni soubor pro autentizaci zalozenou na SQL.
#
<IfModule mod_sql.c>
#
# 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."
# # 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
Nyní stačí jen reloadnout proftpd:
/etc/init.d/proftpd restart
Kdo chce šifrovat, až se z něj bude prášit, tak jen do toho. Nejdříve budeme potřebovat OpenSSL:
aptitude install openssl
Vygenerujeme certifikáty:
mkdir /etc/proftpd/ssl openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem chown root:root /etc/proftpd/ssl/* chmod 600 /etc/proftpd/ssl/proftpd.key.pem chmod 644 /etc/proftpd/ssl/proftpd.cert.pem
Do /etc/proftpd/proftpd.conf přidáme následující řádek:
Include /etc/proftpd/tls.conf
Vytvoříme soubor /etc/proftpd/tls.conf a přidáme do něj:
# # Ukazkovy konfiguracni soubor ProFTPD pro FTPS spojeni. # # Pozor, FTPS zavadi nekolik omezeni pri traverzi NAT. # Pro vice informaci se podivejte na: # http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-TLS.html # <IfModule mod_tls.c> ### Povolit ProFTPD TLS/SSL TLSEngine on ### Soubor s logem pro vse ohledne TLS spojeni TLSLog /var/log/proftpd/tls.log ### Typ protokolu – TLSv1, SSLv3, SSLv23 (kompatibilita obou predchozich): TLSProtocol SSLv23 # # Pokud chcete vygenerovat self-signed certifikat, pouzijte tento prikaz: # # openssl req -x509 -newkey rsa:1024 \ # -keyout /etc/proftpd/ssl/proftpd.key.pem \ # -out /etc/proftpd/ssl/proftpd.cert.pem \ # -nodes -days 365 # # Soubor proftpd.key.pem musi byt citelny pouze pro uzivatele root. Ostatni soubory mohou # byt citelne pro kohokoli. # # chmod 0600 /etc/proftpd/ssl/proftpd.key.pem # chmod 0640 /etc/proftpd/ssl/proftpd.cert.pem # ### Cesty k certifikatum: TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem ### Soubor s certifikatem certifikacni autority (CA) pro overovani klientu: #TLSCACertificateFile /etc/ssl/certs/CA.pem # cesta k crtifikatum pro overovani klientu pomoci CA: #TLSCACertificatePath /etc/ssl/certs/ # cesta ke zrusenemu/neduveryhodnemu certifikatu: #TLSCARevocationFile /etc/ssl/revocate/CA.pem # cesta ke zrusenym/neduveryhodnym certifikatum: #TLSCARevocationPath ### Neoverovat klientuv certifikat TLSOptions NoCertRequest ### Nedotazovat se na klientuv certifikat TLSVerifyClient off ### Vyzadovat TLS spojeni; pokud je off, klient se bude moci pripojit i nesifrovane TLSRequired off ### Spojeni se navaze s trvalym certifikatem a dalsi komunikace a prenos dat # probiha s docasnym. Da se nastavit platnost docasneho v navaznosti na # casU prenosu, objemu prenesenych dat atd. # Tuto fci rozhodne moc klientu nepodporuje, takze se asi ani moc nepouziva. # Nastavit tak, aby nebylo nutne, ale jen pozadovane/dobrovolne: #TLSRenegotiate required off # Po 1 hodine: #TLSRenegotiate ctrl 3600 # Po preneseni 500 MiB dat: #TLSRenegotiate data 512000 # Timeout: #TLSRenegotiate timeout 300 # Veskere nastaveni v jedne directive: #TLSRenegotiate ctrl 3600 data 512000 required off timeout 300 </IfModule>
Nakonec už jen reloadneme ProFTPD:
/etc/init.d/proftpd reload
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
ferda si povoli prihlaseni pouze z IP 127.0.0.1 amalka si povoli prihlaseni pouze z IP 192.168.0.6 cmelda si povoli prihlaseni z 2 IP 192.168.0.7 a 192.168.0.8 brumbda se omezovat nehodla vubec
tohle umi treba pureftpd
ono to bolo myslene tak, ze ked nieco v php uploadujes cez tie jeho funkcie(move_uploaded_file....), tak owner/group je ten user pod ktorym bezi www server, a nie ten komu patria skripty... ciastocne riesenie je pouzivat mod_suphp (riesi to len otazku komu ten subor po vytvoreni patri), ale ani to neriesi zapisovanie quoty do databazy... to sa da imho vyriesit len quotami priamo v systeme...
, jinak pochvala za super článek!
peru se stim už celej den a pořád mi to nechce chodit. Co stím? Díky
. Také by měl mít nadřazený adresář práva ftpuser:ftpgroup a nejlépe 755.