Linux(CentOS 7)搭建VSFTP服务器

一、FTP服务器简介

FTP(File Transfer Protocol):文件传输协议,是一个客户机/服务器系统。使用FTP的用户需要经过验证后才能登录,FTP服务器的用户可分成3类。

系统用户:即系统本机的用户。Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件系统进行工作。但通常不希望他们通过FTP方式远程访问系统。

虚拟用户:只能采用FTP方式使用系统的用户,不能直接使用Shell登录系统,即虚拟用户,访问服务器时需要验证。大多数FTP用户是这类用户。

匿名用户:对于公共性质的服务器可以提供匿名用户访问,用户名:anonymous。但在使用匿名用户时,应对其进行尽可能多的限制,权限较低,如:同时连接的用户数量受限,访问的文件数目受限,不能上传文件,允许操作的指令较少,设置匿用户同时登入的最大联机数量等。

 

ftp端口

20、21被动和主动

FTP服务器

 

二、FTP服务器的安装

1、使用yum安装vsftpd软件包 

#yum install vsftpd ftp

2、启动服务并设置开机自启

#systemctl start vsftpd.service

#systemctl enable vsftpd.service

3、设置防火墙与selinux机制

#firewall-cmd --permanent --zone=public --add-service=ftp

#firewall-cmd --reload

#setenforce 0

 

实验的话可以直接关闭防火墙

 

三、访问

匿名用户访问

访问后可以对配置文件进行修改以实现某些功能

如:限制匿名用户访问ftp、设置权限等

 

ftp配置文件是 /etc/vsftpd/vsftpd.conf

注:修改配置文件先备份,修改后需要重启

 

系统用户访问

注:系统用户默认访问主目录,具有很大权限

系统用户默认访问主目录,具有上传、下载、新建、删除的权限,还可以切换到的系统其他目录。

   anonymous_enable=no

   local_enable=yes

   local_umask=022

 

 local——umask=022是指

新建目录后权限是755也就是0777减0022(单个数字加减)        0-0 7-0 7-2 7-2最后得到0755

文件是0666减0022

 

  默认情况下,ftp服务器中所有系统用户都可以访问ftp,如何来限定只有指定的系统用户可以访问呢?vsftp中提供了两个与系统用户相关的配置文件:

      /etc/vsftpd/ftpusers  提供了一份用于禁止登录的ftp用户列表(黑名单)。

                      此文件中包含的用户将被禁止登录vsftpd服务器,不管该用户是否在

                      /etc/vfsftpd/user_list中出现。

 

      /etc/vsftpd/user_list 提供了一份用于允许登录的ftp用户列表(白名单),

                      此文件中包含的用户可能被禁止登录,可能被允许登录。

 

具体在主配置文件vsftpd.conf中决定:

        当存在userlist_enable=YES时,user_list文件生效。

        当存在userlist_deny=YES时,则仅禁止列表中的帐户登录。

        当存在userlist_deny=NO时,则允许列表中用户登录。 

        其中:ftpusers文件的优先级要高于user_list文件,即如果一个用户同时存在于两个文件中,则被拒绝访问ftp。

 

举例:只让ftpuser用户访问ftp,那么可以进行如下设置:

                 #vim /etc/vsftpd/vsftpd.conf

                 userlist_enable=YES       启用userlist用户列表(系统默认设置)

                 userlist_deny=NO         只允许列表中的用户登录   

                 #vim/etc/vsftpd/user_list

 

将服务重启后,在客户端测试,此时只有ftpuser用户可以访问ftp

 

虚拟用户访问

认证文件验证数据库中的虚拟用户,验证成功后以一个系统用户访问ftp

 

步骤

1、安装Vsftpd虚拟用户需要用到的软件及认证模块

   #yum install pam* libdb-utils libdb* --skip-broken -y

2、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,用户名密码格式如下:

techftp

123456

netftp

123456

3、生成Vsftpd虚拟用户数据库认证文件,设置权限为600

   #db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db

   #chmod 600 /etc/vsftpd/vsftp_login.db  

4、配置PAM认证文件:vim /etc/pam.d/vsftpd.vu

   auth   required   pam_userdb.so   db=/etc/vsftpd/vsftp_login

   account  required  pam_userdb.so  db=/etc/vsftpd/vsftp_login

5、创建一个系统用户,用于虚拟用户映射

   #useradd -s /sbin/nologin ftpuser

最终所有虚拟用户验证成功后,都以这个虚拟用户登录访问ftp

但是这个系统用户无法登录Linux

6、修改配置文件:#vim /etc/vsftpd/vsftpd.conf

   #pam_service_name=vsftpd

   pam_service_name=vsftpd.vu

   guest_enable=YES

   guest_username=ftpuser

   user_config_dir=/etc/vsftpd/vsftpd_user_conf

   virtual_use_local_privs=YES

第一行:是指定验证文件是vsftpd,这个是系统的所以要注释掉

第二行:是vsftpd.vu,这个是第4步自己写的验证文件

第三行:允许虚拟用户登录

第四行:虚拟用户验证成功后以哪个系统用户登录(这里指第5步创建的用户)

第五行:每个虚拟用户的配置文件存放的文件夹

第六行:虚拟用户权限问题

 

 

7、分别为虚拟用户创建私有的虚拟目录与独立的配置文件

   #mkdir /home/ftpuser/techftp

   #mkdir /etc/vsftpd/vsftpd_user_conf

   #vim techftp

     local_root=/home/ftpuser/techftp

     write_enable=YES

     anon_world_readable_only=YES

     anon_upload_enable=YES

     anon_mkdir_write_enable=YES

     anon_other_write_enable=YES

   #mkdir /home/ftpuser/netftp

 

在/etc/vsftpd/vsftpd_user_conf文件夹中

创建每个虚拟用户单独的配置文件

一个虚拟用户一个配置文件,配置文件的名称以虚拟用户用户名命名

 

posted @ 2019-11-22 17:51  这肥猫,好橘!  阅读(318)  评论(0编辑  收藏  举报