ProFTPD
=========================
ProFTPD 是一个基于 BSD 的 FTP 服务器。
安装
------------------------
.. code-block:: bash
# 安装依赖
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必须要用。
mod_sftp
------------------------
.. code-block:: bash
--with-modules=mod_sftp
mode_ctrls_admin
------------------------
.. code-block:: bash
--with-modules=mod_ctrls_admin
sqlite3
------------------------
.. code-block:: bash
sudo apt install sqlite3 libsqlite3-dev
--with-modules=mod_sql:mod_sql_sqlite
.. code-block:: bash
sudo sqlite3 /usr/local/etc/proftpd.db
mod_sql_odbc
------------------------
.. code-block:: bash
# 安装 unixodbc 和 unixodbc-dev
sudo apt install unixodbc unixodbc-dev
--with-modules=mod_sql:mod_sql_odbc
.. code-block:: bash
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
配置达梦数据源
^^^^^^^^^^^^^^^^^^^^
.. code-block:: bash
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
.. code-block:: bash
vim /etc/odbc.ini
[DM]
DRIVER = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = ******
TCP_PORT = 51236
.. code-block:: bash
isql DM -v
可以参考:https://blog.csdn.net/hezuijiudexiaobai/article/details/145812565
如果isql访问提示libdodbc.so找不到,是因为当前用户的LD_LIBRARY_PATH没有设置,可以参考:
.. code-block:: bash
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
mod_sql
------------------------
.. code-block:: ini
# 认证顺序
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
.. code-block:: bash
# SQLAuthenticate users groups userset groupset
SQLAuthenticate on
SQLAuthTypes Backend
SQLBackend odbc
SQLConnectInfo DM
信息获取
------------------------
.. code-block:: bash
# 获取 proftpd 版本
proftpd -v
# 获取 proftpd 详细版本
proftpd -vv
# 获取 proftpd 编译模块
proftpd -l