天天看点

阿里云ECS的CentOS7下搭建FTP服务器

转载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被动模式的数据传输。这是很多人容易忽略的步聚。

阿里云ECS的CentOS7下搭建FTP服务器

如果服务器不在阿里云,如在本机,请执行以下操作开放端口。

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。

阿里云ECS的CentOS7下搭建FTP服务器

pasv_address=xxx.xxx.xxx.xxx填写你自己的ECS虚拟主机IP。

阿里云ECS的CentOS7下搭建FTP服务器

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
           
阿里云ECS的CentOS7下搭建FTP服务器

创建/配置虚拟用户权限配置文件,指定虚拟用户操作的目录,以及所拥有的操作权限。

创建用户配置文件目录

mkdir /etc/vsftpd/virconf
           

新建并编辑用户ftpuser3配置文件

vim /etc/vsftpd/virconf/ftpuser3
           

根据自己的情况,指定虚拟用户ftpuser3访问目录,并拥有以下指定的权限。

阿里云ECS的CentOS7下搭建FTP服务器

我们可以重复创建多个不同的虚拟用户,共用一个宿主用户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

阿里云ECS的CentOS7下搭建FTP服务器

也可以在我的电脑上添加一个网络位置。来访问FTP。还可以在IDEA上配置。

阿里云ECS的CentOS7下搭建FTP服务器

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
           

如果需要截图部分的代码,请到这里下载。https://download.csdn.net/download/jiance520/10894330

vsftpd.conf部分常用参数说明:https://mp.csdn.net/postedit/85723550。

继续阅读