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