🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# ftp ftp 即 file transfer protocol,是一个比较古老的文件传输协议,工作在应用层。其数据是明文传输,因此安全方面存在问题。 ## 数据 命令连接 文件管理类命令,命令连接始终在线 数据连接 数据传输,按需创建及关闭的连接 ## 数据传输时编码格式 ### 文本格式 图片视频默认是二进制而是存储的,传输时可以通过**base64**转化为文本格式 ### 二进制传输 二进制格式可以直接传输 具体的传输格式选择遵循文件的存储格式 ## 主动连接和被动连接 主动和被动是相对于服务端来说的。 ### 主动连接方式 客户端创建命令连接(客户端使用随机端口 (大于50000),连接服务器端的20号端口) 服务端使用20号端口连接客户端的50001端口。 >[danger]客户端建立建立命令连接后,服务端向客户端传输数据时,需要建立新的数据连接,这个连接无法穿过客户端防火墙。 ### 被动连接方式 客户端创建命令连接(客户端使用随机端口 (大于50000),连接服务器端的20号端口),服务端会告诉客户端将要传输数据的端口; 客户端使用随机端口连接服务端数据端口。 >[danger]服务端防火墙将会阻止客户端发起的数据连接,但可以使用连接追踪,使防火墙放行命令连接开放的数据连接端口 ## linux下的客户端 ftp,lftp,lftpget wget,curl gftp(GUI) ## 响应码 1xx:信息类 2xx:成功类状态码 3xx:需要进一步提供补充类信息的状态码 4xx:客户端错误 5xx:服务端错误 ## 用户认证 ### 匿名用户 匿名用户登陆后映射为ftp用户,ftp用户的家目录`/var/ftp`。 ~~~ anonymous_enable=YES # 开启匿名用户模式 anon_upload_enable=YES # 匿名用户可以上传,默认是NO anon_mkdir_write_enable=YES # 匿名用户可以创建目录,默认是NO anon_other_write_enable=YES # 匿名用户可以删除文件和目录,默认是NO ~~~ ### 系统用户 系统用户登录到用户的家目录 ~~~ local_enable=YES # 允许系统用户登录 write_enable=YES # 系统用户可以创建删除文嘉目录 local_umask=022 chroot_local_user=YES # 限制所有用户在家目录下,默认是NO chroot_list_enable=YES # 限制指定用户在家目录下,默认是NO chroot_list_file=/etc/vsftpd/chroot_list # 限制列表 ~~~ ### 虚拟用户,用于访问某特定服务中的资源 nsswitch,network server switch,名称解析框架 配置文件 nsswitch.conf 模块 /lib64/libnss*,/usr/lib64/libnss* pam pluggable authentification module,用户认证框架 配置文件 /etc/pam.conf /etc/pam.d 模块 /lib64/security