运行环境:centos6 Vmware

一、安装vsftpd

yum -y install vsftpd

image.png

yum -y install xinetd

image.png


二、配置vsftpd

1、是否开始匿名用户

启动服务之后我们通过lftp命令连接服务器

lftp 172.18.251.126 (服务器的ip)

image.png

登陆成功之后我们可以直接读取pub目录下的文件,无需登陆用户

linux中的vsftpd安装及配置_第1张图片

我们可以通过编辑vsftpd服务端的配置文件来实现

vim /etc/vsftpd/vsftpd.conf

image.png

找到这一行配置,将其改为NO,重新启动服务,匿名用户将无法登陆

image.png

image.png

在服务器端创建一个用户来进行测试

image.png

linux中的vsftpd安装及配置_第2张图片

SO,问题来了,如何让用户不进入自己的家目录,而是直接进入公共目录


2、用户登陆时默认进入公共目录

通过修改服务器中的配置文件(注意:每一次更改服务配置文件后都要重新启动服务才会生效)

vim /etc/vsftpd/vsftpd.conf

添加以下纪录

local_enable=YES
local_root=/var/ftp/pub

image.png

用户登陆测试

linux中的vsftpd安装及配置_第3张图片


3、匿名用户和本地用户上传文件及文件的默认权限

客户端登陆ftp服务器,以匿名用户的方式上传文件(需要先开启匿名用户登陆允许,因为上面我们把匿名用户登陆功能关闭了)

在服务器配置文件中修改或添加

anonymous_enable=YES
anon_upload_enable=YES(默认为no:关闭)
anon_mkdir_write_enable=YES (匿名用户是否能够创建目录)

image.png

在下面截图中我们可以看到匿名用户仍然不能上传文件,匿名用户上传文件还需要让ftp用户对/var/ftp/pub目录有wx权限(匿名用户默认登陆的时ftp用户,下面截图注释会有提到)

image.png

我们通过设置setfacl只赋予ftp用户wx权限

setfacl -m u:ftp:wx /var/ftp/pub

image.png

客户端登陆测试,成功上传

linux中的vsftpd安装及配置_第4张图片

服务器查看,该文件权限为600,可以通过服务器配置文件设置上传文件默认权限

image.png

在配置文件中添加

anon_umask 055

image.png

服务器查看该文件权限(因为没有给用户删除权限,所以默认没有给x权限)

image.png

客户端上传文件进行测试

linux中的vsftpd安装及配置_第5张图片

本地用户上传文件

客户端测试本地用户不能上传文件

linux中的vsftpd安装及配置_第6张图片

服务器端修改配置文件

在服务器配置文件添加(重启服务)

write_enable=YES

image.png


三、配置vsftpd中的chroot

在vsftpd服务器的默认设置中,本地用户可以切换到主目录以外的目录进行浏览访问,这样对于服务器来说是不×××全的,因为任何用户可以随时浏览到别的用户的私有信息,下面介绍如何使用chroot选项来防止这种情况的发生。
与该功能相关的选项主要包括:

chroot_local_user
chroot_list_enable
chroot_list_file

可以通过如下两种方法来设置chroot,从而杜绝上述不安全的情况发生:

(1)设置所有的本地用户执行chroot,只要将/etc/vsftpd/vsftpd.conf文件中的chroot_local_ user值置为YES,即

chroot_local_user=YES

image.png

(2)设置指定的用户执行chroot,按照如下方法进行设置:

chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

设置后,只有/etc/vsftpd.chroot_list文件中指定的用户才能够执行chroot命令。

image.png

未设置chroot之前的效果

linux中的vsftpd安装及配置_第7张图片

设置chroot之后的效果

linux中的vsftpd安装及配置_第8张图片

在使用FTP服务的过程中,可以使该服务在非标准端口(非21端口)工作,不过要完成这项工作,须要使vsftpd服务器运行在独立启动方式下,而且要配置vsftpd的主配置文件/etc/vsftpd/vsftpd.conf,将listen_port=10003或者是其他端口号的选项加入该文件即可,然后要重新启动vsftpd守护进程:

service vsftpd restart