FTP(文件传输协议)是一种用于在网络上进行文件传输的标准协议。它可以在互联网上将文件从一台计算机传输到另一台计算机,通常用于上传和下载网站内容、软件更新、备份数据等。
阿里云ECS部署
yum install -y vsftpd
systemctl enable vsftpd.service
systemctl start vsftpd.service
systemctl restart vsftpd.service #每次修改配置生效需要重启服务
匿名登陆
修改ftp配置
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #允许匿名登录
no_anon_password=YES #免密码
anon_umask=022—匿名用户登录创建默认权限-22
anon_upload_enable=YES----匿名用户允许上传
anon_mkdir_write_enable=YES----匿名用户允许修改文件文件
anon_other_write_enable=YES----匿名用户其他文件权限
userlist_enable=YES #启用用户列表
userlist_deny=NO #在用户列表中的用户可以登陆ftp
添加匿名用户登陆权限
vim /etc/vsftpd/user_list #在配置文件最后加入匿名用户
anonymous
登陆测试
本地用户登陆
[root@lxf-test-vpn ~]#groupadd ftp
[root@lxf-test-vpn ~]#useradd -g ftp -s /sbin/nologin ftpuser
[root@lxf-test-vpn ~]#passwd ftpuser
运行命令后,根据命令行提示设置 ftpuser用户的密码,回显信息类似如下所示。
[root@lxf-test-vpn ~]# useradd -g ftp -s /sbin/nologin ftpuser
[root@lxf-test-vpn ~]# passwd ftpuser
Changing password for user ftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
说明:如果已创建用户,但是用户不在创建的用户组 ftp中,运行命令 usermod -g ftp 用户名 移动用户到用户组中。
[root@lxf-test-vpn ~]#chown root:ftp /home/ftpuser
[root@lxf-test-vpn ~]#chmod 755 /home/ftpuser
[root@lxf-test-vpn ~]#mkdir /home/ftpuser/test
[root@lxf-test-vpn ~]#chown -R ftpuser:ftp /home/ftpuser/test
[root@lxf-test-vpn ~]#chmod -R 755 /home/ftpuser/test
vsftpd默认会检查用户的shell,如果用户的shell在/etc/shells没有记录,则无法登陆ftp
解决办法:在/etc/shells文件里面添加用户的shell(解释器)
[root@lxf-test-vpn vsftpd]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin
修改配置
local_enable=YES#控制是否允许本地用户登入,YES为允许本地用户登入,NO为不允许。默认值为YES。
local_root=/home/ftpuser#当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
write_enable=YES/NO#是否允许登陆用户有写权限。属于全局设置,默认值为YES。
local_umask=022#地用户新增档案时的umask值。默认值为022
userlist_enable=YES #启用用户列表
userlist_deny=NO #在用户列表中的用户可以登陆ftp
添加ftpuser到user_list echo "ftpuser" > /etc/ftpuser/user_list
登陆测试
其他配置
可以看看这个大佬写的配置文件解释
https://www.cnblogs.com/chenjianhong/p/4144303.html
主动模式
默认模式
connect_from_port_20=YES #配置文件中默认开启
主动模式(PORT):命令连接由客户端发起,数据连接由服务端发起
命令连接:客户端通过任意大于等于1024(N端口)的端口连接到服务器的21端口,服务器响应建立连接通道
当客户端需要数据的时候,客户端通过此通道发送PORT命令发送本地ip端口信息,服务端发起连接
被动模式
被动模式(PASV):命令连接与数据连接都由客户端发起,两个连接的端口同时发起
命令连接:客户端通过任意大于等于1024(N端口)的端口连接到服务器的21端口,服务器响应建立连接通道。客户端提交PASV命令,服务器会开启一个任意的非特权端口,并发送PASV 命令给客户端。
数据连接:客户端接受PASV命令,然后客户端通过任意大于等于1024(N+1端口)的端口连接到服务器任意大于等于1024的端口,与服务器建立连接来传输数据