悉野小楼

导航

linux搭ftp

网上推荐使用vsftpd, 我试了, 他需要在系统中创建用户, 这样shell就可以连了. 但屏蔽shell连结, ftp又连不上.  使用docker容器安装vsftp时, docker下载又慢.  vsftp也可以配置虚拟用户, 但要好几步, 很麻烦.

后面想起找个python库就可以做ftp了, 一个文件, 方便.

参考:https://www.cnblogs.com/xingxia/p/python_ftp_server.html

#pip install pyftpdlib

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler, ThrottledDTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.log import LogFormatter
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
fh = logging.FileHandler(filename='myftpserver.log', encoding='utf-8') # 默认追加到日志文件
ch.setFormatter(LogFormatter())
fh.setFormatter(LogFormatter())
logger.addHandler(ch)  # 将日志输出到屏幕
logger.addHandler(fh)  # 将日志输出至文件

authorizer = DummyAuthorizer()# 添加用户权限与路径,参数(用户名,密码,用户目录,权限(见说明))
authorizer.add_user('test', '123456', "/data/web/mobile", perm="elradfmw")# 添加匿名用户,只添加路径
#authorizer.add_anonymous("./files")

handler = FTPHandler
handler.authorizer = authorizer# 添加被动端口范围
handler.passive_ports = range(39000, 40000)
# 下载上传速度设置
dtp_handler = ThrottledDTPHandler
dtp_handler.read_limit = 3000 * 1024 # 300kb/s
dtp_handler.write_limit = 3000 * 1024 # 300kb/s
handler.dtp_handler = dtp_handler
# 监听IP和端口,Linux中需要root用户才能使用21端口
server = FTPServer(('0.0.0.0', 21), handler)
# 最大连接数
server.max_cons = 150
server.max_cons_per_ip = 15

server.serve_forever()

下载

posted on 2025-04-27 14:05  悉野  阅读(9)  评论(0)    收藏  举报