GNU/Linux >> Belajar Linux >  >> Ubuntu

Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 9.10 (Karmic Koala)

Dokumen ini menjelaskan cara menginstal server PureFTPd yang menggunakan pengguna virtual dari database MySQL alih-alih pengguna sistem nyata. Ini jauh lebih berkinerja dan memungkinkan untuk memiliki ribuan pengguna ftp pada satu mesin. Selain itu saya akan menunjukkan penggunaan kuota dan batas bandwidth upload/download dengan pengaturan ini. Kata sandi akan disimpan terenkripsi sebagai string MD5 dalam database.

Untuk administrasi database MySQL Anda dapat menggunakan alat berbasis web seperti phpMyAdmin yang juga akan diinstal di howto ini. phpMyAdmin adalah antarmuka grafis yang nyaman yang berarti Anda tidak perlu dipusingkan dengan baris perintah.

Tutorial ini didasarkan pada Ubuntu 9.10. Anda seharusnya sudah menyiapkan sistem server Ubuntu 9.10 dasar, seperti yang dijelaskan dalam delapan bab pertama dari tutorial ini:https://www.howtoforge.com/perfect-server-ubuntu-9.10-karmic-koala-ispconfig-2

Howto ini dimaksudkan sebagai panduan praktis; itu tidak mencakup latar belakang teoretis. Mereka diperlakukan di banyak dokumen lain di web.

Dokumen ini datang tanpa jaminan apapun! Saya ingin mengatakan bahwa ini bukan satu-satunya cara untuk mengatur sistem seperti itu. Ada banyak cara untuk mencapai tujuan ini tetapi ini adalah cara yang saya ambil. Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!

1 Catatan Awal

Dalam tutorial ini saya menggunakan hostname server1.example.com dengan alamat IP 192.168.0.100. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.

Pastikan Anda login sebagai root (ketik

sudo su

untuk menjadi root), karena kita harus menjalankan semua langkah dari tutorial ini sebagai pengguna root.

2 Instal MySQL Dan phpMyAdmin

Ini semua dapat diinstal dengan satu perintah:

aptitude install mysql-server mysql-client phpmyadmin apache2

Anda akan ditanyai pertanyaan berikut:

Kata sandi baru untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Server web untuk mengkonfigurasi ulang secara otomatis:<-- apache2
Konfigurasikan database untuk phpmyadmin dengan dbconfig-common? <-- Tidak

3 Instal PureFTPd Dengan Dukungan MySQL

Untuk Ubuntu 9.10 tersedia paket pure-ftpd-mysql yang telah dikonfigurasi sebelumnya. Instal seperti ini:

aptitude install pure-ftpd-mysql

Kemudian kami membuat grup ftp (ftpgroup) dan pengguna (ftpuser) tempat semua pengguna virtual kami akan dipetakan. Ganti group- dan userid 2001 dengan nomor yang gratis di sistem Anda:

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

4 Buat Database MySQL Untuk PureFTPd

Sekarang kita membuat database bernama pureftpd dan pengguna MySQL bernama pureftpd yang nantinya akan digunakan daemon PureFTPd untuk terhubung ke database pureftpd:

mysql -u root -p
BUAT DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* UNTUK 'pureftpd'@'localhost' DIIDENTIFIKASI DENGAN 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* KE 'pureftpd'@'localhost.localdomain' DIIDENTIFIKASI OLEH 'ftpdpass';
FLUSH PRIVILEGES;

Ganti string ftpdpass dengan kata sandi apa pun yang ingin Anda gunakan untuk pureftpd pengguna MySQL. Masih di shell MySQL, kita membuat tabel database yang kita butuhkan (ya, hanya ada satu tabel!):

GUNAKAN pureftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar (64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar( 128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KUNCI (Pengguna),
UNIQUE KEY Pengguna (Pengguna)
) TYPE=MyISAM;
berhenti;

Seperti yang mungkin Anda perhatikan, dengan berhenti; perintah kami telah meninggalkan shell MySQL dan kembali ke shell Linux.

BTW, (Saya berasumsi bahwa nama host sistem server ftp Anda adalah server1.example.com) Anda dapat mengakses phpMyAdmin di http://server1.example.com/phpmyadmin/ (Anda juga dapat menggunakan alamat IP alih-alih server1 .example.com) di browser dan masuk sebagai pengguna pureftpd. Kemudian Anda dapat melihat database. Nanti Anda dapat menggunakan phpMyAdmin untuk mengelola server PureFTPd Anda.

5 Konfigurasi PureFTPd

Edit /etc/pure-ftpd/db/mysql.conf. Seharusnya terlihat seperti ini:

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, cleartext, crypt() atau kata sandi () - md5 SANGAT DIREKOMENDASIKAN pada cleartextMYSQLCrypt md5MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" ATAU ipaccess LIKE "\R")MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=" \L"AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" ATAU ipaccess LIKE "\R")MySQ LGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess ="*" OR ipaccess LIKE "\R")MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1 " DAN (ipaccess ="*" ATAU ipaccess LIKE "\R")

Pastikan Anda mengganti string ftpdpass dengan kata sandi asli untuk pureftpd pengguna MySQL di baris MYSQLPassword! Harap dicatat bahwa kami menggunakan md5 sebagai metode MYSQLCrypt, yang berarti kami akan menyimpan kata sandi pengguna sebagai string MD5 dalam database yang jauh lebih aman daripada menggunakan kata sandi teks biasa!

Kemudian buat file /etc/pure-ftpd/conf/ChrootEveryone yang berisi string yes:

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

Ini akan membuat PureFTPd melakukan chroot setiap pengguna virtual di direktori home-nya sehingga dia tidak akan dapat menelusuri direktori dan file di luar direktori home-nya.

Buat juga file /etc/pure-ftpd/conf/CreateHomeDir yang lagi-lagi hanya berisi string yes:

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

Ini akan membuat PureFTPd membuat direktori home pengguna ketika pengguna login dan direktori home belum ada.

Terakhir buat file /etc/pure-ftpd/conf/DontResolve yang lagi-lagi hanya berisi string ya:

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

Ini akan membuat PureFTPd tidak mencari nama host yang secara signifikan dapat mempercepat koneksi dan mengurangi penggunaan bandwidth.

Setelah itu, kita restart PureFTPd:

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

6 Mengisi Database Dan Menguji

Untuk mengisi database Anda dapat menggunakan shell MySQL:

mysql -u root -p
GUNAKAN pureftpd;

Sekarang kita buat user exampleuser dengan status 1 (yang berarti akun ftp-nya aktif), password secret (yang akan disimpan dienkripsi menggunakan fungsi MD5 MySQL), UID dan GID 2001 (gunakan userid dan groupid dari user/ grup yang Anda buat di akhir langkah kedua!), direktori home /home/www.example.com, bandwidth unggah dan unduh 100 KB/dtk. (kilobyte per detik), dan kuota 50 MB:

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, ` QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100' , '', '*', '50', '0');
berhenti;

Sekarang buka program klien FTP Anda di stasiun kerja Anda (seperti FileZilla, WS_FTP, SmartFTP atau gFTP) dan coba sambungkan. Sebagai nama host, Anda menggunakan server1.example.com (atau alamat IP sistem), nama pengguna adalah pengguna contoh, dan kata sandinya rahasia.

Jika Anda dapat terhubung - selamat! Jika tidak, ada yang tidak beres.

Sekarang, jika Anda menjalankan

ls -l /home

Anda akan melihat bahwa direktori /home/www.example.com (direktori home pengguna example) telah dibuat secara otomatis, dan direktori tersebut dimiliki oleh ftpuser dan ftpgroup (pengguna/grup yang kita buat di akhir langkah kedua):

[dilindungi email]:~# ls -l /home
total 8
drwxr-xr-x 2 administrator administrator 4096 2010-01-04 15:38 administrator
drwxr-xr -x 2 ftpuser       ftpgroup      4096 2010-01-04 16:38 www.example.com
[email protected]:~#

7 Administrasi Basis Data

Bagi kebanyakan orang akan lebih mudah jika mereka memiliki front-end grafis ke MySQL; oleh karena itu Anda juga dapat menggunakan phpMyAdmin (dalam contoh ini di bawah http://server1.example.com/phpmyadmin/) untuk mengelola database pureftpd.

Setiap kali Anda ingin membuat pengguna baru, Anda harus membuat entri di tabel ftpd jadi saya akan menjelaskan kolom tabel ini di sini:

tabel ftpd:

  • Pengguna:Nama pengguna PureFTPd virtual (mis. pengguna contoh).
  • status:0 atau 1. 0 berarti akun dinonaktifkan, pengguna tidak dapat login.
  • Kata Sandi:Kata sandi pengguna virtual. Pastikan Anda menggunakan fungsi MD5 MySQL untuk menyimpan kata sandi yang dienkripsi sebagai string MD5:
  • UID:Userid dari pengguna ftp yang Anda buat di akhir langkah kedua (mis. 2001).
  • GID:Groupid dari grup ftp yang Anda buat di akhir langkah kedua (mis. 2001).
  • Dir:Direktori beranda pengguna PureFTPd virtual (mis. /home/www.example.com). Jika tidak ada, maka akan dibuat saat pengguna baru login pertama kali melalui FTP. Pengguna virtual akan di-jail ke dalam direktori home ini, yaitu, dia tidak dapat mengakses direktori lain di luar direktori home-nya.
  • ULBandwidth:Unggah bandwidth pengguna virtual dalam KB/dtk. (kilobyte per detik). 0 berarti tidak terbatas.
  • DLBandwidth:Unduh bandwidth pengguna virtual dalam KB/detik. (kilobyte per detik). 0 berarti tidak terbatas.
  • komentar:Anda dapat memasukkan komentar apa pun di sini (misalnya untuk administrasi internal Anda) di sini. Biasanya Anda membiarkan kolom ini kosong.
  • ipaccess:Masukkan alamat IP di sini yang diizinkan untuk terhubung ke akun FTP ini. * berarti alamat IP apa pun diizinkan untuk terhubung.
  • QuotaSize:Ruang penyimpanan dalam MB (bukan KB, seperti pada ULBandwidth dan DLBandwidth!) yang diizinkan untuk digunakan oleh pengguna virtual di server FTP. 0 berarti tidak terbatas.
  • QuotaFiles:jumlah file yang boleh disimpan oleh pengguna virtual di server FTP. 0 berarti tidak terbatas.

8 FTP Anonim

Jika Anda ingin membuat akun ftp anonim (akun ftp yang dapat digunakan semua orang untuk masuk tanpa kata sandi), Anda dapat melakukannya seperti ini:

Pertama buat user ftp (dengan homedir /home/ftp) dan group ftp:

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

Kemudian buat file /etc/pure-ftpd/conf/NoAnonymous yang berisi string no:

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

Dengan konfigurasi ini, PureFTPd akan mengizinkan login anonim.

Mulai ulang PureFTPd:

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

Kemudian kita membuat direktori /home/ftp/incoming yang memungkinkan pengguna anonim untuk mengunggah file. Kami akan memberikan izin direktori /home/ftp/incoming dari 311 sehingga pengguna dapat mengunggah, tetapi tidak melihat atau mengunduh file apa pun di direktori itu. Direktori /home/ftp akan memiliki izin 555 yang memungkinkan melihat dan mengunduh file:

cd /home/ftp
mkdir masuk
chown ftp:nogroup masuk/
chmod 311 masuk/
cd ../
chmod 555 ftp/

Sekarang pengguna anonim dapat login, dan mereka dapat mendownload file dari /home/ftp, tetapi upload dibatasi ke /home/ftp/incoming (dan setelah file diupload ke /home/ftp/incoming, file tersebut tidak dapat dibaca atau diunduh dari di sana; admin server harus memindahkannya ke /home/ftp terlebih dahulu agar tersedia untuk orang lain).

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

Ubuntu
  1. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 14.04LTS

  2. Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 13.10)

  3. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Pada CentOS 7.0

  1. Server FTP dengan PureFTPd, MariaDB dan Pengguna Virtual (termasuk Manajemen Kuota dan Bandwidth) di CentOS 7.2

  2. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 7.10 (Gutsy Gibbon)

  3. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.04 LTS

  1. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 8.10 (Intrepid Ibex)

  2. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.10

  3. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 9.04 (Jaunty Jackalope)