vsftp文件服务器配置

文件传输协议(File Transfer Protocol,FTP),基于该协议 FTP 客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于 TCP 协议生成一个虚拟的连接, 主要用于控制 FTP 连接信息,同时再生成一个单独的 TCP 连接用于 FTP 数据传输。 用户可以通过客户端向 FTP 服务器端上传、下载、删除文件,FTP 服务器端可以同时提供给 多人共享使用。

FTP 服务是 Client/Server(简称 C/S)模式,基于 FTP 协议实现 FTP 文件对外共享 及传输的软件称之为 FTP 服务器源端,客户端程序基于 FTP 协议,则称之为 FTP 客户端, FTP 客户端可以向 FTP 服务器上传、下载文件。

FTP 基于 C/S 模式,FTP 客户端与服务器端有两种传输模式,分别是 FTP 主动模式、 FTP 被动模式,主被动模式均是以 FTP 服务器端为参照。

一、 Vsftpd 服务器简介:

目前主流的 FTP 服务器端软件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、 Server-U FTP、 FileZilla Server 等软件,其中 Unix/Linux 使用较为广泛的 FTP 服务器 端软件为 Vsftpd 。

非常安全的 FTP 服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd 在 Unix/Linux 发行版中最主流的 FTP 服务器程序,优点小巧轻快,安全易用、稳定高效、 满足企业跨部门、多用户的使用(1000 用户)等。

二、 Vsftpd 服务器安装配置 :

1、安装方式有两种,一种是基于yum方式,另一种是基于源码的方式,本文基于yum方式进行安装,可直接执行如下命令安装:

yum -y install vsftpd* (本例子ftp服务器地址为:192.168.170.132)

2、打印 vsftpd 安装后的配置文件路径、启动 Vsftpd 服务及查看进程是否启动

rpm -ql vsftpd

systemctl start vsftpd

ps -ef |grep vsftpd

3、编辑配置文件vim /etc/vsftpd/vsftpd.conf,配置文件内容详解如下:

  1. anonymous_enable=YES 开启匿名用户访问
  2. local_enable=YES 启用本地系统用户访问;
  3. write_enable=YES 本地系统用户写入权限
  4. local_umask=022 本地用户创建文件及目录默认权限掩码;
  5. dirmessage_enable=YES 打印目录显示信息,通常用于用户第一次访问目录时,信息提示;
  6. xferlog_enable=YES 启用上传/下载日志记录
  7. connect_from_port_20=YES FTP 使用 20 端口进行数据传输;
  8. pam_service_name=vsftpd 登录 FTP 服务器,依据/etc/pam.d/vsftpd 中内容进行认证;
  9. userlist_enable=YES vsftpd.user_list 和 ftpusers 配置文件里用户禁止访问 FTP;

4、通过ftp://192.168.170.132访问(浏览器或者本地盘都可以),可以看到目录如下:

5、 Vsftpd 匿名用户配置:

Vsftpd 默认以匿名用户访问,匿名用户默认访问的 FTP 服务器端路径为: /var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。如需关闭 FTP 匿名用户访问,需修改配置文件/etc/vsftpd/vsftpd.conf,将 anonymous_enable=YES 修改 为 anonymous_enable=NO,重启 Vsftpd 服务即可。

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

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

加入完成后还需要给/var/ftp/pub文件夹赋予其他用户写入权限才可以,命令如下

chmod o+w /var/ftp/pub

然后重新访问即可实现文件上传下载和删除

6、 Vsftpd 系统用户配置:

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

创建系统用户:useradd test

设置密码:echo “test123456” |passwd –stdin test

编辑配置文件,可以将匿名用于访问权限关闭,然后打开系统用户访问,其余可以不变,如图:

配置后,重新通过ftp://192.168.170.132进行访问,输入帐号密码登陆后,测试上传文件与下载文件以及删除文件即可

注意:默认情况下上传的文件路径都在用户家目录下(/host/test目录下)

7、 Vsftpd 虚拟用户配置:

如果基于 Vsftpd 系统用户访问 FTP 服务器,系统用户越多越不利于管理,而且不 利于系统安全管理,鉴于此,为了能更加的安全使用 VSFTPD,需使用 Vsftpd 虚拟用户方式。

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

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

第一、安装 Vsftpd 虚拟用户需用到的软件及认证模块:

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

第二、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中 test1、test2为用户名,12345678为密码,如果有多个用户,依次按格式填写即可,如图:

第三、 生成 Vsftpd 虚拟用户数据库认证文件,设置权限 700:

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

chmod 700 /etc/vsftpd/vsftpd_login.db

注意:每次添加一个虚拟用户,都需要重新执行db_load命令

第四、 配置 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

第六:编辑配置文件,修改内容如下(没有就新增),如图:

注意:在配置文件命令后不要出现空格,否则会报错

去掉如下三个命令前的注释:

chroot_local_user=YES
ascii_upload_enable=YES
ascii_download_enable=YES

说明:

chroot_local_user=YES 禁止用户访问除主目录以外的目录
ascii_upload_enable=YES ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能

去掉后需要在配置文件中添加内容如下:

allow_writeable_chroot=YES

注意: 最新版的vsftpd为了安全必须用户主目录(也就是/home/vsftpd/ftp1)没有写权限,才能登录

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

mkdir -p /etc/vsftpd/vsftpd_user_conf/

第八、分别为虚拟用户test1、test2创建配置文件,命令如下:

vim /etc/vsftpd/vsftd_user_conf/test1,添加内容如下:

注意:在配置文件命令后不要出现空格,否则会报错

第九、 创建虚拟用户各自虚拟目录:

mkdir -p /home/ftpuser/{test1:test2}

第十:重启vsftpd

systemctl restart vsftpd

第十一:可以先通过本地登陆测试,如果有错误会有提示:如图:

最后通过浏览器或者共享盘的方式进行访问,输入帐号密码登陆即可

ftp://192.168.170.132

标签