Byla vydána nová verze 3.27 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.6 souvisejícího programovacího jazyka Dart (Wikipedie).
Byla vydána (𝕏) listopadová aktualizace aneb nová verze 1.96 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.96 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
OpenMandriva ROME, tj. průběžně aktualizovaná (rolling) edice linuxové distribuce OpenMandriva, byla vydána ve verzi 24.12.
U příležitosti oslav sedmi let prací na debianím balíčku vyšlo GPXSee 13.33. Nová verze přináší rychlejší vykreslování vektorových map a vylepšení/doladění nového stylu pro OpenAndroMaps/Mapsforge mapy. Kdo by rád OSM mapy v "prémiovém" barevném schématu a nechce čekat až nová verze dorazí do jeho distribuce, nalezne zdrojové kódy na GitHubu.
Tým Google Quantum AI představil kvantový čip Willow se 105 qubity.
Byla vydána nová verze 257 správce systému a služeb systemd (GitHub).
RPCS3 (Wikipedie), tj. open source emulátor Sony PlayStation 3, nově oficiálně běží také na architektuře arm64. Podporován je Apple Silicon (YouTube) je i Raspberry Pi 5 (YouTube).
Jaký byl rok 2024 ve vyhledávání Googlu? Mistrovství světa v hokeji, triumf Davida Pastrňáka, Robert Fico nebo loučení s herečkou Simonou Postlerovou. To jsou některá z témat, která letos nejvíce rezonovala ve vyhledávání na Googlu. Češi s velkým zájmem zjišťovali, proč je přestupný rok, a s podobnou intenzitou hledali důvod absence Zdeňka Chlopčíka ve StarDance. Kompletní žebříčky včetně globálních a další zajímavosti.
Chatbot Grok AI je nově pro uživatele sítě 𝕏 zdarma (návod). S omezením 10 zpráv za dvě hodiny a tři obrázky za den.
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...