proftpd + sqlite

Изображение пользователя grio.

Ставим ProFtpd с базой SQLite

$sudo aptitude install profptd-basic proftpd-mod-sqlite

нам еще понадобятся sqlite3 libsqlite3-0 и libsqlite3-dev (если будем пересобирать из исходников)

Возможно, при запуске proftpd получаем примерно такой ворнинг:
mod_sql_sqlite/0.3: compiled using SQLite version '3.6.16' headers, but linked to SQLite version '3.6.22' library

В принципе, это не критическая ошибка, но если захотите исправить, то можно пересобрать proftpd из исходников.

Пересобираем proftpd

Качаем сорцы, распаковываем, заходим в директорию.
В моем случае конфигурация сборки была такая:
$./configure '--with-modules=mod_sql:mod_sql_sqlite' '--prefix=/usr'
'--sysconfdir=/etc/proftpd' '--libexecdir=/usr/lib/proftpd'
'--enable-dso' '--enable-ctrls' '--enable-facl'
'--with-shared=mod_ctrls_admin:mod_ban'

$make -j5

$make install

Создаем базу пользователей

заходим в директорию, где будет хранится ваша база с пользователями.
$ sqlite3 proftpd.db
CREATE TABLE users (
    userid character varying(30) NOT NULL,
    passwd character varying(80) NOT NULL,
    uid integer,
    gid integer,
    homedir character varying(255),
    shell character varying(255)
);

CREATE TABLE groups (
    groupname character varying(30) NOT NULL,
    gid integer NOT NULL,
    members character varying(255)
);
INSERT INTO users (userid, passwd, uid, gid, homedir, shell)
VALUES (
    'myUser',
    'myPass',
    3001,
    3001,
    '/home/ftp/myUser/',
    '/usr/sbin/nologin'
);

Вместо myUser и myPass прописываем логин/пароль фтп пользователя.
Вместо 3001/3001 задаем uid/gid пользователя системы, правами которого мы наделяем фтп-пользователя.
Uid/gid существующего пользователя можно узнать командой id в консоли.
/home/ftp/myUser/ - директория, корень, куда попадает фтп-юзер.

Конфиги ProFtpd

proftpd.conf
UseIPv6                         on
IdentLookups                    off
ServerName                      "BolgenOS"
ServerType                      standalone
DeferWelcome                    off
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayChdir                    .message true
ListOptions                     "-l"
DenyFilter                      \*.*/
DefaultRoot                     ~
RequireValidShell               off
Port                            21
MaxInstances                    30
User                            proftpd
Group                           nogroup
Umask                           022  022
AllowOverwrite                  on
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
QuotaEngine on
</IfModule>
Include /etc/proftpd/sql.conf

sql.conf
<IfModule mod_sql.c>
SQLBackend      sqlite
SQLEngine on
SQLAuthenticate users
# Если пароль хранится в базе в открытом виде - Plaintext.
# Вообще рекомендую криптовать пароли, потому что сама база sqlite не имеет подобной защиты.
SQLAuthTypes Plaintext Crypt
SQLLogFile           /var/log/proftpd/sql.log
# Путь до вашей базы должен быть указан верно.
SQLConnectInfo /etc/proftpd/proftpd.db
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupname gid members
</IfModule>

Ну и напоследок, убедитесь, что эти модули подключены:
modules.conf
LoadModule mod_sql.c
LoadModule mod_sql_sqlite.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
LoadModule mod_quotatab_sql.c
LoadModule mod_quotatab_radius.c

---
br,
grio.

Комментарии (2)

0
Гость - 30 Октябрь, 2011 - 19:00

В конфиг proftpd необходимо добавить строчку, без нее модули не подключаются и ничего работать не должно:

Include /etc/proftpd/modules.conf

0
Гость - 13 Март, 2012 - 11:00

А теперь еще надо дописать как использовать веб админку к этому серверу proFTPd Admin именно с sqlite. Может быть и нет ничего сложного, а может это и сложно сделать. Надо рыться...

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры