FTP 的用户一共有三种类型

        匿名用户:ftp,anonymous,对应Linux用户ftp

        系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow

        虚拟用户:特定服务的专用用户,独立的用户名/密码文件

VSFTPD服务

       vsftpd 服务,由vsftpd包提供,直接使用yum安装就可以。

        用户认证配置文件:/etc/pam.d/vsftpd

        服务脚本: /usr/lib/systemd/system/vsftpd.service,/etc/rc.d/init.d/vsftp

        配置文件:/etc/vsftpd/vsftpd.conf

        匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp

        系统用户共享文件位置:用户家目录

        虚拟用户共享文件位置:为其映射的系统用户的家目录


本文主要介绍三个实验:配置ftp服务以非独立服务方运行,基于SSL的FTPS,vsftpd虚拟用户


一、配置ftp服务以非独立服务方运行

FTP服务既可以作为独立服务运行,也可以作为非独立服务进行运行。所谓非独立服务,指的就是使用xinetd服务代替FTP服务来监听21端口,当有用户访问FTP服务的时候,xinetd服务就会自动启动FTP服务,并提供给用户访问。

1.1、安装vsftpd、xinetd:yum -y install vsftpd xinetd

1.2、修改配置文件/etc/vsftpd/vsftpd.conf,如下图。

listen=YES,表示以独立的服务运行,listen=no表示以非独立的服务进行运行。

1.3、因为ftp是独立的文件,要改为非独立文件需要手动编写一个配置文件(cp rsync vsftpd),修改内容如下。

1.4、重启xinetd服务:service xinetd restart

1.5、设置成开机自启:chkconfig xinetd on

1.6、查看ftp的21号端口是否成功被xinetd监听。

二、基于SSL的FTPS

FTP服务,默认用户登陆时的口令是明文的。这样很容易被获取到,使用SSL来进行加密,该操作是对用户登陆ftp时对用户的信息进行加密,使用户的信息不被泄露。

2.1、查看是否支持SSL ldd `which vsftpd`

        查看到libssl.so

2.1、生成证书,创建私钥

2.3、配置vsftpd服务支持SSL:/etc/vsftpd/vsftpd.conf

2.4、修该配置文件成功后重启服务

三、vsftpd虚拟用户

虚拟用户: 所有虚拟用户(非本地用户)会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号 的家目录 各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定 。

虚拟用户帐号的存储方式: 文件:编辑文本文件,此文件需要被编码为hash格式 奇数行为用户名,偶数行为密码 db_load -T -t hash -f vusers.txt vusers.db  关系型数据库中的表中: 实时查询数据库完成用户认证 mysql库:pam要依赖于pam-mysql /lib64/security/pam_mysql.so /usr/share/doc/pam_mysql-0.7/README

3.1、生成用户文件vim ftpvusers(奇数行为用户名,偶数行为密码)

进入/etc/vsftpd/目录下,创建数据库文件,并修改数据库文件权限。

3.2、创建系统用户和访问FTP目录

   虚拟用户访问FTP服务器的时候,要进入到自己的家目录下,但是系统中没有虚拟账户所对应的账号家目录,所以我们要创建一个系统用户,与虚拟账户关联起来,这样,当虚拟用户登陆之后,就会进入到我们创建的系统用户的家目录,然后进行数据访问。 
注意:对于CentOS7,家目录有写权限,用户在登陆的时候会出错的,要去掉写权限。

3.3、编辑主配置文件:vim /etc/vsftpd/vsftpd.conf 

pam指定的vsftpd.vuser默认时不存在的,需要手动配置,位置内容如下。

1).cp vsftpd vsftpd.vuser

2).vim vsftpd.vuser

3).配置成功后重启服务:systemctl restart vsftpd

在客户机中测试用ftp文件中的用户登录ftp,测试结果如下所示。

另:如果对SELinux有什么特殊要求的话,可以单独对SELinux进行设置,如果没有特殊要求的话,直接禁用SELinux就可以。

  编辑 vim /etc/selinux/config 文件,
  设置 "SELINUX=disabled", 保存退出,
  重启reboot.
  重启ftp服务。

3.4、虚拟用户建立独立的配置文件    

在vsftpd的配置文件中指定,用户配置文件的存储路径,然后在/etc/目录下,创建相应的目录,并且在目录中定义与用户名一致的配置文件并写入相应权限就可以了。 
   在vsftpd的配置文件 /etc/vsftpd/vsftpd.conf 中指定如下路径. 

在etc目录下,创建如下的文件目录,这一个目录与前面在vsftpd配置文件中定义的一致。

这里举例设置虚拟用户daer的下载权限如下。

设置成功后重启服务:systemctl restart vsftpd

以上就是所有操作,最后结果可在客户机测试。