Vsftp安装配置(超详细版)

news2024/11/20 23:19:29

目录

1 FTP、Vsftp介绍

 1.1 FTP介绍

 1.2 Vsftp介绍

 1.3 Vsftp的登录类型

2 Vsftp安装配置

 2.1 更换源

 2.2 安装epel源

 2.3 安装Vsftpd及相关依赖

 2.4 vsftpd配置文件说明

 2.5 vsftpd 配置详解

 2.6 备份配置文件

3 vsftpd 配置匿名用户

 3.1 编辑配置文件

 3.2 常用的匿名FTP配置项

 3.3 启动vsftp服务 

 3.4 登录验证

 3.5 修改权限上传

  3.5.1 修改权限

  3.5.2 上传文件

4 vsftp配置本地(系统)用户

 4.1 创建测试用户

 4.2 修改配置文件

 4.3 常用的本地用户FTP配置项

 4.4 添加用户到白名单

 4.5 登录测试

5 vsftp配置虚拟用户

 5.1 建立虚拟FTP用户账号

 5.2 创建虚拟用户文件

 5.3 创建数据文件

 5.4 建立支持虚拟用户的PAM认证文件

 5.5 修改配置文件

 5.6 常用的全局配置项

 5.7 为用户建立独立的配置目录及文件

 5.8 创建虚拟用户数据存放位置

 5.9 重启vsftp服务

 5.10 登录测试


1 FTP、Vsftp介绍

 1.1 FTP介绍

FTP协议,即文件传输协议(File Transfer Protocol),是一种用于在网络上进行文件传输的协议。它是一种传输文件的标准方式,可以将文件在网络上的不同计算机之间进行传递和下载。FTP协议是TCP/IP协议族中的一个应用层协议。它利用客户端-服务器模型,通过两个不同的端口进行通信。FTP客户端通过21号端口连接到FTP服务器,然后在20号端口上进行数据传输。FTP协议支持多种认证方式,包括明文、口令、SSL/TLS等。FTP在文件传输方面已经得到广泛的应用,它被用于管理网站网页,进行软件升级和备份等。 

FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之
为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
目前主流的FTP服务器端软件包括: Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd

 1.2 Vsftp介绍

VSFTP,全称为Very Secure FTP,是一种高度安全的FTP服务器软件。它是一款针对安全和性能进行优化的FTP服务器,拥有速度快、稳定、易用和安全性高的特点。VSFTP是在GPL许可证下发布的自由软件,可以在大多数类UNIX系统中使用。VSFTP支持IPv6、SSL/TLS加密传输,同时还提供了多种认证方式,包括本地用户、PAM、LDAP等等。同时,VSFTP也支持虚拟用户和虚拟目录,便于管理员进行用户管理。总之,VSFTP是一款功能强大且安全性高的FTP服务器软件,深受系统管理员和开发者的欢迎。

 1.3 Vsftp的登录类型

VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录,匿名用户也是虚拟用户,映射的系统用户为ftp详细信息可以通过man vsftpd.conf(手册)查看。

2 Vsftp安装配置

 2.1 更换源

将你这台机器的本地源换成国内的阿里的源。(在后面的安装过程相对较快)

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 2.2 安装epel源

yum -y install epel-release

如图即表示安装成功~

 2.3 安装Vsftpd及相关依赖

yum -y install vsftpd* pam* db4*

vsftpd: ftp软件

pam: 认证模块

db4: 支持文件数据库

显示“完毕!”字样即表示安装成功!

 2.4 vsftpd配置文件说明

配置文件

作用

/etc/vsftpd/vsftpd.conf

vsftpd的核心配置文件

/etc/vsftpd/ftpusers

用于指定哪些用户不能访问FTP服务器

/etc/vsftpd/user_list

指定允许使用vsftpd的用户列表文件

/etc/vsftpd/vsftpd_conf_migrate_sh

是vsftpd操作的一些变量和设置脚本

/etc/ftp/

默认情况下匿名用户的根目录

 2.5 vsftpd 配置详解

属性

属性值

含义

anonymous_enable

YES/NO

是否允许匿名用户(anonymous)登录FTP,如果该设置被注释,则默认允许。

local_enable

YES/NO

是否允许本地系统用户登录

write_enable

YES/NO

是否开启任何形式的FTP写入命令,上传文件

local_umask

xxx

本地用户的umask设置,如果注释该设置则默认为077,但一般都设置成022

anon_upload_enable

YES/NO

是否允许匿名用户上传文件,如果要设置为允许,则需要先开启write_enable,否则无效,此外对应目录还要具有写权限

anon_mkdir_write_enable

YES/NO

是否允许匿名用户创建新目录

dirmessage_enable

YES/NO

当进入某个目录时,发送信息提示给远程用户

xferlog_enable

YES/NO

是否开启上传/下载的日志记录

connect_from_port_20

YES/NO

是否使用20端口来连接FTP

chown_uploads

YES/NO

匿名上传的文件时是否由某一指定用户chown_username所有

chown_username

有效用户名

匿名上传的文件由该设定用户所有

xferlog_file

有效路径

设置日志文件的保存位置,默认为/var/log/xferlog

 2.6 备份配置文件

vsftpd修改配置前备份配置文件。(如果不备份,配置错误后,要把文件、用户删除掉,非常麻烦)

进入/etc/vsftpd/中

cd /etc/vsftpd/

ls命令查看

清空/tmp/

cd /tmp/
rm -rf *

cd -:返回进入此目录之前所在目录

cd -

开始备份

cp vsftpd.conf{,.bak}

ls命令查看,发现多出vsftpd.conf.bak

3 vsftpd 配置匿名用户

 3.1 编辑配置文件

vi vsftpd.conf

进入后会发现很多注释(带#的),需要修改如下内容,但是很麻烦,建议直接全部删除,直接输入如下内容。

write_enable=YES

anon_umask=022
anonymous_enable=YES
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=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

拓展 

如果使用vsftp的是本地用户,对应修改配置文件中的 local_umask 的值。
如果使用vsftp的是匿名用户,对应修改配置文件中的 anon_umask 的值。

 3.2 常用的匿名FTP配置项

anonymous_enable=YES                        # 是否允许匿名用户访问
anon_umask=022                                    # 匿名用户所上传文件的权限掩码
anon_root=/var/ftp                                   # 设置匿名用户的FTP根目录
anon_upload_enable=YES                     # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES              # 是否允许匿名用户创建目录

anon_other_write_enable=YES          # 是否允许匿名用户有其他写入权 (改名,删除,覆盖)
anon_max_rate=0                                    # 限制最大传输速率(字节/秒) 0为无限制

 3.3 启动vsftp服务 

重新启动vsftpd服务

systemctl restart vsftpd

【如果此时报错一定是因为刚才配置文件内写错了,重新回去编辑。】

查看是否有vsftpd进程。

方法一:

ps aux | grep vsftpd

 方法二:

先下载好net工具

yum -y install net-tools

查看

netstat -lnpt | grep vsftpd

 3.4 登录验证

方法一:工具访问

使用Xftp工具登录。(需要提前下载)

进入Xftp后点击建立连接,主机输入IP地址,端口号改为21,点击连接。出现FTP用户身份验证窗口,点击匿名用户登录--确定。

出现pub文件夹,说明我们成功啦~

方法二:浏览器访问

首先先关闭好防火墙。

systemctl stop firewalld

在浏览器中输入ftp://+IP地址访问。【每个人IP不一样,不知道IP地址的使用ip a命令查看】

ftp://+IP地址

 3.5 修改权限上传

  3.5.1 修改权限

进入/var/ftp/中

cd /var/ftp/

ls命令查看下

查看pub文件夹的属主和属组

ll -d pub/

修改属主和属组

chown -R ftp.ftp pub/ 

修改完成后重新查看下,root变成ftp即表示修改成功。

修改完成后,一定不要忘记重新启动vsftpd服务(不重启服务不生效)

systemctl restart vsftpd

  3.5.2 上传文件

方法一:Xftp工具

关闭刚才打开的连接窗口,重新登录。(因为修改了属主和属组)

还是使用匿名登录,登录成功后,进入到pub目录,右击桌面的“新建RTF文档”--传输,在pub目录下出现“新建RTF文档.rtf”文件,说明我们成功啦!

这时候也可以使用ls命令查看。

方法二:浏览器

先创建个文件abc.txt

touch /var/ftp/abc.txt

还是使用ftp://+IP地址访问浏览器。

出现abc.txt文件,说明我们成功啦~

4 vsftp配置本地(系统)用户

 4.1 创建测试用户

创建两个用户zhansan、lisi

useradd zhansan
useradd lisi

设置密码

passwd zhansan
passwd lisi

 4.2 修改配置文件

vi /etc/vsftpd/vsftpd.conf

将原有内容删除,编辑如下内容:

local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd

userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES

 编辑完成后保存退出。

重新启动vsftp服务

systemctl restart vsftpd

【如果遇到:Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.情况,请查看另一篇文章解决:http://t.csdnimg.cn/TXZhw】

 4.3 常用的本地用户FTP配置项

local_enable=YES                        # 是否允许本地系统用户访问

local_umask=077                         #本地用户所上传文件的权限掩码

local_root=/var/ftp                         # 设置本地用户的FTP根目录

chroot_list_enable=YES                # 表示是否开启chroot的环境,默认没有开启

chroot_list_file=/etc/vsftpd/chroot_list                 # 表示写在/etc/vsftpd/chroot_list文件里面的用户 是不可以出chroot环境的,默认是可以的。
Chroot_local_user=YES                 # 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。

local_max_rate=0                          # 限制最大传输建率(字节/秒) 0为无限制

 4.4 添加用户到白名单

vi /etc/vsftpd/user_list

在文件中最后添加zhangsan和lisi

zhansan
lisi

 添加完成后重新启动vsftp服务

systemctl restart vsftpd

 4.5 登录测试

方法一:使用Xftp工具

再次使用匿名登录,发现登录不上去,显示“用户身份验证失败是否要重试”页面。

点击否。

在“FTP用户身份验证”页面用户名输入zhangsan或者lisi,输入密码登录。

cd /home/lisi/

创建zhangsan.txt文件 

touch lisi.txt

 重新启动vsftp服务

systemctl restart vsftpd

 重新启动后在Xftp工具中再重新登录一下。

发现出现lisi.txt文件,成功!

方法二:使用Xshell工具

点击新建

出现如下界面,名称随便起一个,主机输入IP地址。然后点击连接。

 在如下界面输入用户名lisi,并选择记住用户名。

输入密码。选择记住密码并点击确认。 

 进入后我们ls命令查看,发现没有文件。

我们跟方法一中一样在root用户下创建lisi.txt文件并重新启动vsftp服务,然后进行查看。

root用户终端

lisi用户终端

发现本来没有,现在出现lisi.txt文件,说明我们成功啦~

5 vsftp配置虚拟用户

 5.1 建立虚拟FTP用户账号

useradd -s /sbin/nologin vu

 5.2 创建虚拟用户文件

cd /etc/vsftpd/
vi user

 添加如下内容:

zhao
12345
zhang
12345

奇数行代表用户名,偶数行代表密码。【切记,如下账号和密码不能写在同一行中】

 5.3 创建数据文件

通过 db_load工具创建出 Berkeley DB 格式的数据库文件。

db_load -T -t hash -f user user.db

-f                  指定数据原文件
-T                 允许Berkeley DB的应用程序使用文本格式转换的DB数据文件
-t hash          读取文件的基本方法

ls命令查看。

出现user.db,证明我们成功啦

 5.4 建立支持虚拟用户的PAM认证文件

vi /etc/pam.d/vsftpd.vu

编写配置文件,最后的路径不要写错!

auth   required   /lib64/security/pam_userdb.so db=/etc/vsftpd/user   
account   required   /lib64/security/pam_userdb.so db=/etc/vsftpd/user

【对应刚才生成user.db文件 】

 5.5 修改配置文件

vi vsftpd.conf

编写如下内容。 

write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vu
pam_service_name=vsftpd.vu
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir

 5.6 常用的全局配置项

listen=YES                                #是否以独立运行的方式监听服务

listen_address=192.168.10.112               #设置监听FTP服务的IP地址

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

write_enable=YES                        #是否启动写入权限(上传、删除文件)

download_enable=YES                   #是否允许下载文件

dirmessage_enable=YES                #用户切换目录显示.message文件

xferlog_enable=YES                        # 启用日志文件,记录到/var/log/xferlog

xferlog_std_format=YES    # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式

connect_from _port_20=YES        # 允许服务器主动模式 (从20端口建立数据连接)

pasv_enabTe=YES                        # 允许服务器被动模式
pasv_max_port=24600                   # 设置被动模式服务器的最大端口号
pasv_min_port=24500                        # 设置黄动模式服务的最小端口
pam_service_name=vsftpd                # 用户认证的PAM文件位置

(/etc/pam.d/vsftpd.vu)

userlist_enable=YES                        # 是否启用user_list列表文件
userlist_deny=YES                        # 是否禁用user_list中的用户

max_cIients=0                                #限制并发客户端连接数

max_per_ip=0                                # 限制同一IP地址的井发连接数
tcp_wrappers=YES                        #是否启用tcp_wrappers主机访问控制

chown_username=root                #表示匿名用户上传的文件的拥有人是root,默认关闭

ascii_upload_enable=YES           # 表示是否允许用户可以上传一个二进制文件,默认不允许

ascii_download_enable=YES        #代表是否允许用户下载个一个二进制文件,默认不允许
nopriv_user=vsftpd                        #设置支撑vsftpd服务的宿主用户为手动建立的vsftpd用户

async_abor_enable=YES                # 设定支持异步传输功能
ftpd_banner=welcome to Awei FTP servers          # 设定vsftpd的登录标语
guest_enable=YES                        # 设置启用虚拟用户功能

guest_username=ftpuser                 #指定虚拟用户的宿主用户

virtual_use_local_privs=YES                # 设定虚拟用户的权限符合他们的宿主用户

user_config_dir=/etc/vsftpd/vconf        # 设定虚拟用户个人vsftp的配置文件存放路径

 5.7 为用户建立独立的配置目录及文件

mkdir /etc/vsftpd/user_dir

ls命令查看

进入刚创建的文件夹

cd /etc/vsftpd/user_dir

 vi zhao用户

vi zhao

输入如下命令(虚拟用户数据的存放路径) 

local_root=/etc/vsftpd/data

 5.8 创建虚拟用户数据存放位置

cd ..返回上一目录

cd ..

创建data目录

mkdir data

授权

chmod 777 data/

 5.9 重启vsftp服务

systemctl restart vsftpd

 5.10 登录测试

使用Xftp工具,用户名zhao,密码12345,进行登录。

cd /etc/vsftpd/data

创建一个zhao.txt文件夹。

touch zhao.txt

重点:

本地用户和虚拟用户不能同时登录、因为认证方式只有一种

本地是 pam_service_name =vsftpd

虚拟是 pam_service_name =vsftpd.vu

Xftp工具中重新登录一下,发现有zhao.txt文件,即说明成功啦~

id zhao

查看是否有zhao用户,没有得啦,O(∩_∩)O哈哈~

创作不易,给个三连吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传输层 | UDP协议、TCP协议

之前讲过的http与https都是应用层协议,当应用层协议将报文构建好之后就要将报文往下层传输层进行传递,而传输层就是负责将数据能够从发送端传到接收端。 再谈端口号 端口号(port)标识了一个主机上进行通信的不同的应用程序,在TCP/IP协议中&…

让你的服务器变成游戏世界:打造游戏化在线社区的“秘诀”

引言 假如我有一台服务器,我希望打造一款游戏化的在线社区。那么,如何打造这样一个社区程序并成功运营呢?让我们一起来畅想吧! 一、确定社区的主题和目标群体 打造一款游戏化的在线社区,首先,我们需要明确…

【Android 性能优化:内存篇】——WebView 内存泄露治理

背景:笔者在公司项目中优化内存泄露时发现WebView 相关的内存泄露问题非常经典,一个 Fragment 页面使用的 WebView 有多条泄露路径,故记录下。 Fragment、Activity 使用WebView不释放 项目中一个Fragment 使用 Webview,在 Fragm…

区块链(12):java区块链项目之集群部署

选择3台服务器进行区块链项目部署 1 nginx部署页面 1.1 部署静态页面 1.2 nginx 反向代理的配置 修改nginx.conf文件 nginx 默认端口是http 80或者https443 将80代理到8080 location /blockchain {proxy_pass http://localhost:8080/blockchain;proxy_redirect default; …

深度学习-卷积神经网络

文章目录 应用卷积神经网络卷积处理分类问题 应用 图片分类图片检索图片分割图片风格迁移姿态估计OCR等 卷积神经网络 核概念计算机视觉中处理图片的核大小是通过经验得来的,而深度学习中的权重大小是自己学习出的。卷积VS神经网络:一个是局部观察一个…

进阶JAVA篇- LocalDate 类与 LocalTime 类、LocalDateTime 类的常用API(六)

目录 API 1.0 LocalDate 类与 LocalTime 类、LocalDateTime 类的API说明 1.1 如何创建LocalDate 类与 LocalTime 类、LocalDateTime 类的对象 1.2 LocalDate 类与 LocalTime 类、LocalDateTime 类中的以 get 开头实例方法 1.3 LocalDateTime 类中的 toLocalDat…

【Android】VirtualDisplay创建流程及原理

Android VirtualDisplay创建流程及原理 Android DisplayManager提供了createVirtualDisplay接口,用于创建虚拟屏。虚拟屏可用于录屏(网上很多资料说这个功能),分屏幕(比如一块很长的屏幕,通过虚拟屏分出不…

Windows服务器安装php+mysql环境的经验分享

php mysql环境 下载IIS Php Mysql环境集成包,集成包下载地址: 1、Windows Server 2008 一键安装Web环境包 x64 适用64位操作系统服务器:下载地址:链接: https://pan.baidu.com/s/1MMOOLGll4D7Eb5tBrdTQZw 提取码: btnx 2、Windows Server 2008 一键安装Web环境包 32 适…

【开篇】汇编语言之基础知识篇

文章目录 📋前言一. ⛳️机器语言二. ⛳️汇编语言的产生三. ⛳️汇编语言的组成四. ⛳️存储器五. ⛳️指令和数据六. ⛳️存储单元七. ⛳️CPU 对存储器的读写7.1 地址总线7.2 数据总线7.3 控制总线 📝总结 📋前言 🏠 个人主页&…

OOA/D 时统一过程(UP)中的 迭代、 进化 和 敏捷

一、迭代和进化式开发的优势 相对于顺序或“瀑布”软件开发模型,迭代和进化式开发(iterative and evolutionary development )对部分系统及早地引入了编程和测试,并重复这一循环。这种方式通常会还没有详细定义所有需求的情况下假…

阿里云易立:以云原生之力,实现大模型时代基础设施能力跃升 | KubeCon 主论坛分享

今天,由云原生计算基金会 CNCF 主办的 KubeConCloudNativeConOpenSourceSummit China 2023 主论坛在上海举办。阿里云容器服务负责人易立在主论坛发表演讲,介绍阿里云为大模型提供的基础设施能力,以及通过云原生 AI 的方式助力大模型普惠提效…

【Eclipse】设置自动提示

前言: eclipse默认有个快捷键:alt /就可以弹出自动提示,但是这样也太麻烦啦!每次都需要手动按这个快捷键,下面给大家介绍的是:如何设置敲的过程中就会出现自动提示的教程! 先按路线找到需要的页…

[计算机提升] 用户和用户组

1.1 用户和用户组 1.1.1 用户 用户账户是计算机操作系统中用于标识和管理用户身份的概念。 每个用户都拥有一个唯一的用户账户,该账户包含用户的登录名、密码和其他与用户身份相关的信息。 用户账户通常用于验证用户身份,并授权对系统资源的访问权限。…

Ourphp建站系统存在SQL注入

查询用户 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。 免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任…

时间显示相关

显示当前的时间 显示当前的年份 date %Y date %y 显示当前的月 date %m 显示当前的日 date %d 显示小时 date %H 显示分钟 date %M 显示秒 date %S 组合显示 date …

掌握优先级队列:提升效率的关键技巧

目录 优先级队列的概念优先级队列的模拟实现堆的创建堆的插入与删除堆的插入堆的删除 用堆模拟实现优先级队列 常见接口了解PriorityQueue的几种常见构造方法 优先级队列的概念 队列是一种先进先出的数据结构,但在一些情况下我们要优先处理一些情况,比如…

B2R Raven: 2靶机渗透

B2R Raven: 2靶机渗透 视频参考:ajest :https://www.zhihu.com/zvideo/1547357583714775040?utm_id0 原文参考:ajest :https://www.zhihu.com/column/c_1403138803561816064 原文参考:ajest https://zhuanlan.zhih…

从0备战蓝桥杯:找出只出现一次的数字,数单身狗

前言:在部分大厂笔试时经常会使用OJ题目,这里对《剑指offer》中的俩个题目进行思路分析和讲解,希望对各位读者有所帮助。 题目来源选自力扣网 目录: 单个只出现一次的数字: 力扣链接: 题目描述 &#xf…

1.Vue-在独立页面实现Vue的增删改查

题记 在独立页面实现Vue的增删改查&#xff0c;以下是具体的代码&#xff0c;和操作流程。 编写index.html页面 index.html文件如下&#xff1a; <!DOCTYPE html> <html> <head><title>Vue CRUD Example</title><!--在线导入vue文件-->&l…

【网络协议】聊聊网络分层

常用的网络协议 首先我们输入www.taobao.com&#xff0c;会先经过DNS进行域名解析&#xff0c;转换为59.82.122.115的公网IP地址。然后就会发起请求&#xff0c;一般来说非加密的使用http&#xff0c;加密的使用https。上面是在应用层做的处理&#xff0c;那么接下来就是到传输…