Memasang FTP Server

Foto os

Upload dan download file lebih mudah dengan FTP. Tulisan ini memuat langkah pemasangan servernya.

Konfigurasi yang akan dibuat adalah:

  1. Menggunakan virtual account, bukan Linux user
  2. Username dan password tersimpan di tabel, menggunakan database PostgreSQL

Konfigurasi ini dengan alasan security dan kemudahan administrasi.

  1. Buat database-nya.
    $ sudo su
    # su postgres
    $ psql template1
     
    CREATE USER ftp PASSWORD '1234';
    CREATE DATABASE ftp OWNER ftp;

    Keluarlah dari psql, dan login kembali sebagai ftp:

    $ psql -U ftp ftp
     
    CREATE TABLE users(
    username varchar(20) NOT NULL PRIMARY KEY,
    password varchar(32) NOT NULL,
    dir varchar(128) NOT NULL);

  2. Keluarlah dari user postgres, kembali sebagai superuser. Download dan pasang servernya.
    # apt-get install pure-ftpd-postgresql
  3. Buatlah user yang akan digunakan oleh daemon sebagai pemilik direktori seluruh user.
    # groupadd ftpgroup
    # useradd -g ftpgroup -d /dev/null -s /etc ftpuser
    # mkdir /home/ftp
    # chown ftpuser.ftpgroup /home/ftp
  4. Edit /etc/pure-ftpd/db/postgresql.conf.
    PGSQLServer     localhost
    PGSQLPort       5432
    PGSQLUser       ftp
    PGSQLPassword   1234
    PGSQLDatabase   ftp
    PGSQLCrypt      md5
    PGSQLGetPW      SELECT password FROM users WHERE username='\L'
    PGSQLDefaultUID ftpuser
    PGSQLDefaultGID ftpgroup
    PGSQLGetDir     SELECT dir FROM users WHERE username='\L'
  5. Restart daemon-nya:
    # /etc/init.d/pure-ftpd-postgresql stop
    # /etc/init.d/pure-ftpd-postgresql start

Pemasangan selesai. Sekarang mulailah membuat user ftp bernama beni:

$ psql -U ftp ftp
 
INSERT INTO users(username,password,dir)
SELECT 'beni',md5('1234'),'/home/ftp/beni/./';

Pemberian akhiran ./ pada /home/ftp/beni membuat user ini tidak bisa ke direktori lain diluar wilayahnya.
Lanjutkan dengan membuat direktorinya:
$ sudo su
# mkdir /home/ftp/beni
# chown ftpuser.ftpgroup /home/ftp/beni

Coba:

$ ftp localhost
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 14:58. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:sugiana): beni
331 User beni OK. Password required
Password:
230-User beni has group access to:  1002
230 OK. Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Pastikan ia tidak bisa ke direktori lain yang bukan wilayahnya:

ftp> cd /home
 
550 Can't change directory to /home: No such file or directory

Lalu buatlah direktori:

ftp> mkdir test
257 "test" : The directory was successfully created
ftp>  

Keluarlah dan lihat apa direktorinya terbentuk:

$ ls -l /home/ftp/beni/
 
drwxr-xr-x 2 ftpuser ftpgroup 4096 2007-10-03 15:27 test