1.通过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="ftpserver.log",encoding="utf-8")
ch.setFormatter(LogFormatter())
fh.setFormatter(LogFormatter())
#将日志输出到屏幕
logger.addHandler(ch)
#将日志输出到文件
logger.addHandler(fh)
#实例化虚拟用户,这是FTP验证首要条件。
authorizer = DummyAuthorizer()
#添加用户,权限,目录
authorizer.add_user("user","123456","e:Pic",perm="elradfmw")
#匿名用户
#authorizer.add_anonymous("e:Pic")
#初始化ftp句柄
handler = FTPHandler
handler.authorizer = authorizer
#添加被动端口范围
handler.passive_ports = range(2000,2100)
#下载上传速度设置
dtp_handler = ThrottledDTPHandler
dtp_handler.read_limit = 300 * 1024 #300k
dtp_handler.write_limit = 300 * 1024
handler.dtp_handler = dtp_handler
#监听ip和端口,linux需要root用户才能运行21端口
server = FTPServer(("0.0.0.0",21),handler)
#最大连接数
server.max_cons = 100
server.max_cons_per_ip = 10
#开始服务,自带日志打印信息
server.serve_forever()
2.权限解释
读取权限:
“e” =更改目录(CWD,CDUP命令)
“l” =列表文件(LIST,NLST,STAT,MLSD,MLST,SIZE命令)
“r” =从服务器检索文件(RETR命令)
写入权限:
“a” =将数据追加到现有文件(APPE命令)
“d” =删除文件或目录(DELE,RMD命令)
“f” =重命名文件或目录(RNFR,RNTO命令)
“m” =创建目录(MKD命令)
“w” =将文件存储到服务器(STOR,STOU命令)
“M”=更改文件模式/权限(SITE CHMOD命令)
“T”=更改文件修改时间(SITE MFMT命令)
参考文档:https://pyftpdlib.readthedocs.io/en/latest/index.html
「 文章如果对你有帮助,请点个赞哦^^ 」 
0