14.20. ProFTPD

ProFTPD 是一个基于 BSD 的 FTP 服务器。

14.20.1. 安装

# 安装依赖
sudo apt install libsqlite3-dev libodbc-dev

# 安装 proftpd
LDFLAGS="-lodbc" ./configure --enable-dso --enable-openssl --enable-ctrls --enable-ncurses --with-shared=mod_sftp --with-modules=mod_ctrls_admin --with-modules=mod_sql:mod_sql_sqlite --with-modules=mod_sql:mod_sql_odbc --with-shared=mod_shaper
make -j$(nproc)
sudo make install
  • LDFLAGS=”-lodbc” 如果编译出现找不到odbc的错误,可以加上这个。

  • enable-dso 启用动态模块

  • enable-openssl 启用 OpenSSL

  • enable-ctrls 启用控制台

  • enable-ncurses ftptop命令要用到

  • with-shared=mod_sftp 启用 mod_sftp

  • with-modules=mod_ctrls_admin 启用 mod_ctrls_admin

  • with-modules=mod_sql:mod_sql_sqlite 启用 mod_sql_sqlite 可选

  • with-modules=mod_sql:mod_sql_odbc 启用 mod_sql_odbc 如果要支持odbc必须要用。

14.20.2. mod_sftp

--with-modules=mod_sftp

14.20.3. mode_ctrls_admin

--with-modules=mod_ctrls_admin

14.20.4. sqlite3

sudo apt install sqlite3 libsqlite3-dev
--with-modules=mod_sql:mod_sql_sqlite
sudo sqlite3 /usr/local/etc/proftpd.db

14.20.5. mod_sql_odbc

# 安装 unixodbc 和 unixodbc-dev
sudo apt install unixodbc unixodbc-dev

--with-modules=mod_sql:mod_sql_odbc
odbcinst -j

unixODBC 2.3.6
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/chenjie/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

14.20.5.1. 配置达梦数据源

vim /etc/odbcinst.ini

[DM]
Description = DM ODBC Driver
#Driver = /usr/lib/x86_64-linux-gnu/odbc/libdm.so
Driver = /vm/home/dmdba/dmdbms/bin/libdodbc.so
vim /etc/odbc.ini

[DM]
DRIVER = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = ******
TCP_PORT = 51236
isql DM -v

可以参考:https://blog.csdn.net/hezuijiudexiaobai/article/details/145812565

如果isql访问提示libdodbc.so找不到,是因为当前用户的LD_LIBRARY_PATH没有设置,可以参考:

export LD_LIBRARY_PATH=/vm/home/dmdba/dmdbms/bin:$LD_LIBRARY_PATH

echo 'export LD_LIBRARY_PATH=/vm/home/dmdba/dmdbms/bin:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 我加了这个,就可以正常访问odbc了。
echo "/vm/home/dmdba/dmdbms/bin" | sudo tee /etc/ld.so.conf.d/dmdbms.conf
sudo ldconfig

14.20.6. mod_sql

<IfModule mod_sql.c>
    # 认证顺序
    AuthOrder mod_sql.c

    # We need our "default" connection to the userdb database
    # 默认连接到 userdb 数据库
    SQLConnectInfo userdb@dbhost:3306 user pass

    # Now that we have a default connection, we can create another connection, named "logdb" and using the "mysql" backend, to the logdb database
    # 创建另一个连接,名为 "logdb" 并使用 "mysql" 后端连接到 logdb 数据库
    SQLNamedConnectInfo logdb mysql logdb@dbhost:3306 user pass

    # Point mod_sql at our users/groups tables
    # 将 mod_sql 指向我们的 users/groups 表
    SQLUserInfo users ...
    SQLGroupInfo groups ...

    # Update the users.last_accessed column on successful login in the userdb
    # 在成功登录 userdb 时更新 users.last_accessed 列
    SQLNamedQuery last_accessed UPDATE "last_accessed = NOW() WHERE userid='%u'" users
    SQLLog PASS last_accessed

    # Add a row to the login_history table on successful login in the logdb
    # 在成功登录 logdb 时添加一行到 login_history 表
    SQLNamedQuery log_sess FREEFORM "INSERT INTO login_history (user, client_ip, server_ip, protocol, when) VALUES ('%u', '%a', '%V', '%{protocol}', NOW())" logdb

    # 忽略错误
    SQLLog PASS log_sess IGNORE_ERRORS
</IfModule>
<IfModule mod_sql.c>
    # SQLAuthenticate users groups userset groupset
    SQLAuthenticate on
    SQLAuthTypes Backend
    SQLBackend odbc
    SQLConnectInfo DM


</IfModule>

14.20.7. 信息获取

# 获取 proftpd 版本
proftpd -v

# 获取 proftpd 详细版本
proftpd -vv

# 获取 proftpd 编译模块
proftpd -l