CentOS 7 搭建FTP服务
操作系统:CentOS 7
安装 vsftpd
以 root 身份执行
1 | yum install -y vsftpd |
设置开机自启
1 | systemctl enable vsftpd |
启动 FTP 服务
1 | systemctl start vsftpd |
查看FTP服务的占用端口以确认开启了此服务
1 | netstat -antup | grep ftp |
- 此时,vsftpd 已默认开启匿名访问模式,无需通过用户名和密码即可登录 FTP 服务器。使用此方式登录 FTP 服务器的用户没有权修改或上传文件的权限。
配置 vsftpd
为 FTP 服务创建用户
1 | useradd ftpuser |
设置此用户的密码
1 | passwd ftpuser |
创建FTP服务使用的文件夹(在哪创建都ok)
1 | mkdir /var/ftp/file |
修改目录权限
1 | chown -R ftpuser:ftpuser /var/ftp/file |
:
左边的是用户,右边的是用户组
编辑 vsftpd.conf
配置文件
1 | vim /etc/vsftpd/vsftpd.conf |
FTP 可通过主动模式和被动模式与客户端机器进行连接并传输数据。由于大多数客户端机器的防火墙设置及无法获取真实 IP 等原因,推荐使用被动模式
在配置文件中,修改一下内容
1 | anonymous_enable=NO |
使用 # 注释关闭监听 IPv6 sockets
1 | #listen_ipv6=YES |
添加以下配置参数,开启被动模式
1 | # 登录后所处的目录 |
:wq
保存退出
修改 chroot_list
文件
1 | vim /etc/vsftpd/chroot_list |
- 这个文件中保存的是例外允许的用户
- 一个用户名占用一行
重启 FTP 服务
1 | systemctl restart vsftpd |
开放端口(非云服务器)
开放 FTP 使用的 21
端口
1 | firewall-cmd --zone=public --add-port=21/tcp --permanent |
- 如果要关闭,将 add 改为 remove 就行
设置安全组(云服务器)
以 腾讯云为例,打开腾讯云的控制台,找到 安全组 点击 修改规则,然后 添加规则
备注
备注1:登录失败
如果配置之后,使用用户名和密码登录登录不成功,修改配置文件 /etc/pam.d/vsftpd
1 | vim /etc/pam.d/vsftpd |
添加 # 注释掉这一行
1 | #auth required pam_shells.so |
备注2:上传文件失败
遇到文件上传失败,先检查FTP服务使用的文件夹是否有权限
1 | ls -l /var/ftp |
如果 d
后面没有w
则表示没有写入权限(上图是有的),就添加权限
1 | chmod +w /var/ftp/file |
备注3
如果连接失败,检查一下FTP连接工具是否使用的是 被动模式
CentOS 7 搭建FTP服务