Настраиваем vsftp или как параноидально разрешать доступ

Тема в разделе "Администрирование серверов", создана пользователем kenny, 20 июл 2011.

  1. kenny

    kenny Гость

    Что понадобится?
    -mysql server
    -vsftp server
    -прямые руки и ясная голова
    Опишу структуру.
    Что хочу реализовать. Хочу сделать виртуальных пользователей с хранением паролей и логинов в БД mysql , так же хочу открыть некоторым доступ только для чтения.
    Установку и настройку mysql server я пропущу, как и установку vsftpd.
    Ставим pam_mysql
    Код:
    cd /usr/ports/security/pam-mysql
    make install clean
    Далее нужно сделать ссылку
    Код:
    ln -sf /usr/local/lib/pam_mysql.so /usr/lib/pam_mysql.so
    Создаем базу, пользователя для базы
    Код:
    #mysql -u root
    CREATE DATABASE vsftpd;
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, \
    DROP ON ftpserver.* TO ' ftpserver '@'localhost' IDENTIFIED BY ' ftpserver ';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, \
    DROP ON vsftpd.* TO ' ftpserver '@'localhost.localdomain' IDENTIFIED BY ' ftpserver ';
    FLUSH PRIVILEGES;
    Создаем таблицу:
    Код:
    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;
    
    Создаем юзвера vsftpd с помощью adduser, должно получиться что-то наподобе
    Код:
    mail# cat /etc/passwd |grep vsftp
    vsftpd:*:1002:1002:User &:/home/vsftpd:/usr/sbin/nologin
    Правим конфиг
    Код:
    /usr/local/etc/vsftpd.conf
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=077
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chown_uploads=YES
    chown_username=vsftpd
    nopriv_user=vsftpd
    async_abor_enable=NO
    ascii_upload_enable=YES
    ascii_download_enable=YES
    ftpd_banner=Welcome to FTP service.
    chroot_local_user=YES
    write_enable=YES
    listen=YES
    secure_chroot_dir=/home/test
    pam_service_name=vsftpd
    guest_enable=YES
    guest_username=vsftpd
    local_root=/home/test2/$USER
    user_sub_token=$USER
    virtual_use_local_privs=YES
    user_config_dir=/usr/local/etc/vsftpd_user_conf
    background=YES
    
    Создадим директорию где будем хранить настройки для пользователей
    Код:
    mkdir /usr/local/etc/vsftpd_user_conf
    теперь надо настроить механизм подключения к базе данных
    Код:
    ee /etc/pam.d/vsftpd
    auth required pam_mysql.so user= ftpserver passwd= ftpserver \
    host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
    account required pam_mysql.so user= ftpserver passwd= ftpserver \
    host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
    
    Теперь потестируем
    Код:
    mysql -u root
    USE vsftpd;
    INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
    INSERT INTO accounts (username, pass) VALUES('testuser2', PASSWORD('secret2'));
    quit;
    
    Создаем папку и выставляем права
    Код:
    mkdir  /home/test2/testuser
    chown vsftpd:nogroup /home/test2/testuser
    А теперь разделим права межу двумя пользователями, предположим testuser должен иметь полный доступ к каталогу, а testuser2 только на чтение
    Создаем в папке /usr/local/etc/vsftpd_user_conf/ два файла testuser и testuser2
    Код:
    mail# cat /usr/local/etc/vsftpd_user_conf/testuser2
    dirlist_enable=YES
    download_enable=YES
    local_root=/home/ test2/testuser
    write_enable=NO
    и
    Код:
    mail# cat /usr/local/etc/vsftpd_user_conf/testuser2
    dirlist_enable=YES
    download_enable=YES
    local_root=/home/ test2/testuser
    write_enable=YES
    Запускаем/перезапускаем сервер
    И в итоге у нас поставленная задача выполнена testuser отлично читает/пишет в папку, а testuser2 может только скачать )))
    Скажите параноидально? Нет конечно не всем следует разрешать редактировать/удалять файлы на сервере
     
    GliX, Mafiozi и DarkMod нравится это.
  2. DarkMod

    DarkMod Пользователь

    Сообщения:
    1.449
    Симпатии:
    375
    Не плохо
     
  3. dimka3210

    dimka3210 Пользователь

    Сообщения:
    1.306
    Симпатии:
    519
    Исправь ошибочку, и потом удали мой пост).
     
  4. kenny

    kenny Гость

    dimka3210,
    спасибо за правку :) не удалять не стоит, не люблю когда строят из себя идеал :) все могут ошибаться.
    p.s: если найдете еще ошибки просьба сообщить))) так как у меня с русским траблы (хотя я ж не русский :))
     
  5. Dwolfix

    Dwolfix Пользователь

    Сообщения:
    10
    Симпатии:
    1
    Есть хороший скрипт для управления пользователями сервера vsftp (см. вложение). Позволяет создавать, удалять (создавая при этом резервную копию каталога ftp), менять пароль пользователей.
     

    Вложения:

Поделиться этой страницей