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