yum install vsftpd
chkconfig vsftpd on
service vsftpd start
Domyślna konfiguracja pozwala na logowanie użytkowników posiadających konta w systemie, przy użyciu ich haseł.
! Domyślnie zalogowania anonimowe są dozwolone!
Można zmienić domyślne zachowanie i autoryzować nie tylko użytkowników systemowych, ale także na podstawie specjalnej listy. Formalnie będą oni działać jako przypisany użytkownik, np. ftpuser.
Pamiętajmy, że konfiguracja ta odbywa się przez PAM, w pliku /etc/pam.d/vsftpd
Domyślny plik:
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
BDB
W przypadku autoryzacji przez bazę db, lepiej utworzyć osobny plik i wskazać go w konfiguracji
/etc/pam.d/vsftpd-db
Wybór konfiguracji PAM poprzez pam_service_name=vsftpd-db
session optional pam_keyinit.so force revoke
auth required /lib64/security/pam_userdb.so debug db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so debug db=/etc/vsftpd/login
Plik z hasłami będzie znajdował się w /etc/vsftpd/login.db
Format pliku źródłowego (login.txt):
użytkownik1
hasło1
użytkownik2
hasło2
(Nowa linia na końcu. Bez niej może nie działać!)
Generowanie pliku haseł:
db_load -T -t hash -f login.txt /etc/vsftpd/login.db
Przez MySQL
Instalujemy pam_mysql
/etc/pam.d/vsftpd-mysql
auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
Test połączenia z MySQL, dodanie bazy i użytkownika
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;
Tworzenie tabeli:
CREATE TABLE 'accounts' ( 'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 'username' VARCHAR(30) NOT NULL , 'pass' VARCHAR( 50 ) NOT NULL , UNIQUE ( 'username' ) ) ENGINE = MYISAM ;
quit;
Dodanie użytkownika systemowego
vsftpd:*:1003:1003:User &:/home/vsftpd:/sbin/nologin
Dodawanie użytkownika
#mysql -u root
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES(’testuser’, PASSWORD(’secret’));
quit;
_______________________________________________________
problem, z którym się spotkałem: cannot change directory:/home/username
Domyślnie włączony jest selinux, który powoduje ten problem. Rozwiązanie:
setsebool -P ftp_home_dir 1
Oraz dodanie jednej linii do pliku „vsftpd.conf”:
session_support=YES
service vsftpd restart
Problem wynika z faktu, że vsftpd domyślnie nie korzysta z modułów sesji w PAM.
http://www.opennet.ru/base/net/vsftpd_overview.txt.html szczegółowy artykuł na ten temat
