yum install vsftpd
chkconfig vsftpd on
service vsftpd start
Bei den Standardeinstellungen werden Benutzer mit Systemkonten und deren Passwörtern zugelassen.
! Standardmäßig sind anonyme Logins erlaubt!
Das Standardverhalten kann geändert werden, um nicht nur Systembenutzer, sondern auch Benutzer aus einer speziellen Liste zu autorisieren. Formal arbeiten diese dann unter dem angegebenen Benutzer, z. B. ftpuser.
Denken Sie daran, dass dies über PAM konfiguriert wird, in /etc/pam.d/vsftpd
Die Standarddatei:
#%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
Für die Autorisierung über die Datenbank ist es besser, eine separate Datei zu erstellen und diese in der Konfiguration anzugeben:
/etc/pam.d/vsftpd-db
Die Auswahl der PAM-Konfiguration erfolgt über 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
Die Passwortdatei befindet sich dann unter /etc/vsftpd/login.db
Das Format der Originaldatei (login.txt):
user1
password1
user2
password2
(Zeilenumbruch am Ende ist erforderlich. Ohne ihn funktioniert es möglicherweise nicht!)
Generierung der Passwortdatei:
db_load -T -t hash -f login.txt /etc/vsftpd/login.db
Durch MySQL
pam_mysql installieren
/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
Die MySQL-Funktionalität testen, Datenbank und Benutzer hinzufügen:
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;
Tabelle erstellen:
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;
Systembenutzer hinzufügen:
vsftpd:*:1003:1003:User &:/home/vsftpd:/sbin/nologin
Benutzer hinzufügen:
#mysql -u root
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES(’testuser’, PASSWORD(’secret’));
quit;
_______________________________________________________
mein aufgetretenes Problem: cannot change directory:/home/username
Standardmäßig ist SELinux aktiviert, was das Problem verursacht. Die Lösung ist:
setsebool -P ftp_home_dir 1
Und das Hinzufügen einer Zeile in „vsftpd.conf“:
session_support=YES
service vsftpd restart
Das Problem tritt auf, weil vsftpd standardmäßig keine Module des Session-Dienstes in PAM verwendet.
http://www.opennet.ru/base/net/vsftpd_overview.txt.html Detaillierter Artikel zu diesem Thema
