1、安装vsftpd
yum install -y vsftpd
2、创建使用ftp的用户名和密码
这里以账号szh为例。
useradd szh
passwd 密码
3、创建使用的文件夹,并更改其所有者和所属组,并赋权
这里以文件夹myftp为例。
mkdir /var/ftp/myftp
chown -R szh:szh /var/ftp/myftp
chmod -R 775 /var/ftp/myftp
4、修改vsftpd的配置文件
以下配置为非匿名访问,用上面创建的账号访问的:摘抄自百度云官方文档Linux系统搭建FTP服务 - 云服务器BCC | 百度智能云文档 (baidu.com)
#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#设置本地用户登录后所在的目录
local_root=/var/ftp/myftp
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定例外用户列表,这些用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#配置其他参数
allow_writeable_chroot=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
5、最关键的一点
要在云服务器上面开启对应的端口,唉,血泪教训,一直提示连接不上服务器。
6、常见坑
xftp连接时显示无法显示远程文件夹,这种情况一般是开启被动ftp模式导致的,在选项里把被动模式关掉就可以了。
配置完成后可以用命令:ftp 公网ip自测一下。因为很有可能会有这样的报错
如果报错的信息为:
500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
则是因为/etc/vsftpd/的目录下没有chroot_list的文件,用touch chroot_list新建一个即可。
如果报错信息为:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
则是因为上面设置的限制用户只能访问其主目录,不能访问其他目录,而如果给主目录配置了写入权限的话就会报错,提醒你降权。但也可以选择修改配置文件:vim /etc/vsftpd/vsftpd.conf。添加一句:allow_writeable_chroot=YES
附上我自己的配置文件的参数
anonymous_enable=NO #关闭匿名访问
local_enable=YES #开启本地用户
write_enable=YES #开启写入权限
local_umask=002 #读写权限,反掩码表示,对应的是myftp目录里的776=5权限
dirmessage_enable=YES
xferlog_enable=YES #日志记录开启
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES #限定用户访问的目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/var/ftp/myftp
allow_writeable_chroot=YES
基本上和百度云的官方文档大差不差,基本上可以直接复制粘贴官方文档的参数到配置文件。就可以避开500和421这两个坑了。