Start/microHowto/Debian-Etch-vsftpd-i-postgresql

Kilka słów od ojca prowadzącego: Celem tego tekstu jest małe howto jak postawić wlasny serwer ftp z baza użytkowników ktora nie była by systemowa. Czyli będziemy ich autoryzowac po zewnetrznej bazie danych.

Wiec zaczynamy od zainstalowania postgres'a vsftp i pam-pgsql

apt-get install vsftpd libpam-pgsql postgresql-8.2

Zaczynamy od konfiguracji vsftp. Edytujemy plik: /etc/vsftpd.conf zaznaczamy/dopisujemy opcje:

local_enable=YES
guest_enable=YES
guest_username=vsftpv
virtual_use_local_privs=YES
write_enable=YES
user_sub_token=$USER
local_root=/home/ftp/$USER

reszte opcji w/g uznania. Uzytkownicy kazdy bedzie mial swoj katalog w /home/ftp/. Jesli chcemy miec zbiorowy serwer ftp to wyrzucamy 2 ostanie liniki. Tu odsyłam do mauala z configa.

Dodajemy uzytkownika vsftpv czyli wlascicela calego ftp ;) i tworzymy mu katalog domowy /home/ftp robimy to z konta root'a

mkdir /home/ftp
useradd vsftpv -d /home/ftp
chown vsftpv:users /home/ftp
chmod 755 /home/ftp

Nastepnie tworzymy baze danych,tabele,uzytwkownika bazy i naszego uzytkownika ftp'a

su postgres
createdb vsftp
createuser vsftpident -W -S -D -R
   [tu wprowadzamy haslo naszego uzytkownika ja przyjalem na cele opisu
haslo 'DbPass']
psql vsftp
Welcome to psql 8.2.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

vsftp=# create table users(name varchar(10), pass varchar(40), expired
boolean, needchangepass boolean);
vsftp=# grant select on users to vsftpident;

i dodajemy naszego uzytkownika "FtpUser?" z haslem "ftpPass"

vsftp=# insert into users values('FtpUser', md5('ftpPass'),'f','f');
vsftp=# \q

Tworzymy katalog naszemu uzytkownikowi FtpUser? robimy to z konta root'a:

mkdir /home/ftp/FtpUser
chown vsftpv:users /home/ftp/FtpUser
chmod 755 /home/ftp/FtpUser

Zawartosc pliku /etc/pam.d/vsftpd:

auth required pam_pgsql.so
account required pam_pgsql.so
password required pam_pgsql.so

tworzymy plik /etc/pam_pgsql.conf czyli domyslny plik konfiguracyjny z ktorego pgsql bedzie bralo parametry do autoryzacji. I ma on miec zawartosc:

database=vsftp
user=vsftpident
password=DbPass
table=users
user_column=name
pwd_column=pass
expired_column=expired
newtok_column=needchangepass
pw_type=md5

restartujemy vsftpd i logujemy sie na naszego usera:

/etc/init.d/vsftpd restart

ftp nasz.serwer
Connected to nasz.serwer
220 Welcome to FTP service.
Name (nasz.serwer:z0nk): FtpUser
331 Please specify the password.
Password: ftpPass
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Czyli o to nam chodziło ;)

W razie jakichkolwiek problemow nalezy jeszcze sprawdzic plik /etc/postgres/8.2/main/pg_hba.conf i odpowiednio zmienic sposob autoryzacji. w razie czego patrzec w logi /var/log/auth.log i systemowe.

Autor: z0nk


Google Polska Encyklopedia sieciowa
Asterix - Debian Wiki