DTop CMS - система управления контентом
Текущая версия: 3.4.1



© 2002-2013

Статья опубликована: 2011.05.20

В данном руководстве рассмотрена установка ftp-сервера vsftpd и настройка доступа с использованием виртуальных пользователей с базой данных, хранящейся в MySQL на сервере под управлением CentOS 5.6.
Описан случай настройки, когда все виртуальные пользователи имеют права доступа одного и того же локального пользователя, но для каждого виртуального пользователя существует своя корневая директория.

  • Установка

    Устанавливаем vsftpd:
    # yum install vsftpd
    
    Устанавливаем драйвер pam_mysql (необходим для работы PAM с MySQL-сервером)
    Этого пакета нет в официальных репозиториях CentOS, поэтому его нужно скачать отсюда:
    версия для 32-х разрядной CentOS
    версия для 64-х разрядной CentOS
    После чего установить:
    x32
    # rpm -Uvh pam_mysql-0.7-0.5.rc1.el5.kb.2.i386.rpm
    
    x64
    # rpm -Uvh pam_mysql-0.6.2-4.el5.kb.x86_64.rpm
    
  • Настройка

    Создаем в MySQL базу данных, пользователя и нужную таблицу:
    # mysql -uroot -p
    mysql> create database vsftpd;
    mysql> grant select on vsftpd.* to 'vsftpd'@'localhost' identified by 'vsftpdpass';
    mysql> use vsftpd;
    mysql> CREATE TABLE accounts (id INT NOT NULL AUTO_INCREMENT, username VARCHAR(30) NOT NULL, password VARCHAR(50) NOT NULL, PRIMARY KEY (id), KEY (username));
    mysql> quit;
    
    Редактируем /etc/pam.d/vsftpd, файл должен содержать только две строки:
    x32
    auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=3
    account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=3
    
    x64
    auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=3
    account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=3
    
    Добавляем пользователя, под которым будет работать vsftpd:
    # adduser vsftpd
    
    /etc/vsftpd/vsftpd.conf - в этом файле должны присутствовать строки:
    nopriv_user=vsftpd
    
    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/vsftpd_user_conf
    
    Создаем директорию /etc/vsftpd/vsftpd_user_conf в которой будут храниться настройки доступа виртуальных пользователей
    # mkdir /etc/vsftpd/vsftpd_user_conf
    
    Добавляем vsftpd в автозагрузку:
    # chkconfig vsftpd on
    
    Запускаем:
    # service vsftpd start
    
  • Управление пользователями

    Добавление нового пользователя:
    # mysql -uroot -p
    mysql> use vsftpd;
    mysql> INSERT INTO accounts (username,password) VALUES (user1,MD5('user1password'));
    mysql> quit;
    
    Пользователю по умолчанию будет назначен корневой каталог /home/vsftpd/user1
    Если необходимо задать другой каталог (например, /home/user1), то нужно создать файл /etc/vsftpd/vsftpd_user_conf/user1 со следующими настройками:
    dirlist_enable=YES
    download_enable=YES
    write_enable=YES
    local_root=/home/user1
    
    Смена пароля для пользователя
    # mysql -uroot -p
    mysql> use vsftpd;
    mysql> UPDATE accounts SET password=MD5('newuser1password') WHERE username='user1';
    mysql> quit;
    
    Удаление пользователя
    # mysql -uroot -p
    mysql> use vsftpd;
    mysql> DELETE FROM accounts WHERE username='user1';
    mysql> quit;