Vsftpd服务器

在生产环境中,ftp服务器

关闭防火墙和selinux

systemctl stop firewalld
 setenforce 0

  

# yum -y install vsftpd*
已加载插件:fastestmirror, langpacks
base                                                                                        | 3.6 kB  00:00:00     
extras                                                                                      | 3.4 kB  00:00:00     
updates                                                                                     | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-22.el7 将被 安装
---> 软件包 vsftpd-sysvinit.x86_64.0.3.0.2-22.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

===================================================================================================================
 Package                         架构                   版本                            源                    大小
===================================================================================================================
正在安装:
 vsftpd                          x86_64                 3.0.2-22.el7                    base                 169 k
 vsftpd-sysvinit                 x86_64                 3.0.2-22.el7                    base                  23 k

事务概要
===================================================================================================================
安装  2 软件包

总下载量:192 k
安装大小:351 k
Downloading packages:
(1/2): vsftpd-3.0.2-22.el7.x86_64.rpm                                                       | 169 kB  00:00:00     
(2/2): vsftpd-sysvinit-3.0.2-22.el7.x86_64.rpm                                              |  23 kB  00:00:01     
-------------------------------------------------------------------------------------------------------------------
总计                                                                                95 kB/s | 192 kB  00:00:02     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : vsftpd-3.0.2-22.el7.x86_64                                                                     1/2 
  正在安装    : vsftpd-sysvinit-3.0.2-22.el7.x86_64                                                            2/2 
  验证中      : vsftpd-sysvinit-3.0.2-22.el7.x86_64                                                            1/2 
  验证中      : vsftpd-3.0.2-22.el7.x86_64                                                                     2/2 

已安装:
  vsftpd.x86_64 0:3.0.2-22.el7                        vsftpd-sysvinit.x86_64 0:3.0.2-22.el7                       

完毕!

  

systemctl start vsftpd
ps -fe |grep vsftpd
root       4341      1  0 10:23 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       4351   4112  0 10:23 pts/1    00:00:00 grep --color=auto vsftpd

  

Vsftpd.conf默认配置文件详解如下

anonymous_enable=YES		开启匿名用户访问;
local_enable=YES	        启用本地系统用户访问;
write_enable=YES                本地系统用户写入权限;
local_umask=022			本地用户创建文件及目录默认权限掩码;
dirmessage_enable=YES		打印目录显示信息,通常用于用户第一次访问目录时,信息提示;
xferlog_enable=YES		启用上传/下载日志记录;	
connect_from_port_20=YES	FTP使用20端口进行数据传输;
xferlog_std_format=YES		日志文件将根据xferlog的标准格式写入;
listen=NO			Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES;
listen_ipv6=YES			启用IPV6监听;
pam_service_name=vsftpd	        登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证;
userlist_enable=YES	        vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP;
tcp_wrappers=YES	        设置vsftpd与tcp wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。

 

1,设置匿名用户访问。

启动Vsftpd服务后,通过Windows客户端资源管理器访问Vsftp服务器端

 

匿名用户只有查看权限,无法创建、删除、修改

如果允许匿名用户能够上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下代码:

anon_upload_enable=YES      	       允许匿名用户上传文件;
anon_mkdir_write_enable=YES         允许匿名用户创建目录;
anon_other_write_enable=YES         允许匿名用户其他写入权限。

匿名用户完整vsftpd.conf配置文件代码如下:

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YE 

由于默认Vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用如下chown和chmod任意一种即可,设置命令如下:

chown -R   ftp      /var/ftp/pub/

 如上Vsftpd.conf配置文件配置完毕,同时权限设置完,重启vsftpd服务即可,通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作

 Vsftpd系统用户配置

实现Vsftpd系统用户方式验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。Vsftpd系统用户实现方法步骤如下:

(1)      Linux系统中创建系统用户zhangsan、lisi,分别设置密码为123456:

useradd   zhangsan
useradd   lisi
echo 123456|passwd --stdin  jfedu1
echo 123456|passwd --stdin  jfedu2

 

(1)      修改vsftpd.conf配置文件代码如下:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

  通过Windows资源客户端验证,使用zhangsan、lisi用户登录FTP服务器,即可上传文件、删除文件、下载文件,zhangsan、lisi系统用户上传文件的家目录在/home/zhangsan、/home/lisi下

# cd /home/zhangsan/
# pwd
/home/zhangsan
# ls
1234.txt  123.txt  lala

  Vsftpd虚拟用户配置

Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

Vsftpd虚拟用户企业案例配置步骤如下:

(1)      安装Vsftpd虚拟用户需用到的软件及认证模块:

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

(2)创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中wangwu、jzhaoliu为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可:

# cat /etc/vsftpd/ftpuser.txt 
wangwu
123456
zhaoliu
123456

(3)      生成Vsftpd虚拟用户数据库认证文件,设置权限700:

db_load  -T  -t  hash  -f  /etc/vsftpd/ftpuser.txt  /etc/vsftpd/vsftpd_login.db
chmod  700  /etc/vsftpd/vsftpd_login.db

    配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行  

auth      required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
account   required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login 

     所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:

useradd    -s   /sbin/nologin    ftpuser

  

(1)      完整vsftpd.conf配置文件代码如下:

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
#config virtual user FTP
pam_service_name=vsftpd                        虚拟用户启用pam认证;
guest_enable=YES                               启用虚拟用户
guest_username=ftpuser                         映射虚拟用户至系统用户ftpuser  
user_config_dir=/etc/vsftpd/vsftpd_user_conf   设置虚拟用户配置文件所在的目录;
virtual_use_local_privs=YES                    虚拟用户使用与本地用户相同的权限。

(1)      至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录

mkdir  -p    /etc/vsftpd/vsftpd_user_conf/

(1)      如下分别为虚拟用户wangwu、zhaoliu用户创建配置文件:

vim /etc/vsftpd/vsftpd_user_conf/wangwu,同时创建私有的虚拟目录,代码如下:

local_root=/home/ftpuser/wangwu             jfedu002虚拟用户配置文件路径
write_enable=YES                             允许登陆用户有写权限;
anon_world_readable_only=YES               允许匿名用户下载,然后读取文件;
anon_upload_enable=YES                   允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES               允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;

anon_other_write_enable=YES 允许匿名用户其他权限,例如删除、重命名等。

  

vim /etc/vsftpd/vsftpd_user_conf/zhaoliu,同时创建私有的虚拟目录,代码如下:

local_root=/home/ftpuser/zhaoliu
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

(1)      创建虚拟用户各自虚拟目录:

mkdir -p /home/ftpuser/{wangwu,zhaoliu} ;chown -R ftpuser:ftpuser /home/ftpuser

 重启Vsftpd服务,通过Windows客户端资源管理器登录Vsftpd服务端,测试结果

 

  

  

原文地址:https://www.cnblogs.com/nshgo/p/9450710.html