linux 源码安装pure-ftpd 1.0.47 + windows bat文件批量上传指定目录指定类型文件【解决530 Login Failed 问题,window ftp命令行上传中文文件名文件乱码问题】
Posted on 2022-12-07 16:03 Showker 阅读(162) 评论(0) 编辑 收藏 举报1、安装步骤
LinuxPureFTPd配置(完整版)
⽹上关于pureftp的安装教程很多,但是试了以后发现很多其实都不完善,很容易出错,⾃⼰安装摸索以后总结如下:
https://download.pureftpd.org/pub/pure-ftpd/releases/obsolete/pure-ftpd-1.0.47.tar.gz
2.解压:tar zxvf pure-ftpd-1.0.47.tar.gz
进⼊到解压后⽬录:cd pure-ftpd-1.0.47
3.编译⽅式,推荐使⽤全部安装:
./configure --prefix=/usr/local/pure-ftpd/ --with-puredb --with-everything --with-rfc2640
make && make check && make install
4.安装:
5.建⽴相应的安装⽬录:mkdir /usr/local/pure-ftpd/etc
6.把配置⽂件和主要执⾏⽂件拷到对应的⽂件夹下⾯:
cp configuration-file/pure-ftpd.conf /usr/local/pure-ftpd/etc/
cp configuration-file/pure-config.pl /usr/local/pure-ftpd/sbin/
chmod 755 /usr/local/pure-ftpd/sbin/pure-config.pl
7.定制⼀下系统的环境变量:
cd /usr/local/bin/ ln -s /usr/local/pure-ftpd/bin/* . ln -s /usr/local/pure-ftpd/sbin/* /usr/local/sbin/ ln -s /usr/local/pure-ftpd/man/man8/* /usr/local/share/man/man8/
8.启动pureftp服务器(先跳到第二步骤做好启动脚本):
service pure-ftpd start
屏幕上⼀般显⽰如下信息:
此时可以⽤在命令⾏窗⼝下telnet ip地址 21的⽅式探测⼀下这个端⼝是不是通的
9.pureftp⼀般需要不⽤默认的root⽤户进⾏操作,⼀般会另外创建⽤户名和组,⽤虚拟⽤户进⾏登录
创建组:
groupadd ftpgroup
创建⽤户:
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
创建完成以后可以⽤cat /etc/passwd和cat /etc/group来查看组和⽤户是否已经创建好了
10.添加ftp虚拟⽤户
pure-pw useradd test -u ftpuser -d /home/ftpuser/test
新建一个新的看看
pure-pw useradd ftptest2 -u ftpuser -g ftpgroup -d /data/httpd/ecshopx-api/storage/audiogram/notdone -m
12.新建好后,要执行⽣成数据库⽂件
pure-pw mkdb
list出所有用户
# pure-pw list test /home/ftpuser/test/./ ftptest /data/httpd/ecshopx-api/storage/audiogram/notdone/./ testnew /home/ftpuser/test/./ ftptest2 /data/httpd/ecshopx-api/storage/audiogram/notdone/./
如果添加完成以后想要删除可以使⽤pure-pw userdel test这条指令
想要修改密码可以使⽤pure-pw passwd test这条指令
用filezilla工具登录ftp也是用test这个虚拟用户
11.查看⽤户信息
pure-pw show test
13.⼀定要注意修改配置⽂件,因为很多配置⽂件数据库的默认安装位置并不是实际位置,这样就会造成每次登陆的时候都找不到密码,ftp ⼀直显⽰passwd required,所以安装好以后⼀定要修改配置⽂件,尤其是粉红⾊的部位,注意修改
打开配置⽂件:vi /usr/local/pure-ftpd/etc/pure-ftpd.conf
ChrootEveryone yes # 启⽤chroot BrokenClientsCompatibility yes # 兼容不同客户端 Daemonize yes # 后台运⾏ MaxClientsPerIP 20 # 每个ip最⼤连接数 VerboseLog yes # 记录⽇志 DisplayDotFiles no # 显⽰隐藏⽂件 AnonymousOnly no # 只允许匿名⽤户访问 NoAnonymous yes # 不允许匿名⽤户连接 SyslogFacility none # 不将⽇志在syslog⽇志中显⽰ DontResolve yes # 不进⾏客户端DNS解析 MaxIdleTime 15 # 最⼤空闲时间 LimitRecursion 2000 8 # 浏览限制,⽂件2000,⽬录8层 AnonymousCanCreateDirs no # 匿名⽤户可以创建⽬录 MaxLoad 4 # 超出负载后禁⽌下载 PassivePortRange 45000 50000 # 被动模式端⼝范围 AnonymousRatio 1 10 # 匿名⽤户上传/下载⽐率 UserRatio 1 10 # 所有⽤户上传/下载⽐率 AntiWarez yes # 禁⽌下载匿名⽤户上传但未经验证的⽂件 AnonymousBandwidth 200 # 匿名⽤户带宽限制(KB) UserBandwidth 8 # 所有⽤户最⼤带宽(KB) Umask 133:022 # 创建⽂件/⽬录默认掩码 MinUID 100 # 最⼤UID限制 AllowUserFXP no # 仅运⾏⽤户进⾏FXP传输 AllowAnonymousFXP no # 对匿名⽤户和⾮匿名⽤户允许进⾏匿名 FXP 传输 ProhibitDotFilesWrite no # 不能删除/写⼊隐藏⽂件 ProhibitDotFilesRead no # 禁⽌读取隐藏⽂件 AutoRename yes # 有同名⽂件时⾃动重新命名 AnonymousCantUpload yes # 不允许匿名⽤户上传⽂件 AltLog clf:/var/log/pureftpd.log # clf格式⽇志⽂件位置 PureDB /usr/local/pure-ftpd/etc/pureftpd.pdb # ⽤户数据库⽂件 MaxDiskUsage 99 # 当磁盘使⽤量打到99%时禁⽌上传 CreateHomeDir yes # 如果虚拟⽤户的⽬录不存在则⾃动创建 CustomerProof yes # 防⽌命令误操作 # UTF-8 support for file names (RFC 2640) # Set the charset of the server filesystem and optionally the default charset # for remote clients that don't use UTF-8. # Works only if pure-ftpd has been compiled with --with-rfc2640 FileSystemCharset UTF-8 ClientCharset GBK
PureDB /usr/local/pure-ftpd/etc/pureftpd.pdb这个地⽅⼀定要记得修改,不然会⼀直登不上去,修改完成以后可以再次执⾏ 14.重新⽣成数据库⽂件pure-pw mkdb
如何解决中文文件名问题,经过多重测试,一个UTF-8,一个GBK,才能确保windows ftp命令上传中文文件名不乱码
FileSystemCharset UTF-8 ClientCharset GBK
15.先把之前的pureftp服务kill掉 killall pure-ftpd
16.然后重新启动
17.此时⼀般已经可以成功登录,但是有可能还是⽆法上传到服务器上去,此时⼀般是权限问题,
登录到ftp的家⽬录下 cd /home/ftpuser/test
修改test⽂件夹下的⽂件权限 chown ftpuser:ftpgroup wenjian1
再尝试重新连接以后上传。
2、pure-ftpd启动脚本
#!/bin/bash # $0 name:pureftpd # chkconfig: 3 91 31 # description: pure-ftpd . /etc/rc.d/init.d/functions PATH=$PATH:/usr/local/sbin:/usr/local/bin export PATH RETVAL=0 pure_home=/usr/local/pure-ftpd start () { $pure_home/sbin/pure-ftpd $pure_home/etc/pure-ftpd.conf >/dev/null RETVAL=$? if [ "$RETVAL" -eq 0 ];then action "Starting pure-ftpd:" success else action "Starting pure-ftpd:" failure fi } stop () { killall pure-ftpd 2>/dev/null RETVAL=$? if [ "$RETVAL" -eq 0 ];then action "Stopping pure-ftpd:" success else action "Stopping pure-ftpd:" failure fi } restart () { stop RETVAL=$? if [ "$RETVAL" -eq 0 ];then sleep 1 start fi } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo "Usage: $0 {start|stop|restart}" exit 3 ;; esac
chmod 755 /etc/init.d/pure-ftpd
chkconfig --add pure-ftpd
重启
service pure-ftpd restart
service pure-ftpd stop
service pure-ftpd start
3、windows bat 文件自动批量上传目录下的指定类型文件到ftp服务器。
添加windows的定时任务
每天0-23:59:59,每5分钟运行一次
schtasks /create /tn uploadgnd_task /tr D:\test.bat /sc minute /mo 5 /st 00:00:00 /et 23:59:59
(1)每天8:00执行test脚本
schtasks /create /tn test_task /tr D:\test.bat /sc DAILY /st 08:00:00
1
(2)当天8:00到21:00每隔2分钟执行test脚本
schtasks /create /tn test_task /tr D:\test.bat /sc minute /mo 2 /st 08:00:00 /et 21:00:00
1
2、查看已配置定时任务,可以显示下次运行时间
定时任务配置时通过schtasks /query完成,详细语法在cmd下执行schtasks /query /?获取。参考实例如下:
schtasks /query /tn test_task
1
3、结束任务
定时任务配置时通过schtasks /end完成,详细语法在cmd下执行schtasks /end/?获取。参考实例如下:
schtasks /end /tn test_task
1
4、删除任务
定时任务配置时通过schtasks /delete完成,详细语法在cmd下执行schtasks /delete/?获取。参考实例如下:
schtasks /delete /tn test_task /f
图形界面:
打开路径:控制面板(可在命令行下输入control打开)-> 管理工具 -> 任务计划程序,打开主界面如下: