GNU/Linux >> Znalost Linux >  >> Ubuntu

Virtuální hosting s PureFTPd a MySQL (včetně správy kvót a šířky pásma) na Ubuntu 12.10

Tento dokument popisuje, jak nainstalovat server PureFTPd, který místo skutečných systémových uživatelů používá virtuální uživatele z databáze MySQL. To je mnohem výkonnější a umožňuje mít tisíce uživatelů ftp na jednom počítači. Kromě toho ukážu použití kvóty a omezení šířky pásma pro nahrávání/stahování s tímto nastavením. Hesla budou v databázi uložena zašifrovaná jako řetězce MD5. Tento tutoriál je založen na Ubuntu 12.10.

Pro správu databáze MySQL můžete použít webové nástroje jako phpMyAdmin, který bude také nainstalován v tomto návodu. phpMyAdmin je pohodlné grafické rozhraní, které znamená, že se nemusíte potýkat s příkazovým řádkem.

Tento návod je myšlen jako praktický průvodce; nepokrývá teoretická východiska. Jsou zpracovány v mnoha dalších dokumentech na webu.

Tento dokument je dodáván bez jakékoli záruky! Chci říci, že to není jediný způsob, jak takový systém nastavit. Existuje mnoho způsobů, jak tohoto cíle dosáhnout, ale já volím tento způsob. Neposkytuji žádnou záruku, že to pro vás bude fungovat!

1 předběžná poznámka

V tomto tutoriálu používám název hostitele server1.example.com s IP adresou 192.168.0.100. Tato nastavení se pro vás mohou lišit, takže je v případě potřeby musíte nahradit.

Ujistěte se, že jste přihlášeni jako root (zadejte

sudo su

stát se rootem), protože všechny kroky z tohoto tutoriálu musíme spustit jako uživatel root.

2 Instalace MySQL a phpMyAdmin

To vše lze nainstalovat jediným příkazem:

apt-get install mysql-server mysql-client phpmyadmin apache2

Budou vám položeny tyto otázky:

Nové heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Opakujte heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Webový server se automaticky překonfiguruje:<-- apache2
Konfigurovat databázi pro phpmyadmin pomocí dbconfig-common? <-- Ne

3 Instalace PureFTPd s podporou MySQL

Pro Ubuntu 12.10 je k dispozici předkonfigurovaný balíček pure-ftpd-mysql. Nainstalujte jej takto:

apt-get install pure-ftpd-mysql

Poté vytvoříme ftp skupinu (ftpgroup) a uživatele (ftpuser), na které budou mapováni všichni naši virtuální uživatelé. Nahraďte skupinu a ID uživatele 2001 číslem, které je ve vašem systému zdarma:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

4 Vytvoření databáze MySQL pro PureFTPd

Nyní vytvoříme databázi nazvanou pureftpd a uživatele MySQL s názvem pureftpd, kterého démon PureFTPd později použije k připojení k databázi pureftpd:

mysql -u root -p
VYTVOŘIT DATABÁZI pureftpd;
UDĚLIT VÝBĚR, VLOŽIT, AKTUALIZOVAT, ODSTRANIT, VYTVOŘIT, PUSTIT NA pureftpd.* NA 'pureftpd'@'localhost' IDENTIFIKOVANÉ PODLE 'ftpdpass';
UDĚLIT VÝBĚR, INSERT, AKTUALIZUJTE, ODSTRAŇTE, VYTVOŘTE, PŘEJDĚTE NA pureftpd.* NA 'pureftpd'@'localhost.localdomain' IDENTIFIKOVANÉ PODLE 'ftpdpass';
FLUSH PRIVILEGES;

Nahraďte řetězec ftpdpass jakýmkoli heslem, které chcete použít pro uživatele MySQL pureftpd. Stále v prostředí MySQL vytváříme databázovou tabulku, kterou potřebujeme (ano, existuje pouze jedna tabulka!):

POUŽÍVEJTE pureftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL výchozí '',
status enum('0','1') NOT NULL výchozí '0',
Heslo varchar (64) NOT NULL výchozí '',
Uid varchar(11) NOT NULL výchozí '-1',
Gid varchar(11) NOT NULL výchozí '-1',
Dir varchar( 128) NOT NULL výchozí '',
ULBandwidth smallint(5) NOT NULL výchozí '0',
DLBandwidth smallint(5) NOT NULL výchozí '0',
komentář tinytext NOT NULL,
ipaccess varchar(15) NOT NULL výchozí '*',
QuotaSize smallint(5) NOT NULL výchozí '0',
QuotaFiles int(11) NOT NULL výchozí 0,
PRIMÁRNÍ KLÍČ (uživatel),
JEDINÝ KLÍČ Uživatel (uživatel)
) ENGINE=MyISAM;
ukončit;

Jak jste si možná všimli, s ukončením; příkaz opustili jsme prostředí MySQL a jsme zpět v prostředí Linux.

BTW, (předpokládám, že název hostitele vašeho systému ftp serveru je server1.example.com) můžete přistupovat k phpMyAdmin pod http://server1.example.com/phpmyadmin/ (můžete také použít IP adresu místo server1 .example.com) v prohlížeči a přihlaste se jako uživatel pureftpd. Pak se můžete podívat do databáze. Později můžete použít phpMyAdmin ke správě vašeho PureFTPd serveru.

5 Konfigurace PureFTPd

Upravte /etc/pure-ftpd/db/mysql.conf. Mělo by to vypadat takto:

cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
cat /dev/null> /etc/pure-ftpd/db/mysql.conf
vi /etc/pure-ftpd/db/mysql.conf
MYSQLSocket /var/run/mysqld/mysqld.sock#MYSQLServer localhost#MYSQLPort 3306MYSQLUser pureftpdMYSQLPassword ftpdpassMYSQLDatabase pureftpd#MYSQLCrypt md5() nebo heslo, šifrování () - md5 je VELMI DOPORUČUJÍCÍ po vymazání textu MYSQLCrypt md5MYSQLGetPW VYBERTE heslo Z ftpd WHERE User="\L" AND status="1" AND (ipaccess ="*" NEBO ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM User ftpd WHERE "\L" AND status="1" AND (ipaccess ="*" NEBO ipaccess JAKO "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" NEBO ipaccess JAKO "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" NEBO ipaccess JAKO "\R")MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=" \L"AND status="1" AND (ipaccess ="*" NEBO ipaccess LIKE "\R")MySQLGetBandwidthDL VYBERTE DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" NEBO ipaccess LIKE "\R") MySQ LGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" NEBO ipaccess LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1 " AND (ipaccess ="*" NEBO ipaccess JAKO "\R")

Ujistěte se, že jste nahradili řetězec ftpdpass skutečným heslem pro uživatele MySQL pureftpd v řádku MYSQLPassword! Vezměte prosím na vědomí, že používáme md5 jako metodu MYSQLCrypt, což znamená, že hesla uživatelů uložíme do databáze jako řetězec MD5, což je mnohem bezpečnější než používání hesel ve formátu prostého textu!

Poté vytvořte soubor /etc/pure-ftpd/conf/ChrootEveryone, který jednoduše obsahuje řetězec yes:

echo "yes"> /etc/pure-ftpd/conf/ChrootEveryone

Díky tomu bude PureFTPd chrootovat každého virtuálního uživatele v jeho domovském adresáři, takže nebude moci procházet adresáře a soubory mimo svůj domovský adresář.

Vytvořte také soubor /etc/pure-ftpd/conf/CreateHomeDir, který opět jednoduše obsahuje řetězec yes:

echo "yes"> /etc/pure-ftpd/conf/CreateHomeDir

Díky tomu PureFTPd vytvoří domovský adresář uživatele, když se uživatel přihlásí a domovský adresář ještě neexistuje.

Nakonec vytvořte soubor /etc/pure-ftpd/conf/DontResolve, který opět jednoduše obsahuje řetězec yes:

echo "yes"> /etc/pure-ftpd/conf/DontResolve

Díky tomu nebude PureFTPd vyhledávat názvy hostitelů, což může výrazně urychlit připojení a snížit využití šířky pásma.

Poté restartujeme PureFTPd:

/etc/init.d/pure-ftpd-mysql restart

6 Naplnění databáze a test

K naplnění databáze můžete použít shell MySQL:

mysql -u root -p
POUŽÍVEJTE pureftpd;

Nyní vytvoříme uživatele exampleuser se stavem 1 (což znamená, že jeho ftp účet je aktivní), tajným heslem (které bude uloženo zašifrované pomocí funkce MD5 MySQL), UID a GID 2001 (použijte ID uživatele a groupid uživatele/ skupinu, kterou jste vytvořili na konci druhého kroku!), domovský adresář /home/www.example.com, šířku pásma pro nahrávání a stahování 100 KB/s. (kilobajty za sekundu) a kvótu 50 MB:

INSERT INTO `ftpd` (`Uživatel`, `stav`, `Heslo`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `komentář`, `ipaccess`, ` QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100' , '', '*', '50', '0');
ukončit;

Nyní otevřete svůj FTP klientský program na vaší pracovní stanici (něco jako FileZilla, WS_FTP, SmartFTP nebo gFTP) a zkuste se připojit. Jako název hostitele použijete server1.example.com (nebo IP adresu systému), uživatelské jméno je exampleuser a heslo je tajné.

Pokud jste schopni se připojit - gratulujeme! Pokud ne, něco se pokazilo.

Nyní, pokud spustíte

ls -l /home

měli byste vidět, že adresář /home/www.example.com (domovský adresář uživatele příkladu) byl automaticky vytvořen a je vlastněn ftpuser a ftpgroup (uživatel/skupina, kterou jsme vytvořili na konci druhého kroku):

[e-mail chráněný]:~# ls -l /home
celkem 8
drwxr-xr-x 3 administrátor administrátor 4096 27. dubna 11:54 administrátor
drwxr-xr-x 2 ftpuser       ftpgroup       4096 3. července 22:23 www.example.com
[e-mail chráněn]:~#

7 Správa databáze

Pro většinu lidí je jednodušší, když mají grafický front-end k MySQL; proto můžete také použít phpMyAdmin (v tomto příkladu pod http://server1.example.com/phpmyadmin/) ke správě databáze pureftpd.

Kdykoli chcete vytvořit nového uživatele, musíte vytvořit záznam v tabulce ftpd, takže zde vysvětlím sloupce této tabulky:

Tabulka ftpd:

  • Uživatel:Jméno virtuálního uživatele PureFTPd (např. exampleuser).
  • stav:0 nebo 1. 0 znamená, že účet je deaktivován, uživatel se nemůže přihlásit.
  • Heslo:Heslo virtuálního uživatele. Ujistěte se, že používáte funkci MD5 MySQL k uložení hesla zašifrovaného jako řetězec MD5:
  • UID:ID uživatele ftp uživatele, kterého jste vytvořili na konci druhého kroku (např. 2001).
  • GID:ID skupiny skupiny ftp, kterou jste vytvořili na konci druhého kroku (např. 2001).
  • Dir:Domovský adresář virtuálního uživatele PureFTPd (např. /home/www.example.com). Pokud neexistuje, bude vytvořen při prvním přihlášení nového uživatele přes FTP. Virtuální uživatel bude uvězněn do tohoto domovského adresáře, tj. nebude mít přístup k jiným adresářům mimo svůj domovský adresář.
  • ULBandwidth:Šířka pásma pro nahrávání virtuálního uživatele v kB/s. (kilobajtů za sekundu). 0 znamená neomezené.
  • Šířka DLBandwidth:Šířka pásma stahování virtuálního uživatele v kB/s. (kilobajtů za sekundu). 0 znamená neomezené.
  • komentář:Zde můžete zadat libovolný komentář (např. pro vaši interní administrativu). Normálně necháváte toto pole prázdné.
  • ipaccess:Zde zadejte IP adresy, které se mohou připojit k tomuto FTP účtu. * znamená, že se může připojit jakákoli IP adresa.
  • QuotaSize:Úložný prostor v MB (nikoli kB, jako v ULBandwidth a DLBandwidth!), který může virtuální uživatel používat na FTP serveru. 0 znamená neomezené.
  • QuotaFiles:množství souborů, které může virtuální uživatel uložit na server FTP. 0 znamená neomezené.

8 anonymní FTP

Pokud si chcete vytvořit anonymní ftp účet (ftp účet, ke kterému se může přihlásit každý bez hesla), můžete to udělat takto:

Nejprve vytvořte uživatelský ftp (s homedir /home/ftp) a skupinový ftp:

groupadd ftp
useradd -s /bin/false -d /home/ftp -m -c "anonymní ftp" -g ftp ftp

Poté vytvořte soubor /etc/pure-ftpd/conf/NoAnonymous, který obsahuje řetězec no:

echo "no"> /etc/pure-ftpd/conf/NoAnonymous

S touto konfigurací PureFTPd umožní anonymní přihlášení.

Restartujte PureFTPd:

/etc/init.d/pure-ftpd-mysql restart

Poté vytvoříme adresář /home/ftp/incoming, který umožní anonymním uživatelům nahrávat soubory. Adresáři /home/ftp/incoming udělíme oprávnění 311, aby uživatelé mohli nahrávat, ale neviděli ani stahovat žádné soubory v tomto adresáři. Adresář /home/ftp bude mít oprávnění 555, což umožňuje prohlížení a stahování souborů:

cd /home/ftp
mkdir příchozí
chown ftp:nogroup příchozí/
chmod 311 příchozí/
cd ../
chmod 555 ftp/

Nyní se mohou anonymní uživatelé přihlásit a mohou stahovat soubory z /home/ftp, ale nahrávání je omezeno na /home/ftp/incoming (a jakmile je soubor nahrán do /home/ftp/incoming, nelze jej číst ani stahovat z tam; administrátor serveru jej musí nejprve přesunout do /home/ftp, aby jej zpřístupnil ostatním).

  • PureFTPd:http://www.pureftpd.org/
  • MySQL:http://www.mysql.com/
  • phpMyAdmin:http://www.phpmyadmin.net/
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Virtuální hosting s Proftpd a MySQL (včetně kvóty) na Ubuntu 14.04LTS

  2. Virtuální uživatelé a domény s Postfixem, Courier, MySQL a SquirrelMail (Ubuntu 13.10)

  3. Virtuální hosting s PureFTPd a MySQL (včetně správy kvót a šířky pásma) na CentOS 7.0

  1. FTP server s PureFTPd, MariaDB a virtuálními uživateli (včetně správy kvót a šířky pásma) na CentOS 7.2

  2. Virtuální hosting s PureFTPd a MySQL (včetně správy kvót a šířky pásma) na Ubuntu 7.10 (Gutsy Gibbon)

  3. Virtuální hosting s Proftpd a MySQL (včetně kvóty) na Ubuntu 8.04 LTS

  1. Virtuální hosting s PureFTPd a MySQL (včetně správy kvót a šířky pásma) na Ubuntu 8.10 (Intrepid Ibex)

  2. Virtuální hosting s Proftpd a MySQL (včetně kvóty) na Ubuntu 8.10

  3. Virtuální hosting s PureFTPd a MySQL (včetně správy kvót a šířky pásma) na Ubuntu 9.04 (Jaunty Jackalope)