转载https://blog.csdn.net/jiance520/article/details/85705816
在网上看了一些别人的笔记,很多不适合新手看,结果各种问题,不是代码错误,就是省略了一些步骤。最后自己整了几天才把常用的功能整理完,包括使用虚拟用户来分配不同用户的权限。不过还是要感谢前人的笔记。
目录
准备
安装vsftpd服务器
创建系统用户
修改配置文件(重点)
/etc/vsftpd/vsftpd.conf 核心配置文件
vim /etc/vsftpd/user_list 白名单
vim /etc/vsftpd/chroot_list无限制名单
创建/添加/删除虚拟用户
连接FTP服务器
Xftp或 FlashFXP连接FTP
xftp 提示无法显示远程文件夹:
用户身份验证失败:
如果需要截图部分的代码,请到这里下载。https://download.csdn.net/download/jiance520/10894330
vsftpd.conf部分常用参数说明:https://mp.csdn.net/postedit/85723550。
准备
使用环境是阿里云ECS服务器,系统CentOS7
所有操作是在关闭防火墙的情况下演示,如果你的服务器很重要,请不要关闭。
systemctl stop firewalld
刷新防火墙:iptables -F。
阿里云ECS开放相关端口。54301:54305端口你自己定义。用于pasv被动模式的数据传输。这是很多人容易忽略的步聚。

如果服务器不在阿里云,如在本机,请执行以下操作开放端口。
A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 54301:54305 -j ACCEPT
检查SElinux状态并关闭,SElinux是 Linux 的一个安全子系统。
getsebool -a|grep ftp
如果没有关闭, 把 SELINUX=SeLinux 改为SELINUX=disable。
vim /etc/sysconfig/selinux
安装vsftpd服务器
检查是否已经安装vsftpd
rpm -qa| grep vsftpd
如果没有安装,执行yum安装
yum -y install vsftpd
启动vsftpd
systemctl start vsftpd
查看vsftpd服务的状态
systemctl status vsftpd
设置vsftpd服务开机自启
systemctl enable vsftpd
创建系统用户
useradd ftpuser3
passwd ftpuser3指定密码123456。密码你自己写。
passwd ftpuser3
给创建的用户文件夹授权,默认是/home/ftpuser3
chmod 777 -R /home/ftpuser3
如果要修改主目录,把/home/ftpuser3改成你自己指定的目录
usermod -d /home/ftpuser3
修改配置文件(重点)
主要配置文件:
/etc/vsftpd/vsftpd.conf 核心配置文件
/etc/vsftpd/user_list 白名单,里面存放允许登陆ftp的账号,一行一个账号名,如果不想让某个账号登陆ftp,就别填那个账号进来。
/etc/vsftpd/ftpusers 黑名单,和列表,user_list差不多,可以忽略。
/etc/vsftpd/chroot_list无限制名单:指定其中的用户允许登和访问主目录和上级目录(前提是chroot_list_enable=NO)。 反过来,不在这里面的用户只能访问自己的主目录。
/etc/pam.d/vsftpd PAM接口配置文件
/var/ftp 匿名用户的工作目录
/etc/vsftpd/vsftpd.conf 核心配置文件
所有配置文件的修改,请自行备份,备份:cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
修改配置文件,并:wq保存退出。
vim /etc/vsftpd/vsftpd.conf
以下为我修改后的内容,如需要匿名访问,请改anonymous_enable=YES。
pasv_address=xxx.xxx.xxx.xxx填写你自己的ECS虚拟主机IP。
vim /etc/vsftpd/user_list 白名单
增加用户,由你自己决定是否增加匿名用户,如果启用了user_list,必须添加创建的用户ftpuser3
ftp
anonymous
ftpuser3
vim /etc/vsftpd/chroot_list无限制名单
增加以下用户
ftpuser3
修改配置以后,必须重启ftp。
systemctl restart vsftpd
如果启动失败,提示错误:Job for vsftpd.service failed because the control process exited with error,Failed to start Vsftpd ftp daemon,vsftpd,99%是你的vsftpd.conf中代码错误,乱码等。
还有一些其它原因,中文乱码^M,格式问题。
创建/添加/删除虚拟用户
虚拟用户对系统更安全。可以针对不同的用户指定不同的工作目录。
首先查看compat-db
rpm -qa| grep compat-db
如果没有,执行安装
yum install -y compat-db
修改用户配置文件
vim /etc/vsftpd/ftpuser.conf
添加,第一行用户名,第二行密码
ftpuser3
123456
根据虚拟用户配置文件ftpuser.conf生成ftpuser.db文件
db_load -T -t hash -f /etc/vsftpd/ftpuser.conf /etc/vsftpd/ftpuser.db
修改pam
vim /etc/pam.d/vsftpd
创建/配置虚拟用户权限配置文件,指定虚拟用户操作的目录,以及所拥有的操作权限。
创建用户配置文件目录
mkdir /etc/vsftpd/virconf
新建并编辑用户ftpuser3配置文件
vim /etc/vsftpd/virconf/ftpuser3
根据自己的情况,指定虚拟用户ftpuser3访问目录,并拥有以下指定的权限。
我们可以重复创建多个不同的虚拟用户,共用一个宿主用户ftpuser3
最后别忘记创建白名单用户
vim /etc/vsftpd/chroot_list
之前我们在在user_list中添加了用户ftpuser3,如果我们需要用户拥有更大的访问权限,请在chroot_list中也添加ftpuser3。
连接FTP服务器
Xftp或 FlashFXP连接FTP
最后就是我们可以在Xftp或 FlashFXP上配置自己的host:xxx.xxx.xxx.xxx主机IP地址和端口21,使用ftp方式访问FTP服务器。远程文件夹目录填写你的主目录,如:/home/ftpuser3
也可以在我的电脑上添加一个网络位置。来访问FTP。还可以在IDEA上配置。
xftp 提示无法显示远程文件夹:
xftp远程文件夹目录填写跟local_root=/home/ftpuser3不一致,没有访问权限。
如果配置没有错误,有该提示,并不影响操作,如果要去掉,可以在chroot_list中也添加ftpuser3,但是会增加用户的访问权限。
用户身份验证失败:
没有生成db数据文件。或数据文件ftpuser.db中没有该帐户。
用户名或密码错误。
其主目录文件夹没有创建。或指定的主目录不一致。
防火墙拦截,没有开放端口。
没有使用pasv被动模式。
文件夹没有授权chmod 777 -R
帐户没有加入user_list
allow_writeable_chroot=YES
没有重起更新修改。
一定要记得,修改虚拟用户密码或新增虚拟用户后要再次执行生成数据文件ftpuser.db,修改vsftpd.conf要记得重起。或者reboot重启系统,关闭防火墙。
db_load -T -t hash -f /etc/vsftpd/ftpuser.conf /etc/vsftpd/ftpuser.db
systemctl restart vsftpd