一.知识导引:







二. 实验:FTP的三种用户类型:
(一)匿名用户访问:

[root@server10 ~]# dnf -y install vsftpd 安装ftp

[root@server10 ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak 备份ftp的配置文件
[root@server10 ~]#
[root@server10 ~]# systemctl enable --now vsftpd 启动ftp,并设置开机启动
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
[root@server10 ~]# netstat -tunlp | grep vsftpd 查看ftp的端口号
tcp6 0 0 :::21 :::* LISTEN 38698/vsftpd
[root@server10 ~]# cd /var/ftp/pub/ 进入ftp的目录下
[root@server10 pub]# ls
[root@server10 pub]#
[root@server10 pub]# echo "1111111111" > 1.txt 创建1.txt的文件
快照还原新系统,8网卡,开启win11虚拟机

[root@server10 pub]# vim /etc/vsftpd/vsftpd.conf 编辑ftp的配置文件
anonymous_enable=YES 开启匿名用户
[root@server10 pub]# systemctl restart vsftpd 重启ftp
快照还原新系统,8网卡,开启win11虚拟机
设置IP地址:




(二)本地用户访问:

[root@server10 pub]# vim /etc/vsftpd/vsftpd.conf 编辑ftp的配置文件

anonymous_enable=NO 关闭匿名用户

100 chroot_local_user=YES 锁定用户所在的目录
101 chroot_list_enable=YES 开启用户列表
102 allow_writeable_chroot=YES 允许在chroot目录下写入
104 chroot_list_file=/etc/vsftpd/chroot_list 指定chroot文件的位置

110 ls_recurse_enable=YES 启用递归列出目录的功能(软件的全列表)
128 local_root=public_html 设置本地用户根目录为public_html
129 use_localtime=YES 启用本地时间

[root@server10 ~]# vim /etc/vsftpd/chroot_list 创建用户列表文件
写入 cent


[root@server10 ~]# useradd cent 创建cent用户
[root@server10 ~]# passwd cent 给cent用户设置密码
Changing password for user cent.
New password: 1234.com
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 1234.com
passwd: all authentication tokens updated successfully.

[root@server10 ~]# systemctl restart vsftpd 重启ftp
[root@server10 ~]# systemctl enable --now firewalld 启动防火墙,并设置开机启动
[root@server10 ~]# firewall-cmd --add-service=ftp 在防火墙里添加ftp服务
success
[root@server10 ~]# firewall-cmd --runtime-to-permanent 在防火墙里永久添加运行时
success

[root@server12 ~]# cd /home/cent
[root@server12 cent]# ls
[root@server12 cent]# echo "222222" > 2.txt
第一种登录查看账号的方法:

第二种登录查看账号的方法:
安装软件



关闭rocky 11虚拟机:快照还原至新系统开机
(三)虚拟用户访问:

[root@server10 ~]# dnf -y install libdb-utils安装db数据库工具软件包

[root@server10 ~]# dnf -y install vsftpd 安装ftp服务

[root@server10 ~]# useradd virftp -s /sbin/nologin 创建virftp用户,不允许本地登录
[root@server10 ~]#
[root@server10 ~]# vim /etc/vsftpd/vsftpd_login 创建vsftp的登录文件
test1 用户名
123456 密码(奇数是用户名,偶数是密码)
test2
abcdef
[root@server10 ~]#
[root@server10 ~]# chmod 600 /etc/vsftpd/vsftpd_login 将ftp登陆文件添加600权限(6用户有读和写的权限,00代表组和其他用户没有权限)
[root@server10 ~]#
[root@server10 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db 将ftp的登录文件转化成数据库文件 -T:代表允许文本转译 -t hash:指定数据库类型为hash表 -f:后接输入文件路径 和 输出数据库文件路径

[root@server10 ~]# dnf -y install vsftpd 安装ftp服务

[root@server10 ~]# useradd virftp -s /sbin/nologin
[root@server10 ~]#
[root@server10 ~]# vim /etc/vsftpd/vsftpd_login
[root@server10 ~]#
[root@server10 ~]# chmod 600 /etc/vsftpd/vsftpd_login
[root@server10 ~]#
[root@server10 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@server10 ~]#

[root@server10 ~]# mkdir /etc/vsftpd/vsftpd_user_conf 创建ftp的用户配置文件目录
[root@server10 ~]#

[root@server10 ~]# cd /etc/vsftpd/vsftpd_user_conf/ 进入ftp用户配置文件目录

[root@server10 ~]#vim test1 创建test1用户的配置文件


[root@server10 ~]#vim test2 创建test1用户的配置文件

[root@server11 ~]#vim test2 编辑test2用户的配置文件
local_root=/home/virftp/test2 指定test2用户的目录位置
anonymous_enable=NO 关闭匿名用户
write_enable=YES 允许写入
local_umask=022 本地权限755(umask反掩码)
anon_upload_enable=NO 不允许匿名用户上传
anon_mkdir_write_enable=NO 不允许匿名用户写入
idle_session_timeout=600 会话超时时间600秒(打开页面
data_connection_timeout=120 数据连接超时时间120秒
max_clients=10 最大客户数量10个
max_per_ip=5 最大(公网IP)IP数量5个
local_max_rate=50000 本地下载最大速率50KB/s
[root@server10 vsftpd_user_conf]#

[root@server10 ~]# mkdir /home/virftp/test1 创建test1用户的目录
[root@server10 ~]#
[root@server10 ~]# echo "1111" > /home/virftp/test1/a.txt 在test1目录下创建一个测试文件
[root@server10 ~]#
[root@server10 ~]# mkdir /home/virftp/test2 创建test2的目录
[root@server10 ~]#
[root@server10 ~]# echo "1111" > /home/virftp/test2/b.txt 在test2目录下创建一个测试文件
[root@server10 ~]#
[root@server10 ~]# ls -ld /home/virftp/ 查看virftp的详细信息
drwx------ 4 virftp virftp 102 Mar 4 11:07 /home/virftp/ virftp用户 virftp组

[root@server10 ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak 备份ftp的安全认证文件
[root@server10 ~]#
[root@server10 ~]# vim /etc/pam.d/vsftpd 编辑安全认证文件的配置文件

#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login 通过pam模块的userdb.so,对接虚拟用户数据库实现ftp虚拟用户登录认证
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login 用于密码认证,可实现虚拟用户的完整认证流程
session required pam_loginuid.so 为系统提供基础的安全审计能力

[root@server10 ~]# vim /etc/pam.d/vsftpd 编辑ftp的安全认证文件的配置文件

28 anon_upload_enable=NO 不允许匿名用户上传

32 anon_mkdir_write_enable=NO 不允许匿名用户写入

127 chroot_local_user=YES 锁定用户在本目录(不允许用户切换目录)
128 guest_enable=YES 开启来宾用户
129 guest_username=virftp 来宾用户名为virftp
130 virtual_use_local_privs=YES 开启虚拟用户的本地权限
131 user_config_dir=/etc/vsftpd/vsftpd_user_conf 指定用户配置文件的目录
132 allow_writeable_chroot=YES 允许写入

[root@server10 ~]# systemctl start vsftpd 启动ftp
[root@server10 ~]#
[root@server10 ~]# systemctl enable vsftpd 设置ftp开机启动
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
[root@server10 ~]# firewall-cmd --add-service=ftp 在防火墙里添加ftp服务
success
[root@server10 ~]# firewall-cmd --runtime-to-permanent 在防火墙里添加永久运行时
success

[root@server10 ~]#ls -ld /home/virftp/test1
[root@server10 ~]#ls -ld /home/virftp/test2

[root@server10 ~]# chown -R virftp:virftp /home/virftp/test1 将test1目录 用户和组更改为virftp
[root@server10 ~]#
[root@server10 ~]# chown -R virftp:virftp /home/virftp/test2 将test1目录 用户和组更改为virftp
[root@server10 ~]#