from pyftpdlib.authorizers import DummyAuthorizer

from pyftpdlib.handlers import FTPHandler

from pyftpdlib.servers import FTPServer

import os

def main():

# Instantiate a dummy authorizer for managing 'virtual' users

authorizer = DummyAuthorizer()

# Define a new user having full r/w permissions and a read-only
# anonymous user
authorizer.add_user('admin', '12345', '/root',perm='elradfmwM')
#authorizer.add_anonymous(os.getcwd()) # Instantiate FTP handler class
handler = FTPHandler
handler.authorizer = authorizer # Define a customized banner (string returned when client connects)
handler.banner = "Simple FTPServer." # Specify a masquerade address and the range of ports to use for
# passive connections. Decomment in case you're behind a NAT.
#handler.masquerade_address = '151.25.42.11'
#handler.passive_ports = range(60000, 65535) # Instantiate FTP server class and listen on 0.0.0.0:2121
address = ('192.168.3.177', 21)
server = FTPServer(address, handler) # set a limit for connections
server.max_cons = 256
server.max_cons_per_ip = 5
# start ftp server
server.serve_forever()

if name == 'main':

main()

关于脚本的一些说明:

建立一个authorizer = DummyAuthorizer() 对象的实例

利用.add_user方法添加一个用户 authorizer.add_user('admin', '12345', '/root',perm='elradfmwM')

关于建立用户的参数的说明:

admin 用户名

'12345' 密码

/root 用户的根目录

perm='elradfmwM' 设置用户的权限

关于perm='elradfmwM' 参数介绍:

Read permissions:

- "e" = change directory (CWD command)

- "l" = list files (LIST, NLST, STAT, MLSD, MLST, SIZE, MDTM commands)

- "r" = retrieve file from the server (RETR command)

Write permissions:
- "a" = append data to an existing file (APPE command)
- "d" = delete file or directory (DELE, RMD commands)
- "f" = rename file or directory (RNFR, RNTO commands)
- "m" = create directory (MKD command)
- "w" = store a file to the server (STOR, STOU commands)
- "M" = change file mode (SITE CHMOD command)

最新文章

  1. Callable与Future的介绍
  2. phpunit4.1的干净测试
  3. CCF考前注意几点
  4. Liunx+C编程一站式学习
  5. c++ 虚析构函数[避免内存泄漏]
  6. Java的结构之美【1】——构造对象
  7. memcached在项目中的应用
  8. 手动安装cloudera manager 5.x(tar包方式)详解
  9. delphi用webservice
  10. rs(0)与rs("字段名")的区别
  11. base | Thread类、ThreadData结构体 、CurrentThread命名空间
  12. 【nodejs】初识 NodeJS(四)
  13. python中基本类型的连接组合和互相转换
  14. 第一个java程序中文乱码以及如何解决
  15. 图解 Java 内存模型
  16. ScheduledExecutorService的两种方法
  17. php基础系列:从用户登录处理程序学习mysql扩展基本操作
  18. Ubuntu终端命令行播放音乐(mp3)
  19. Use UMDH to identify memory leak problem
  20. GDI+(一):GDI+ 绘图基础

热门文章

  1. 【codeforces 803F】Coprime Subsequences
  2. Hibernate 一对多
  3. Python Study (05)装饰器
  4. 继续过Hard题目.0207
  5. 压力工具代码及epoll使用
  6. 建议53:用状态模式美化代码,关于python-state工具包的理解
  7. 最全Pycharm教程(38)——Pycharm版本号控制之远程共享
  8. Android 推断程序在手机中是否是活动状态或者正在执行状态
  9. mysql 免安装配置 数据库修改密码和远程IP登陆
  10. ROS-Gazebo文件标签解读