当前位置: 首页 > news >正文

vsftp-基于redhat8配置虚拟用户

目录

1.安装vsftp及相关软件包

2.配置vsftp服务

3.创建虚拟用户

4.配置虚拟用户数据

5.配置认证文件

6.配置虚拟用户权限

7.验证vsftp服务


1.安装vsftp及相关软件包

[root@poc ~]# dnf -y install vsftpd psmisc net-tools systemd-devel libdb-devel perl-DBI

Upgraded:

systemd-239-45.el8_4.1.x86_64 systemd-libs-239-45.el8_4.1.x86_64 systemd-pam-239-45.el8_4.1.x86_64 systemd-udev-239-45.el8_4.1.x86_64

Installed:

libdb-devel-5.3.28-40.el8.x86_64 net-tools-2.0-0.52.20160912git.el8.x86_64

perl-Carp-1.42-396.el8.noarch perl-DBI-1.641-3.module_el8.3.0+413+9be2aeb5.x86_64

perl-Data-Dumper-2.167-399.el8.x86_64 perl-Digest-1.17-395.el8.noarch

perl-Digest-MD5-2.55-396.el8.x86_64 perl-Encode-4:2.97-3.el8.x86_64

perl-Errno-1.28-419.el8.x86_64 perl-Exporter-5.72-396.el8.noarch

perl-File-Path-2.15-2.el8.noarch perl-File-Temp-0.230.600-1.el8.noarch

perl-Getopt-Long-1:2.50-4.el8.noarch perl-HTTP-Tiny-0.074-1.el8.noarch

perl-IO-1.38-419.el8.x86_64 perl-IO-Socket-IP-0.39-5.el8.noarch

perl-IO-Socket-SSL-2.066-4.module_el8.4.0+517+be1595ff.noarch perl-MIME-Base64-3.15-396.el8.x86_64

perl-Math-BigInt-1:1.9998.11-7.el8.noarch perl-Math-Complex-1.59-419.el8.noarch

perl-Mozilla-CA-20160104-7.module_el8.3.0+416+dee7bcef.noarch perl-Net-SSLeay-1.88-1.module_el8.4.0+517+be1595ff.x86_64

perl-PathTools-3.74-1.el8.x86_64 perl-Pod-Escapes-1:1.07-395.el8.noarch

perl-Pod-Perldoc-3.28-396.el8.noarch perl-Pod-Simple-1:3.35-395.el8.noarch

perl-Pod-Usage-4:1.69-395.el8.noarch perl-Scalar-List-Utils-3:1.49-2.el8.x86_64

perl-Socket-4:2.027-3.el8.x86_64 perl-Storable-1:3.11-3.el8.x86_64

perl-Term-ANSIColor-4.06-396.el8.noarch perl-Term-Cap-1.17-395.el8.noarch

perl-Text-ParseWords-3.30-395.el8.noarch perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch

perl-Time-Local-1:1.280-1.el8.noarch perl-URI-1.73-3.el8.noarch

perl-Unicode-Normalize-1.25-396.el8.x86_64 perl-constant-1.33-396.el8.noarch

perl-interpreter-4:5.26.3-419.el8.x86_64 perl-libnet-3.11-3.el8.noarch

perl-libs-4:5.26.3-419.el8.x86_64 perl-macros-4:5.26.3-419.el8.x86_64

perl-parent-1:0.237-1.el8.noarch perl-podlators-4.11-1.el8.noarch

perl-threads-1:2.21-2.el8.x86_64 perl-threads-shared-1.58-2.el8.x86_64

psmisc-23.1-5.el8.x86_64 systemd-devel-239-45.el8_4.1.x86_64

vsftpd-3.0.3-34.el8.x86_64

Complete!

如果登录ftp速度慢,清空dns服务器地址文件

[root@poc ~]# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 223.5.5.5

nameserver 114.114.114.114

如果访问ftp速度慢,检查或删除nameserver

2.配置vsftp服务

:g/^#/d 将会删除全篇中以#开头的行

:g/^s*$/d 将会删除全篇中所有的空行

:%s= *$== 删除行尾空白

:%s/^(.*)n1/1$/ 删除重复行

:%s/r//g 删除DOS方式的回车^M

[root@poc ~]# vim /etc/vsftpd/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

修改成以下内容

#######################################用户登录控制#####################################

#接受匿名用户

anonymous_enable=NO

#接受本地用户

local_enable=YES

#若启用此选项,userlist_deny选项才被启动

userlist_enable=YES

#######################################用户权限控制#####################################

#可以上传(全局控制)

write_enable=YES

#本地用户上传文件的umask

local_umask=022

#上传文件的权限配合umask使用

#file_open_mode=0666

#如果开启,那么所有非匿名登录的用户名都会被切换成guest_username指定的用户名

guest_enable=YES

#指定guest_username用户名

guest_username=virtual

allow_writeable_chroot=YES

#管控是否可用ASCII模式上传。默认值为NO

ascii_upload_enable=YES

#管控是否可用ASCII模式下载。默认值为NO

ascii_download_enable=YES

#######################################超时设置#########################################

#空闲连接超时

#idle_session_timeout=600

#数据传输超时

#data_connection_timeout=120

#PAVS请求超时

#ACCEPT_TIMEOUT=60

#PROT模式连接超时

#connect_timeout=60

#######################################服务器功能选项####################################

#开启日志功能

xferlog_enable=YES

#使用标准格式

xferlog_std_format=YES

#定义PAM所使用的名称,预设为vsftpd

pam_service_name=vsftpd

#允许使用pasv模式

#pasv_enable=YES

#允许使用port模式

#port_enable=YES

#######################################服务器性能选项####################################

#绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,standalone模式

listen=YES

#关闭ipv6

#listen_ipv6=YES

#######################################信息类设置########################################

#允许为目录配置显示信息,显示每个目录下面的message_file文件的内容

dirmessage_enable=YES

#登录时显示欢迎信息,如果设置了banner_file则此设置无效

ftpd_banner=欢迎使用视博电子FTP站点

#######################################文件定义##########################################

#日志文件位置

xferlog_file=/var/log/vsftpd.log

#######################################目录定义##########################################

#定义用户配置文件的目录

user_config_dir=/etc/vsftpd/vsftpd_user_conf

#######################################用户连接选项#######################################

#使用标准的20端口来连接ftp

connect_from_port_20=YES

#可接受的最大client数目

#max_clients=100

#每个ip的最大client数目

#max_per_ip=5

#绑定到某个IP,其它IP不能访问

#listen_address=192.168.0.2

#绑定到某个端口

#listen_port=2121

#数据传输端口

#ftp_data_port=2020

#pasv连接模式时可以使用port范围的上界,0表示任意.默认值为0。

#pasv_max_port=0

#pasv连接模式时可以使用port范围的下界,0表示任意,默认值为0。

#pasv_min_port=0

#######################################数据传输选项#######################################

#匿名用户的传输比率(b/s)

#anon_max_rate=51200

#本地用户的传输比率(b/s)

#local_max_rate=5120000

3.创建虚拟用户

[root@poc ~]# useradd -d /ftpdata -s /sbin/nologin virtual

[root@poc ~]# ll /

drwx------ 2 virtual virtual 62 Jul 1 00:01 ftpdata

4.配置虚拟用户数据

[root@poc ~]# vim /etc/vsftpd/login.txt

admin

admin

zby

zby

#奇数行为用户名,偶数行为奇数行用户的密码

[root@poc ~]# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db

[root@poc ~]# ll /etc/vsftpd/

total 28

-rw------- 1 root root 125 Apr 22 13:04 ftpusers

-rw-r--r-- 1 root root 20 Jul 1 00:06 login.txt

-rw------- 1 root root 361 Apr 22 13:04 user_list

-rw------- 1 root root 3198 Jul 1 00:00 vsftpd.conf

-rwxr--r-- 1 root root 348 Apr 22 13:04 vsftpd_conf_migrate.sh

-rw-r--r-- 1 root root 12288 Jul 1 00:06 vsftpd_login.db

5.配置认证文件

[root@poc ~]# ll /etc/pam.d/ | grep vsftpd

-rw-r--r-- 1 root root 335 Apr 22 13:04 vsftpd

[root@poc ~]# vim /etc/pam.d/vsftpd

#%PAM-1.0

#session optional pam_keyinit.so force revoke

#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

#auth required pam_shells.so

#auth include password-auth

#account include password-auth

#session required pam_loginuid.so

#session include password-auth

#注释掉以上内容,添加以下验证内容

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

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

6.配置虚拟用户权限

[root@poc ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf && cd /etc/vsftpd/vsftpd_user_conf/

[root@poc vsftpd_user_conf]# vim admin

anon_world_readable_only=NO #下载

anon_upload_enable=YES #上传

write_enable=YES #写文件

anon_mkdir_write_enable=YES #写目录

anon_other_write_enable=YES #删除文件

local_root=/ftpdata #家目录

#配置文件每行尾不能有注释和空格

[root@poc vsftpd_user_conf]# vim zby

anon_world_readable_only=NO

anon_upload_enable=YES

write_enable=YES

local_root=/ftpdata

7.验证vsftp服务

[root@poc vsftpd_user_conf]# systemctl enable --now vsftpd

[root@poc vsftpd_user_conf]# systemctl restart vsftpd

[root@poc vsftpd_user_conf]# systemctl status vsftpd.service

● vsftpd.service - Vsftpd ftp daemon

Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)

Active: active (running) since Thu 2021-07-01 00:28:34 CST; 5s ago

Process: 7346 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)

Main PID: 7347 (vsftpd)

Tasks: 1 (limit: 23671)

Memory: 568.0K

CGroup: /system.slice/vsftpd.service

└─7347 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Jul 01 00:28:34 poc systemd[1]: Starting Vsftpd ftp daemon...

Jul 01 00:28:34 poc systemd[1]: Started Vsftpd ftp daemon.

使用admin管理员用户登录测试

[root@poc ~]# dnf -y install ftp

Installed:

ftp-0.17-78.el8.x86_64

Complete!

[root@poc ~]# ftp 10.9.254.216

Connected to 10.9.254.216 (10.9.254.216).

220 欢迎使用视博电子FTP站点

Name (10.9.254.216:root): admin

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (10,9,254,216,43,189).

150 Here comes the directory listing.

226 Directory send OK.

ftp>

FTP服务端在防火墙后,并且使用被动模式时的注意点

服务端除了需要指定被动模式端口范围,还需要指定pasv_address=168.46.41.126(防火墙的地址),原因:

由ftp工作原理知道,ftp客户端连上来之后,需要传输数据时,ftp服务端会把服务端的ip和新开的数据端口发送给客户端,

ftp服务端默认发送的ip地址是服务器的ip地址(因为ftp服务端只知道服务器的ip地址),客户端收到后会向此ip发送请求,因而肯定是连不上的,因为中间经过了防火墙

因而需要在服务端设置pasv_address为防火墙的地址,告知ftp服务端在被动模式下工作时把这个ip发送给客户端,

客户端收到后,会去访问防火墙的地址和端口,如果防火墙正确做了端口映射,防火墙就会把这个端口的数据转发到ftp服务器上,这样就连接成功了

被动模式下,查看客户端连接到服务端的ip和端口:

[root@localhost]# ftp 168.46.41.126 4621

Connected to 168.46.41.126 (168.46.41.126).

220 (vsFTPd 3.0.2)

Name (168.46.41.126:root): xyftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (168,46,12,126,18,40).

ftp: connect: Network is unreachable

ftp>

# 说明:

# 日志 227 Entering Passive Mode (168,46,41,126,18,40). 中

# 前4个字段是ip,即:168.46.41.126

# 后两个字段是端口号,端口号计算方法: 18*256+40=4,648

http://www.jsqmd.com/news/641222/

相关文章:

  • CompressO:终极免费开源视频压缩工具,一键释放95%存储空间
  • 不止是部署:Seafile 12.0社区版深度定制与第三方系统集成实战(Java API + 自动登录)
  • 利用Canoe CAPL实现动态报文发送与诊断测试
  • 低功耗数据采集终端:超低能耗,应用户外场景
  • 011、骨干网络改进(二):MobileNet、ShuffleNet等轻量骨干的适配
  • 【华为eNSP】企业级网络拓扑综合配置详解
  • 告别‘天书’文献:用知云翻译+自定义术语库高效啃透自旋电子学英文论文
  • 岛屿问题初探(DFS)
  • 2025届学术党必备的六大AI论文工具解析与推荐
  • 不止是碰一碰:聊聊App Clips在餐饮、零售、出行中的5个真实应用场景与设计思考
  • 如何实现多肽抗体的精准定制?
  • ImageToPromptAI:从图像到创意,AI提示词生成器的艺术与科技融合
  • 05-5 目标检测
  • 第二十章 预测性维护:让机器自己说话
  • 基于IEEE 33节点配电网重构的最优流法应用及前后网损电压对比解析,程序采用牛顿-拉夫逊法计...
  • c#Lsit排序
  • 抖音视频批量下载终极指南:3分钟掌握无水印高效下载
  • DeepSeek总结的DuckLake v1.0发版说明
  • 网盘直链下载助手深度解析:八大网盘API直连实战指南与配置避坑手册
  • 三相交错LLC谐振仿真闭环技术研究:包括Y型联接、自均流、软开关、移相与输出电压电流波形分析—...
  • 终极教程:3步配置PotPlayer字幕翻译插件实现免费实时翻译
  • 第十二章:生产部署最佳实践 —— 从开发到上线的完整路径
  • 别再裸奔了!给RuoYi-Vue项目的API穿上‘Base64马甲’:一份完整的请求响应包装指南
  • 英雄联盟终极工具集League Akari完整使用指南:从入门到精通
  • Alienware灯光控制终极指南:轻量级工具完整解决方案
  • Unity Mod Manager:终极模组管理指南,让你的Unity游戏体验翻倍
  • 2026最权威的五大AI论文工具实测分析
  • ArcGIS 10.2 实战:手把手教你将带标注的Shapefile完美转成KML(附注记图层技巧)
  • 嵌入式开发必看:volatile在STM32硬件寄存器操作中的实战应用
  • 3步解锁Cursor Pro功能:突破限制的完整使用指南