Dokumen ini menjelaskan cara menginstal server Proftpd 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 dengan pengaturan ini.
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 Debian Lenny (Debian 5.0). Anda seharusnya sudah menyiapkan sistem dasar Debian Lenny, seperti yang dijelaskan dalam tujuh bab pertama dari tutorial ini:https://www.howtoforge.com/perfect-server-debian-lenny-ispconfig2
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.
2 Instal MySQL Dan phpMyAdmin
Ini semua dapat diinstal dengan satu perintah:
aptitude install mysql-server mysql-client phpmyadmin apache2
Anda akan diminta untuk memberikan kata sandi untuk pengguna root MySQL - kata sandi ini berlaku untuk pengguna [dilindungi email] serta [dilindungi email], jadi kami tidak perlu menentukan kata sandi root MySQL secara manual nanti:
Kata sandi baru untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Selain itu, Anda akan melihat pertanyaan berikut:
Server web untuk mengkonfigurasi ulang secara otomatis:<-- apache2
3 Instal Proftpd Dengan Dukungan MySQL
Untuk Debian tersedia paket proftpd-mysql yang telah dikonfigurasi sebelumnya. Instal sebagai daemon mandiri seperti ini:
aptitude install proftpd-mod-mysql
Anda akan ditanya pertanyaan berikut:
Jalankan proftpd:<-- standalone
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 "proftpd user" -g ftpgroup ftpuser
4 Membuat Database MySQL Untuk Proftpd
Sekarang kita membuat database bernama ftp dan pengguna MySQL bernama proftpd yang nantinya akan digunakan daemon proftpd untuk terhubung ke database ftp:
mysql -u root -p
BUAT DATABASE ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* UNTUK 'proftpd'@'localhost' DIIDENTIFIKASI DENGAN 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* UNTUK 'proftpd'@'localhost.localdomain' DIIDENTIFIKASI DENGAN 'sandi';
HAK ISTIMEWA FLUSH;
Ganti kata sandi string dengan kata sandi apa pun yang ingin Anda gunakan untuk proftpd pengguna MySQL. Masih di shell MySQL, kita membuat tabel database yang kita butuhkan:
GUNAKAN ftp;
BUAT TABEL ftpgroup (
nama grup varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';
BUAT TABEL ftpquotalimits (
nama 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( 20) unsigned NOT NULL default '0',
bytes_out_avail bigint(20) unsigned NOT NULL default '0',
bytes_xfer_avail bigint(20) unsigned NOT NULL default '0',
files_in_avail int (10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE =MyISAM;
BUAT TABEL ftpquotatallies (
nama varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user ',
bytes_in_used bigint(20) unsigned NOT NULL default '0',
bytes_out_used bigint(20) unsigned NOT NULL default '0',
bytes_xfer_used bigint(20) unsigned NOT NULL default ' 0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE ftpuser (
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 '5500',
gid smallint(6) NOT NULL default '5500',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
diakses 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';
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 dapat menggunakan alamat IP alih-alih server1. example.com) di browser dan masuk sebagai proftpd. Kemudian Anda dapat melihat database. Nanti Anda dapat menggunakan phpMyAdmin untuk mengelola server Proftpd Anda.
5 Konfigurasikan Proftpd
Buka /etc/proftpd/modules.conf...
vi /etc/proftpd/modules.conf
... dan aktifkan tiga modul berikut:
[...]# Instal proftpd-mod-mysql atau proftpd-mod-pgsql untuk menggunakan iniLoadModule mod_sql.c[...]# Instal proftpd-mod-mysql untuk menggunakan thisLoadModule mod_sql_mysql.c[...]# Instal proftpd-mod-pgsql atau proftpd-mod-mysql untuk menggunakan thisLoadModule mod_quotatab_sql.c[...] |
Kemudian buka /etc/proftpd/proftpd.conf; komentari bagian kuota dan batalkan komentar pada baris Sertakan /etc/proftpd/sql.conf:
vi /etc/proftpd/proftpd.conf
[...]# |
Selanjutnya buka /etc/proftpd/sql.conf dan buat seperti berikut:
vi /etc/proftpd/sql.conf
## Contoh konfigurasi Proftpd untuk otentikasi berbasis SQL.## (Ini tidak digunakan jika Anda lebih memilih otentikasi SQL berbasis PAM)# |
Pastikan Anda mengganti kata sandi string dengan kata sandi asli untuk proftpd pengguna MySQL di baris SQLConnectInfo!
Kemudian restart Proftpd:
/etc/init.d/proftpd mulai ulang
6 Mengisi Database Dan Menguji
Untuk mengisi database Anda dapat menggunakan shell MySQL:
mysql -u root -p
GUNAKAN ftp;
Pertama kita buat entri di tabel ftpgroup. Ini berisi nama grup, grupid, dan nama pengguna grup/pengguna ftp yang kami buat di akhir langkah kedua (ganti ID grup dengan tepat jika Anda menggunakan yang lain selain 2001):
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) NILAI ('ftpgroup', 2001, 'ftpuser');
Sekarang kita selesai dengan tabel ftpgroup. Kami tidak perlu membuat entri lebih lanjut di sini. Setiap kali Anda membuat pengguna ftp virtual baru, Anda melakukannya di tabel ftpquotalimits dan ftpuser. Jadi mari kita buat contoh pengguna pertama kita dengan kuota 15MB dan rahasia kata sandi (kita masih di shell MySQL):
INSERT INTO `ftpquotalimits` (`name`, `quota_type`, `per_session`, `limit_type`, `bytes_in_avail`, `bytes_out_avail`, `bytes_xfer_avail`, `files_in_avail`, `file_avail`), VALUE_file `avail_file`, `file_keluar` ('pengguna contoh', 'pengguna', 'benar', 'keras', 15728640, 0, 0, 0, 0, 0);
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) NILAI (1, 'exampleuser', 'secret', 2001, 2001, '/home/www.example.com', '/sbin/nologin', 0, '', '');
berhenti;
(Jangan lupa untuk mengganti groud- dan userid 2001 dengan tepat di pernyataan INSERT terakhir jika Anda menggunakan nilai selain dalam tutorial ini!)
Sekarang buka program klien FTP Anda di stasiun kerja Anda (seperti WS_FTP atau SmartFTP jika Anda menggunakan sistem Windows atau gFTP di desktop Linux) 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):
server1:~# ls -l /home/
total 12
drwxr-xr-x 2 administrator administrator 4096 2009-02-16 13:18 administrator
drwxr-xr-x 2 ftp nogroup 4096 2009-06-09 17:37 ftp
drwx------ 2 ftpuser ftpgroup 4096 2009-06-09 17:59 www.example.com
server1:~# /pra>
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 ftp.
Setiap kali Anda membuat pengguna baru, Anda hanya perlu membuat entri di tabel ftpquotalimits dan ftpuser, jadi saya akan menjelaskan kolom tabel ini di sini:
tabel ftpuser:
Kolom penting adalah ini (yang lain ditangani oleh MySQL atau Proftpd secara otomatis, jadi jangan mengisinya secara manual!):
- userid:Nama pengguna Proftpd virtual (misalnya pengguna contoh).
- passwd:Kata sandi pengguna yang tidak terenkripsi (yaitu teks yang jelas).
- 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).
- homedir:Direktori home dari pengguna virtual Proftpd (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.
- shell:Tidak apa-apa jika Anda mengisi /sbin/nologin di sini secara default.
Tabel ftpquotalimits:
Kolom penting adalah ini (yang lain ditangani oleh MySQL atau Proftpd secara otomatis, jadi jangan mengisinya secara manual!):
- nama:Nama pengguna Proftpd virtual (misalnya pengguna contoh).
- quota_type:pengguna atau grup. Biasanya, kami menggunakan pengguna di sini.
- per_session:benar atau salah. true artinya batas kuota hanya berlaku untuk satu sesi. Misalnya, jika pengguna memiliki kuota 15 MB, dan dia telah mengunggah 15 MB selama sesi saat ini, maka dia tidak dapat mengunggah apa pun lagi. Tetapi jika dia logout dan masuk lagi, dia kembali memiliki 15 MB yang tersedia. false artinya, pengguna memiliki 15 MB, tidak peduli apakah dia logout dan login lagi.
- limit_type:keras atau lunak. Batas kuota keras adalah batas yang tidak boleh terlampaui, sedangkan kuota lunak dapat dilampaui untuk sementara. Biasanya Anda menggunakan hard di sini.
- bytes_in_avail:Batas upload dalam byte (mis. 15728640 untuk 15 MB). 0 berarti tidak terbatas.
- bytes_out_avail:Batas unduhan dalam byte. 0 berarti tidak terbatas.
- bytes_xfer_avail:Batas transfer dalam byte. Jumlah unggahan dan unduhan yang boleh dilakukan pengguna. 0 berarti tidak terbatas.
- files_in_avail:Batas upload dalam file. 0 berarti tidak terbatas.
- files_out_avail:Batas unduhan dalam file. 0 berarti tidak terbatas.
- files_xfer_avail:Batas transfer dalam file. 0 berarti tidak terbatas.
Tabel ftpquotatallies digunakan oleh Proftpd secara internal untuk mengelola kuota sehingga Anda tidak perlu membuat entri di sana!
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 kita buat user dan group dengan nama anonymous_ftp. Pengguna memiliki direktori home /home/anonymous_ftp:
groupadd -g 2002 anonymous_ftp
useradd -u 2002 -s /bin/false -d /home/anonymous_ftp -m -c "Pengguna FTP Anonim" -g anonymous_ftp anonymous_ftp
(Ganti 2002 dengan grup-/userid yang gratis di sistem Anda.)
Kemudian kita buat direktori /home/anonymous_ftp/incoming yang memungkinkan pengguna anonim untuk mengupload file:
mkdir /home/anonymous_ftp/incoming
chown anonymous_ftp:nogroup /home/anonymous_ftp/incoming
Dan terakhir, buka /etc/proftpd/proftpd.conf dan tambahkan arahan berikut ke dalamnya:
vi /etc/proftpd/proftpd.conf
[...] |
Akhirnya restart Proftpd:
/etc/init.d/proftpd mulai ulang
Sekarang pengguna anonim dapat masuk, dan mereka dapat mengunduh file dari /home/anonymous_ftp, tetapi unggahan dibatasi ke /home/anonymous_ftp/incoming (dan setelah file diunggah ke /home/anonymous_ftp/incoming, file tersebut tidak dapat dibaca atau diunduh dari di sana; admin server harus memindahkannya ke /home/anonymous_ftp terlebih dahulu agar tersedia untuk orang lain).
(Harap diperhatikan:Anda hanya dapat memiliki satu akun ftp anonim per alamat IP!)
9 Referensi
Mandrake 10.1 - Proftpd + otentikasi MySQL + Cara Kuota:http://www.khoosys.net/single.htm?ipg=848
10 Tautan
- Proftpd:http://www.proftpd.org
- MySQL:http://www.mysql.com
- phpMyAdmin:http://www.phpmyadmin.net
- Debian:http://www.debian.org
-
Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 7.10 (Gutsy Gibbon)
-
Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.04 LTS
-
Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 8.10 (Intrepid Ibex)
-
Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.10
-
Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 9.04 (Jaunty Jackalope)
-
Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 9.10 (Karmic Koala)