gpt4 book ai didi

mysql - proftpd通过mysql和FTP用户的web管理

转载 作者:行者123 更新时间:2023-11-29 00:17:18 24 4
gpt4 key购买 nike

我已经在 linux 机器上安装了 prftpd 和 proftpd-mysql rpm。目的是通过网络对 ftpuser 进行用户管理。

所以我从 Here 安装了 proftpadmin

现在,当我在/etc/proftpd.conf 文件中添加以下行时

SQLConnectInfo                  proftpd@localhost root root
SQLAuthenticate users groups
SQLAuthTypes Crypt Backend
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupid gid members

SQLLog PASS logincount
SQLNamedQuery logincount UPDATE "login_count=login_count+1 WHERE userid='%u'" users
SQLLog PASS lastlogin
SQLNamedQuery lastlogin UPDATE "last_login=now() WHERE userid='%u'" users
SQLLog RETR dlbytescount
SQLNamedQuery dlbytescount UPDATE "dl_bytes=dl_bytes+%b WHERE userid='%u'" users
SQLLog RETR dlcount
SQLNamedQuery dlcount UPDATE "dl_count=dl_count+1 WHERE userid='%u'" users
SQLLog STOR ulbytescount
SQLNamedQuery ulbytescount UPDATE "ul_bytes=ul_bytes+%b WHERE userid='%u'" users
SQLLog STOR ulcount
SQLNamedQuery ulcount UPDATE "ul_count=ul_count+1 WHERE userid='%u'" users
SQLUserWhereClause "disabled!=1"

服务 proftpd 启动失败。

如果我删除服务启动的那些行,我将无法通过 mysql 管理用户,因为上面的行是强制性的。

谁能告诉我哪里出错了

请在下面找到我的/etc/proftpd.conf 文件

# This is the ProFTPD configuration file
# $Id: proftpd.conf,v 1.1 2004/02/26 17:54:30 thias Exp $

ServerName "ProFTPD server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
ServerType standalone
#ServerType inetd
DefaultServer on
AccessGrantMsg "User %u logged in."
#DisplayConnect /etc/ftpissue
#DisplayLogin /etc/ftpmotd
#DisplayGoAway /etc/ftpgoaway
DeferWelcome off

# Use this to excude users from the chroot
DefaultRoot ~ !adm

# Use pam to authenticate (default) and be authoritative
#AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c

# Do not perform ident nor DNS lookups (hangs when the port is filtered)
IdentLookups off
UseReverseDNS off

# Port 21 is the standard FTP port.
Port 21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# Default to show dot files in directory listings
ListOptions "-a"

# See Configuration.html for these (here are the default values)
#MultilineRFC2228 off
#RootLogin off
#LoginPasswordPrompt on
#MaxLoginAttempts 3
#MaxClientsPerHost none
#AllowForeignAddress off # For FXP

# Allow to resume not only the downloads but the uploads too
AllowRetrieveRestart on
AllowStoreRestart on

# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 20

# Set the user and group that the server normally runs at.
User nobody
Group nobody

# Disable sendfile by default since it breaks displaying the download speeds in
# ftptop and ftpwho
UseSendfile no

# This is where we want to put the pid file
ScoreboardFile /var/run/proftpd.score

# Normally, we want users to do a few things.
<Global>
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
</Global>

# Define the log formats
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"

# TLS
# Explained at http://www.castaglia.org/proftpd/modules/mod_tls.html
#TLSEngine on
#TLSRequired on
#TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem
#TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem
#TLSCipherSuite ALL:!ADH:!DES
#TLSOptions NoCertRequest
#TLSVerifyClient off
##TLSRenegotiate ctrl 3600 data 512000 required off timeout 300
#TLSLog /var/log/proftpd/tls.log

# SQL authentication Dynamic Shared Object (DSO) loading
# See README.DSO and howto/DSO.html for more details.
#<IfModule mod_dso.c>
# LoadModule mod_sql.c
# LoadModule mod_sql_mysql.c
# LoadModule mod_sql_postgres.c
#</IfModule>

# A basic anonymous configuration, with an upload directory.
#<Anonymous ~ftp>
# User ftp
# Group ftp
# AccessGrantMsg "Anonymous login ok, restrictions apply."
#
# # We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp
#
# # Limit the maximum number of anonymous logins
# MaxClients 10 "Sorry, max %m users -- try again later"
#
# # Put the user into /pub right after login
# #DefaultChdir /pub
#
# # We want 'welcome.msg' displayed at login, '.message' displayed in
# # each newly chdired directory and tell users to read README* files.
# DisplayLogin /welcome.msg
# DisplayFirstChdir .message
# DisplayReadme README*
#
# # Some more cosmetic and not vital stuff
# DirFakeUser on ftp
# DirFakeGroup on ftp
#
# # Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE SITE_CHMOD>
# DenyAll
# </Limit>
#
# # An upload directory that allows storing files but not retrieving
# # or creating directories.
# <Directory uploads/*>
# AllowOverwrite no
# <Limit READ>
# DenyAll
# </Limit>
#
# <Limit STOR>
# AllowAll
# </Limit>
# </Directory>
#
# # Don't write anonymous accesses to the system wtmp file (good idea!)
# WtmpLog off
#
# # Logging for the anonymous transfers
# ExtendedLog /var/log/proftpd/access.log WRITE,READ default
# ExtendedLog /var/log/proftpd/auth.log AUTH auth
#
#</Anonymous>

SQLConnectInfo proftpd@localhost root root
SQLAuthenticate users groups
SQLAuthTypes Crypt Backend
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupid gid members

SQLLog PASS logincount
SQLNamedQuery logincount UPDATE "login_count=login_count+1 WHERE

userid='%u'" users
SQLLog PASS lastlogin
SQLNamedQuery lastlogin UPDATE "last_login=now() WHERE userid='%u'"

users
SQLLog RETR dlbytescount
SQLNamedQuery dlbytescount UPDATE "dl_bytes=dl_bytes+%b WHERE

userid='%u'" users
SQLLog RETR dlcount
SQLNamedQuery dlcount UPDATE "dl_count=dl_count+1 WHERE userid='%u'"

users
SQLLog STOR ulbytescount
SQLNamedQuery ulbytescount UPDATE "ul_bytes=ul_bytes+%b WHERE

userid='%u'" users
SQLLog STOR ulcount
SQLNamedQuery ulcount UPDATE "ul_count=ul_count+1 WHERE userid='%u'"

users
SQLUserWhereClause "disabled!=1"

SQL 脚本如下所示,在各自的数据库上更新

#
# Table structure for table `groups`
#

CREATE TABLE `groups` (
`groupid` varchar(10) NOT NULL default '',
`gid` int(10) unsigned NOT NULL auto_increment,
`members` varchar(255) NOT NULL default '',
PRIMARY KEY (`gid`)
) TYPE=InnoDB ;

#
# Table structure for table `users`
#

CREATE TABLE `users` (
`id` smallint(2) NOT NULL auto_increment,
`userid` varchar(10) NOT NULL default '',
`uid` int(10) unsigned NOT NULL default '',
`gid` int(10) unsigned NOT NULL default '',
`passwd` varchar(255) NOT NULL default '',
`homedir` varchar(255) NOT NULL default '',
`comment` varchar(255) NOT NULL default '',
`disabled` int(10) unsigned NOT NULL default '0',
`shell` varchar(20) NOT NULL default '/sbin/nologin',
`email` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`ul_bytes` bigint(20) NOT NULL default '0',
`dl_bytes` bigint(20) NOT NULL default '0',
`login_count` bigint(20) NOT NULL default '0',
`dl_count` bigint(20) NOT NULL default '0',
`ul_count` bigint(20) NOT NULL default '0',
`last_login` datetime default NULL,
PRIMARY KEY (`id`)
) TYPE=InnoDB ;

最佳答案

在SQL选项前添加

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

并替换:

AuthOrder                       mod_auth_pam.c* mod_auth_unix.c

与:

AuthOrder                       mod_sql.c mod_auth_pam.c* mod_auth_unix.c

否则 proftp 不会使用您的 sql 数据库,它应该会启动。

关于mysql - proftpd通过mysql和FTP用户的web管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com