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
|
![]() |
|