pureftpd+mysql登陆后自动断开解决
最近迁移的机器多了,碰到的问题也就多。这个pureftpd+mysql就把我折腾了1天
症状就是登陆ftp后输完用户名和密码,ftp链接立刻就断开了
[00:14:19] [R] 正在连接到 10.130.128.146 -> IP=10.130.128.146 PORT=21 (次尝试 # 5)
[00:14:19] [R] 已连接到 10.130.128.146
[00:14:19] [R] 220---------- Welcome to Pure-FTPd ----------
[00:14:19] [R] 220-You are user number 1 of 25 allowed.
[00:14:19] [R] 220-Local time is now 00:13. Server port: 21.
[00:14:19] [R] 220-This is a private system - No anonymous login
[00:14:19] [R] 220 You will be disconnected after 15 minutes of inactivity.
[00:14:19] [R] USER user89
[00:14:19] [R] 331 User user89 OK. Password required
[00:14:19] [R] PASS (hidden)
[00:14:19] [R] 连接失败 (连接丢失)
注意这提示并非用户名密码错误。用户验证已经通过了。结果噩梦开始了,其实解决很简单,只要mysql里取出来的用户uid&gid和用户主目录的uid&gid对应就行。我一开始想到过这个问题,结果editplus里开了2个conf,我改的一个,结果上传的另一个….我的天,我晚上在家从头开始配的时候竟然犯了同样的错误,绕了一大圈弯路,最后关配置文件打算用puredb才发现这个问题。
具体修改pureftpd-mysql.conf
# Query to execute in order to fetch the system user name or uid
# MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
# Optional : default UID - if set this overrides MYSQLGetUID
MYSQLDefaultUID 501
# Query to execute in order to fetch the system user group or gid
# MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
# Optional : default GID - if set this overrides MYSQLGetGID
MYSQLDefaultGID 501
我这所有用户目录所有者都是www:www,所以对照下etc/passwd里面www的uid和gid直接定义了MYSQLDefaultUID和MYSQLDefaultGID。不取mysql的
这里推荐个不错的pureftpd教程
Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To
http://netkiller.8800.org/article/ftpserver/
汗。。。看来最近迁移的服务器太多搞得头晕了,竟然是这种低级错误。看来国庆长假要好好休息了。