ftp是我们最常用的网络协议之一,用于方便的在网络中传输文件。vsftp是Linux平台轻量级的ftp服务软件,它小巧轻快、简单易用。本文介绍CentOS 7下使用yum安装配置vsftpd服务器,包括匿名登录方式、系统用户登录方式和虚拟用户登录三种登录方式的vsftpd服务配置。本文也适用于RHEL、Fedora、Oracle Linux 等其它Linux Redhat发行版本。

一、实验环境:CPU构架:x86_64

Vsftpd版本:vsftpd-3.0.2-21.el7

二、安装准备:

1、关闭SELINUX:  SELINUX为Linux提供安全强化同时,也让Linux服务安装变得更复杂。未正确的为相关服务配置SELINUX,将导致服务无法正常运行。所以对于初学者来说,建议关闭SELINUX。vim /etc/selinux/config:#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加保存退出后,执行“setenforce 0”命令使配置立生效:setenforce 0

三、安装vsftpd服务:

1、使用安装yum安装vsftpd:  使用“yum -y install vsftpd ”命令,会自动安装vsftpd命令和相关依赖包:yum -y install vsftpd

2、备份vsftpd配置文件:cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

四、方案一,配置匿名访问的vsftpd服务:

1、配置vsftpd.conf文件:#允许匿名用户访问

anonymous_enable=YES

#禁止本地用户访问

local_enable=NO

#允许匿名用户创建目录

anon_mkdir_write_enable=YES

#允许匿名用户上传文件

anon_upload_enable=YES

#允许匿名用户执行其他写入操作,如删除

anon_other_write_enable=YES

#设置匿名用户根目录

anon_root=/ftp

2、创建匿名用户目录:# /ftp/pub目录可写,/ftp目录不可写

mkdir -p /ftp/pub

chown -R ftp.ftp /ftp

chmod a-w /ftp

3、启动vsftpd服务:[root@aiezu.com vsftpd]# service vsftpd start

Redirecting to /bin/systemctl start vsftpd.service

4、测试:在另外一台服务器上连接ftp进行测试,使用匿名用户“anonymous”和任意包含"@"字符串的密码进行连接:[root@aiezu.com ~]# ftp xxx.xxx.xxx.xxx

Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).

220 (vsFTPd 3.0.2)

Name (yyy.yyy.yyy.yyy:root): anonymous

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (106,14,37,132,180,191).

150 Here comes the directory listing.

drwxr-xr-x 2 14 50 4096 Mar 24 15:01 pub

226 Directory send OK.

ftp> cd pub

250 Directory successfully changed.

ftp> mkdir ok

257 "/pub/ok" created

ftp> rm ok

250 Remove directory operation successful.

五、方案二,配置本地用户(系统)访问的vsftpd服务:

1、配置主配置文件vsftpd.conf:#禁止匿名用户访问

anonymous_enable=NO

#允许本地用户访问

local_enable=YES

#允许写入操作

write_enable=YES

#禁止用户离开自己的用户根目录

chroot_local_user=YES

#启用用户名单列表

userlist_enable=YES

#设置用户名单列表为白名单(只允许名单中的用户连接到vsftpd)

userlist_deny=NO

#设置用户名单列表文件名

userlist_file=/etc/vsftpd/user_allow

2、添加测试用户和设置权限:  添加用户testuser,设置密码后,添加到"/etc/vsftpd/user_allow"文件,并重启vsftpd服务:[root@aiezu.com ~]# mkdir -p /ftproot/testuser

[root@aiezu.com ~]# useradd -d /ftproot testuser -s /sbin/nologin

[root@aiezu.com ~]# chown -R testuser.testuser /ftproot/testuser

[root@aiezu.com ~]# chmod a-w /ftproot

[root@aiezu.com ~]# passwd testuser

Changing password for user testuser.

New password: (这里输入密码)

passwd: all authentication tokens updated successfully.

[root@aiezu.com ~]# echo "testuser" >> /etc/vsftpd/user_allow

3、重启vsftpd服务:[root@aiezu.com ~]# service vsftpd restart

Redirecting to /bin/systemctl restart vsftpd.service

4、测试:  在另外一台服务器上连接ftp进行测试,使用本地用户“testuser”和你设置的密码进行连接:[root@s2 ~]# ftp xxx.xxx.xxx.xxx

Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).

220 (vsFTPd 3.0.2)

Name (yyy.yyy.yyy.yyy:root): testuser

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (106,14,37,132,223,218).

150 Here comes the directory listing.

drwxr-xr-x 2 1000 1000 4096 Mar 25 12:56 testuser

226 Directory send OK.

ftp> mkdir aa

550 Create directory operation failed.

ftp> cd testuser

250 Directory successfully changed.

ftp> mkdir aa

257 "/testuser/aa" created

ftp> dir

227 Entering Passive Mode (106,14,37,132,89,105).

150 Here comes the directory listing.

drwxr-xr-x 2 1000 1000 4096 Mar 25 12:58 aa

226 Directory send OK.

六、方案三,配置虚拟用户访问的vsftpd服务(推荐方式):1、创建虚拟用户密码文件,奇数行为用户名,偶数行为密码:touch /etc/vsftpd/vir_user.txt

echo -e "aiezuuser\naiezu123" >> /etc/vsftpd/vir_user.txt

2、生成虚拟用户数据库:yum -y install libdb-utils

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

3、配置vsftpd pam验证文件/etc/pam.d/vsftpd:mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

cat < /etc/pam.d/vsftpd

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

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

END

4、修改虚拟数据库文件vir_user.db的权限为700:chmod 700 /etc/vsftpd/vir_user.db

5、增加一个系统用户virftp ,所有虚拟用户都会映射到此用户后对文件系统进行读写操作:

mkdir /ftprootuseradd -d /ftproot virftp -s /sbin/nologin

chown -R virftp.virftp /ftproot

6、设置vsftpd主配置文件/etc/vsftpd/vsftpd.conf:#禁止匿名用户登录

anonymous_enable=NO

#允许本地用户登录

local_enable=YES

#启用虚拟账户

guest_enable=YES

#把虚拟账户映射到系统账户virftp

guest_username=virftp

#使用虚拟用户验证(PAM验证)

pam_service_name=vsftpd

#设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为他的配置文件)

user_config_dir=/etc/vsftpd/vsftpd_viruser

#启用chroot时,虚拟用户根目录允许写入

allow_writeable_chroot=YES

7、设置虚拟用户各自的配置文件:mkdir /etc/vsftpd/vsftpd_viruser/

#配置文件名同虚拟账户名

touch /etc/vsftpd/vsftpd_viruser/aiezuuser

mkdir -p /ftproot/aiezuuser/

chown -R virftp.virftp /ftproot/aiezuuser/

8、在虚拟用户 aiezuuser 的配置文件中写入如下配置/etc/vsftpd/vsftpd_viruser/aiezuuser:# 允许写入

write_enable=YES

#允许浏览FTP目录和下载

anon_world_readable_only=NO

# 允许虚拟用户aiezuuser上传文件

anon_upload_enable=YES

# 允许虚拟用户创建目录

anon_mkdir_write_enable=YES

# 允许虚拟用户aiezuuser执行其他操作(如改名、删除)

anon_other_write_enable=YES

# 上传文件的掩码,如022时,上传目录权限为755,文件权限为644

anon_umask=022

# 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)

local_root=/ftproot/aiezuuser/

9、重启vsftpd服务:service vsftpd restart

10、使用虚拟用户aiezuuser和密码aiezu123进行连接vsftpd测试: [root@S2 ~]# ftp xxx.xxx.xxx.xxx

Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).

220 (vsFTPd 3.0.2)

Name (yyy.yyy.yyy.yyy:root): aiezuuser

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> mkdir aa

257 "/aa" created

ftp> mkdir bb

257 "/bb" created

ftp> ls

227 Entering Passive Mode (106,14,37,132,129,241).

150 Here comes the directory listing.

drwx------ 2 1000 1000 4096 Mar 25 14:36 aa

drwx------ 2 1000 1000 4096 Mar 25 14:36 bb

226 Directory send OK.

七、常见问题:

问题一:连接到vsftpd服务器时,提示:500 OOPS: vsftpd: refusing to run with writable root inside chroot()解决方法:请参考http://aiezu.com/question/112.html

八、附录:

1、vsftpd相关目录和文件介绍:/etc/vsftpd/vsftpd.conf:vsftpd服务主配置文件;

/etc/vsftpd/ftpusers:设置不允许访问ftp服务的系统用户(黑名单),一行一个用户名;

/etc/vsftpd/user_list:用于设置允许或禁止访问vsftpd服务的系统用户名单,主配置文件的“userlist_enable”参数决定此名单是否生效,“userlist_deny”参数决定此名单是黑名单还是白名单;

/etc/pam.d/vsftpd:vsftpd的pam模块的配置文件,用来认证身份和阻止特定用户;

/usr/sbin/vsftpd:vsftpd的主要执行文件;

/var/ftp:vsftpd的默认匿名用户登录的根目录。

2、主配置文件vsftpd.conf相关参数介绍:  vsftpd的配置参数很多,我们可以通过man 5 vsftpd.conf命令获取到vsftpd.conf配置文件的详细帮助信息。下面介绍一些vsftpd常用的参数。

①. vsftpd服务全局相关参数:参数描述

connect_from_port_20=YES|NO是否使用20号端口做为ftp-data的端口号

listen_port=21设置vsftpd服务监听的端口号

listen=YES|NO设置vsftpd是否stand alone方式启动

pasv_enable=YES|NO是否开启被动模式

pasv_max_port=0

pasv_min_port=0设置被动模式(passive mode)使用的端口范围,为0时不受限制

max_Clients=0当vsftpd以stand alone运行时,用来设置最大同时在线数

max_per_ip=0用于设置同一IP允许的同时最大连接数

idle_session_timeout=300如果用户300秒内没有命令操作,则强制离线

ftpd_banner="欢迎信息"

banner_file=/path/file通过字符串或者文件的方式设置连接到vsftpd服务器时的欢迎信息

dirmessange_enable=YES|NO

message_file=.message配置ftp进入目录时显示目录下某个文件的内容做为提示信息

ascii_download_enable=YES|NO

ascii_upload_enable=YES|NO是否允许ascii方式传输

xferlog_enable=YES|NO

xferlog_file=/var/log/vsftpd.log是否记录用户下载上传的文件②. vsftpd用户、权限相关参数:参数描述

write_enable=YES|NO用来设置是否允许用户上传文件

guest_username=ftp指定来宾用户身份的用户名

guest_enable=YES|NO是否将非匿名用户映射成来宾用户。

local_enable=YES|NO是否允许/etc/passwd中的用户以实体用户的身份登录到ftp服务器。

local_max_rate=0设置最大传输速度,单位为bytes/s

chroot_local_user=YES|NO

chroot_list_enable=YES|NO

chroot_list_file=/etc/vsftpd/chroot_list用来设置哪些用户被限制在自己的目录内无法离开

allow_writeable_chroot=YES|NO启用chroot时用户根目录是否允许写入,默认否

userlist_enable=YES|NO

userlist_deny=YES|NO

userlist_file=/etc/vsftpd/user_list用来阻止或者允许相关用户登录到vsftpd服务器;

userlist_file:指定允许或禁止访问vsftpd服务的系统用户名单文件;

userlist_enable:决定名单是否生效;

userlist_deny:决定此名单是黑名单还是白名单;

anonymous_enable=YES|NO是否允许anonymouns用户登录到vsftpd服务器

anon_root=/var/ftp设置匿名用户根目录

anon_world_readable_only=YES|NO匿名用户是否只允许下载可读的文件

anon_mkdir_write_enable=YES|NO

anon_upload_enable=YES|NO

anon_other_write_enable=YES|NO设置匿名用户的写入权限

no_anon_password=YES|NOanonymous登录时是否可以省略密码。

(匿名用户使用用户名“anonymous”,密码使用任意包含“@”字符的字符串登陆)

anon_max_rate=0设置anonymous的最大传输速度。

anon_umask=077anonymous用户上传文件的权限掩码。

linux yum vsftpd,CentOS 7 使用Yum方式安装配置vsftpd服务相关推荐

  1. linux 7 pxe,CentOS 7.6 PXE方式安装和配置

    以下配置文档亲手配置有效,其中为了省事关闭了selinux和防火墙. yum -y install dhcp tftp-server syslinux httpd xinetd systemctl d ...

  2. Linux下安装配置vsftpd

    Linux下安装配置vsftpd 安装vsftpd服务器 yum -y install vsftpd 可以使用rpm -qa vsftpd命令确认是否安装好vsftpd服务器. vsftpd.conf ...

  3. 文本安装红旗Linux,红旗Linux桌面4.1正式版文本方式安装过程详细图解.doc

    红旗Linux桌面4.1正式版文本方式安装过程详细图解 很多用810或815集成显卡或者其它红旗Linux桌面4.1正式版不支持的显卡.显示器的用户,在取用图形界面方式安装过程或安装后进入系统时会出现 ...

  4. Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1] 安装并配置Vsftpd. [root@server ~]# yu ...

  5. SUSE Linux 11里Nginx+Resin+JSP+Memcached+MySQL安装配置整合

    服务器运维与网站架构|Linux运维|X研究 let's face reality,loyalty to an ideal! 首页 Linux Nginx Security Shell 服务器架构 互 ...

  6. linux计算服务器配置,Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1]安装并配置Vsftpd. [root@server ~]# yum ...

  7. CentOS 6.3下NFS安装配置

    CentOS 6.3下NFS安装配置 一.环境介绍   NFS服务器:CentOS6.3 192.168.8.20 NFS客户端:CentOS6.5 192.168.8.39 二.服务器端安装配置   ...

  8. linux下安装配置redis服务

    2019独角兽企业重金招聘Python工程师标准>>> linux下安装配置redis服务 2016年03月25日 15:39:31 coding_everyday 阅读数:3530 ...

  9. CentOS 6.6下Redis安装配置记录

    这篇文章主要介绍了CentOS 6.6下Redis安装配置记录,本文给出了安装需要的支持环境.安装redis.测试Redis.配置redis等步骤,需要的朋友可以参考下 在先前的文章中介绍过redis ...

  10. Linux/Openwrt路由安装配置UPNP服务提高迅雷下载速度

    Linux/Openwrt路由安装配置UPNP服务提高迅雷下载速度 发布时间:September 7, 2012 // 分类:OpenWrt // 1 Comment 路由器下电脑为实现互联网端到端的 ...

最新文章

  1. 数组排列如何更有效的查询
  2. node process.env
  3. SPOJ8222(后缀自动机--出现次数最多的子串)
  4. arraylist切割_jdk8 stream list分割 切割 分批次处理工具类
  5. java中生成1000~10000之间的随机数
  6. 苹果cms v10 仿电影淘淘PC+WAP模板
  7. 原生JS、jQuery 遍历方法总结
  8. 搭建一个项目的准备工作
  9. PHP+MYSQL 出现乱码的解决方法
  10. 将Windows网络适配器共享网络的ip:192.168.137.1 改为其他IP
  11. php data取年月,PHP-date函数 年、月、日参数详解
  12. MATLAB处理txt文档数据——以处理pscad输出数据为例
  13. matlab数字电路仿真,MATLAB环境下的数字电路仿真
  14. 利用条形码生成器在Word 2013中轻松制作条形码的方法
  15. AI算法工程师 | 02人工智能基础-Python基础(四)os模块_打开读取文件
  16. (闪存)存储基础知识
  17. 通达OA工作流程-使用方法
  18. pytorch GradScale 梯度缩放算子
  19. C语言利用瑞丽分布产生高斯白噪声
  20. 一文搞懂FIFO深度计算

热门文章

  1. 高逼格的console.log(),要不来看下
  2. 1153: 简易版最长序列 C语言
  3. 卷积神经网络中感受野的详细介绍
  4. TI运放仿真软件TINA
  5. svchost.exe占网速的解决办法
  6. 明朝崇祯十年丁丑科状元刘同升后裔在松滋
  7. 吉林大学计算机学院林丛郁,吉林大学珠海学院201奖学金
  8. VR游戏开发干货教程:如何创建一个VR项目
  9. C++ 实现文件分割、合并
  10. 对小学语文教学的几点心得体会