1

Нашел в сети следующий алгоритм по установке vsftpd (база пользователей mysql) на CentOS :

1)  Установим сервиса vsftd

 yum install vsftpd

2)  Установим фтп клиента

yum install ftp

3) Запустим сервис

service vsftpd start

4) Добавим правило в iptables

 -A INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 

5) Сохраним первоначальный конфиг vsftpd  (на всякий случай)

 mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.original

6) Установим pam-mysql. В стандартных репозиториях его нет.

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/pam_mysql-0.7-0.12.rc1.el6.x86_64.rpm 
yum localinstall pam_mysql-0.7-0.12.rc1.el6.x86_64.rpm

7)  Установим mysql 5.5. Тоже нет в стандартных репозиториях его нет.

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
yum install mysql.`uname -i` yum-plugin-replace
yum replace mysql --replace-with mysql55
yum install mysql55 mysql55-server

8 ) Запустим mysql 

service mysqld start

9) Настроим mysql

/usr/bin/mysql_secure_installation
set root password — vsftpd
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
… Success!

Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
… Success!

By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
… Success!

10) Создадим базу данных

mysql -uroot -pvsftpd
CREATE DATABASE FTP;
    USE FTP;
    CREATE TABLE LOGINS(ftp_user VARCHAR(20), passwd VARCHAR(20));
    INSERT INTO LOGINS(ftp_user,passwd) VALUES ('IVAN','123');
    INSERT INTO LOGINS(ftp_user,passwd) VALUES ('test','test');

11)  Создадим директори для пользователей

mkdir /var/ftp/IVAN; chown ftp:ftp /var/ftp/IVAN
     mkdir /var/ftp/test; chown ftp:ftp /var/ftp/test

12)  PAM  файл  /etc/pam.d/vsftpd_mysql

#%PAM-1.0
    session optional pam_keyinit.so force revoke 
    auth required pam_mysql.so user=root passwd=vsftpd host=localhost db=FTP table=LOGINS usercolumn=ftp_user passwdcolumn=passwd crypt=0
    account required pam_mysql.so user=root passwd=vsftpd host=localhost db=FTP table=LOGINS usercolumn=ftp_user passwdcolumn=passwd crypt=0

13)   Конфигурируем      /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
no_anon_password=YES
 file_open_mode=0777
 chmod_enable=YES
 anon_umask=022
 anon_other_write_enable=YES
 hide_ids=YES
 anon_root=/var/ftp/
 local_enable=YES
 write_enable=YES
 local_umask=022
 anon_upload_enable=YES
 anon_mkdir_write_enable=YES
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 chown_uploads=YES
 chown_username=ftp
 xferlog_file=/var/log/vsftpd.log
 xferlog_std_format=YES
 ascii_upload_enable=YES
 ascii_download_enable=YES
 chroot_local_user=YES
  listen=YES
 pam_service_name=vsftpd_mysql
  userlist_enable=YES
  tcp_wrappers=YES
  pasv_enable=YES
  pasv_min_port=65000
  pasv_max_port=65000
  guest_enable=YES
  guest_username=ftp
  local_root=/var/ftp/$USER
  user_sub_token=$USER
  local_enable=yes
  virtual_use_local_privs=YES
  user_config_dir=/etc/vsftpd/vsftpd_user_conf

14)  Перезапустим  vsftpd 

service vsftpd restart

Попытка подключения :

[root@localhost ~]# ftp 192.168.0.70
Connected to 192.168.0.70 (192.168.0.70).
220 (vsFTPd 2.2.2)
Name (192.168.0.70:root): IVAN
331 Please specify the password.
Password:                                                  // ввожу 123
530 Login incorrect.
Login failed.
ftp>

Объясните, почему не работает алгоритм?  Какая версия mysql и pam_mysql должна быть?

2

zantonioz пишет:

epel

почему бы не подключить эту репу и не скачивать пакеты?

3

zantonioz пишет:

Установим mysql 5.5. Тоже нет в стандартных репозиториях его нет.

аналогично... Remi, CentAlt, Atomic, ну и Percona

и что в логах при попытке подключения?

4 (13.03.2014 14:38:08 отредактировано zantonioz)

alexfinn пишет:
zantonioz пишет:

Установим mysql 5.5. Тоже нет в стандартных репозиториях его нет.

аналогично... Remi, CentAlt, Atomic, ну и Percona

и что в логах при попытке подключения?

Логи такие

Mar 13 21:36:36 localhost vsftpd[1797]: pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13))

5

собственно, в ошибке все написано
вместо localhost впишите 127.0.0.1 ради интереса и убедитесь, что мускул вообще работает

6

alexfinn пишет:

собственно, в ошибке все написано
вместо localhost впишите 127.0.0.1 ради интереса и убедитесь, что мускул вообще работает


заработало всё))) святые угодники)

сделаю и выложу немного другой алгоритм скоро...

7

ab рад за вас

8 (13.03.2014 19:36:24 отредактировано zantonioz)

И еще вопрос..

Как можно сделать так, что бы ftp сервер был виден из вне ?   

Есть купленное доменное имя....

И как сделать, чтобы русские названия файлов отображались?
Как добавить список папок для каждого пользователя ?

9

zantonioz пишет:

Как можно сделать так, что бы ftp сервер был виден из вне ?

как обычно с любым из сервисов - повесить на внешний айпи, если еще не, и прописать этот айпи в днс

zantonioz пишет:

И как сделать, чтобы русские названия файлов отображались?

не знаю, честно говоря... ищите

zantonioz пишет:

Как добавить список папок для каждого пользователя ?

не совсем понял