1. Instalace vsftp, MySQL a phpmyadmin
Vsftpd nemá v sobě podporu MySQL, takže použijeme PAM k ověření vůči MySQL databázi.
| apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin |
Zobrazí se vám tyto otázky:
Nové heslo MySQL uživatele "root": <-- vaserootheslododatabaze
Zopakujte heslo MySQL uživatele "root": <-- vaserootheslododatabaze
Webový server, který se má nastavit automaticky: <-- apache2
Nastavit databázi pro phpmyadmin pomocí dbconfig-common?: <-- ne
2. Vytvoření databáze pro vsftpd
Nyní vytvořníme databázi, která se bude jmenovat vsftpd a uživatele vsftpd, kterého bude využívat vsftpd daemon pro připojení k databázi vsftpd.
| mysql -u root -p |
CREATE DATABASE vsftpd; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdheslo'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdheslo'; FLUSH PRIVILEGES; |
Nahraď ftpdheslo vlastním heslem. Nyní vytvoříme databázové tabulky:
USE vsftpd; 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; |
3. Konfigurace vsftpd
Nyní vytvoříme uživatele, pod kterým vsftpd poběží, a adresáře virtuálních uživatelů, které budou v /home/vsftpd.
| useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd |
Poté vytvoříme zálohu originál souboru /etc/vsftpd.conf a vytvoříme náš vlastní.
cp /etc/vsftpd.conf /etc/vsftpd.conf_orig cat /dev/null > /etc/vsftpd.conf vi /etc/vsftpd.conf |
Soubor by měl obsahovat toto:
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES nopriv_user=vsftpd chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf |
Podrobněji je konfigurace popsána na http://vsftpd.beasts.org/vsftpd_conf.html.
Kdybysme později chtěli přepsat globání nastavení pro konkrétního uživatele, tak můžeme pomocí konfigurační souborů, vytvoříme proto adresář:
| mkdir /etc/vsftpd_user_conf |
Nyní musíme nastavit PAM aby používal MySQL databázi pro ověření uživatelů místo /etc/passwd nebo /etc/shadow.
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig cat /dev/null > /etc/pam.d/vsftpd vi /etc/pam.d/vsftpd |
A vlože do něj:
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 |
Nezapomeň nahradit ftpdheslo za své, které jsi vytvářel v bodu 2.
Pak restartujeme vsftpd:
| /etc/init.d/vsftpd restart |
4. Tvorba virtuálního uživatele
Přihlásíme se do databáze a vytvoříme prvního uživatele s názvem test a heslem heslo (změňte za vlastní).
mysql -u root -p USE vsftpd; INSERT INTO accounts (username, pass) VALUES('test', PASSWORD('heslo')); quit; |
Domovský adresář uživatele je /home/vsftpd/test. vsftpd bohužel neumí vytvářet adresáře automaticky, tak ho musíme vytvořit ručně:
mkdir /home/vsftpd/test chown vsftpd:nogroup /home/vsftpd/test |
Nyní je FTP server nastaven a první uživatel připraven na vyzkoušení, jestli FTP funguje.