文章目录
一:配置FTP 服务器,允许匿名访问
1.1 FTP 服务
FTP 服务,用来传输文件的协议
FTP 服务器默认使用 TCP 协议的20,21 端口
20 端口用于建立数据连接,并传输文件数据
21 端口用于建立控制连接,并传输FTP 控制命令
FTP 数据连接分为2主动模式和被动模式
主动模式: 服务器主动发起数据连接
被动模式: 服务器被动等待数据链接 (本章实验使用被动模式)
1.2 配置FTP 服务器,允许匿名访问
[root@localhost ~]# yum -y install vsftpd #安装vsftpd 包
root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# cp vsftpd.conf vsftpd.bak #备份vsftp.conf 文件
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.bak vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名访问(默认已经开启)
write_enable=YES #开放服务器的写权限(上传文件需要开启)默认快开启
anon_umask=022 #设置匿名用户上传数据的权限掩码为022 (反掩码)
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用于创建(上传)目录
anon_other_write_enable=YES #允许其他用户删除,重命名,覆盖等操作
:wq #保存退出
[root@localhost vsftpd]# systemctl start vsftpd #启动 ftp 服务
[root@localhost vsftpd]# systemctl enable vsftpd #开启 ftp 的自启
[root@localhost vsftpd]# systemctl stop firewalld #关闭防火墙
[root@localhost vsftpd]# setenforce 0 #设置selinux 模式
[root@localhost vsftpd]# chmod 777 /var/ftp/pub
#为匿名访问ftp 目录的根目录 下的 pub 子目录 权限设置为最大权限,以便匿名用户上传数据
二:windows 访问测试
连接方式:
在Windows 系统 Win +r ,然后 输入 cmd ,打开命令行输入。
切换windoes 目录到桌面:
C:\Users\Administrator>cd C:\Users\Administrator\Desktop
连接ftp服务器:
ftp ftp服务器地址
匿名访问:
用户名为 ftp ,密码为空, 登录ftp
ftp 操作:
pwd #查看当前所在目录
ls #查看当前目录
cd #切换目录
get 文件名 #下载文件到windows 本地
put 文件名 #上传文件到 ftp目录
quit #退出
C:\Users\Administrator>cd C:\Users\Administrator\Desktop #切换到桌面
C:\Users\Administrator\Desktop>ftp 192.168.23.10 #连接到ftp服务器
连接到 192.168.23.10。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): ftp #用户名输入 ftp
331 Please specify the password.
密码: #密码为空
230 Login successful.
ftp> pwd #查看当前所在目录
257 "/" #根目录(匿名用户根目录是/var/ftp/)
ftp> ls #查看目录下的内容
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
pub #目录下有pub 目录
226 Directory send OK.
ftp: 收到 8 字节,用时 0.00秒 8.00千字节/秒。
ftp> cd pub #切换到pub 目录
250 Directory successfully changed.
ftp>
ftp> pwd
257 "/pub"
ftp> ls #查看pub 目录下的内容
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
abc.txt #拥有 abc.txt 文件
226 Directory send OK.
ftp: 收到 12 字节,用时 0.00秒 12000.00千字节/秒。
ftp> get abc.txt #从ftp 服务器下载 abc.txt 到本地
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for abc.txt (15 bytes).
226 Transfer complete.
ftp: 收到 15 字节,用时 0.00秒 15.00千字节/秒。
ftp> put test.txt #从本地 上传 test.txt 到ftp 服务器
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 12 字节,用时 0.00秒 12.00千字节/秒。
ftp> quit #退出ftp
221 Goodbye.
验证
C:\Users\Administrator\Desktop>dir abc.txt #windows查看 abc.txt 是否存在
2021/06/29 10:25 15 abc.txt
1 个文件 15 字节
0 个目录 725,971,259,392 可用字节
[root@localhost pub]# pwd
/var/ftp/pub
[root@localhost pub]# ls test.txt #linux 查看 test 文件是否存在
test.txt
三:设置本地用户验证访问ftp
3.1 修改配置文件 /etc/vsftpd/vsftpd.conf
设置本地用户可以登录,禁止匿名用户登录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES #启用本地用户
anonymous_enable=NO #关闭匿名用户访问(要关闭,而不失注释)
write_enable=YES #开启服务器写权限
local_umask=077 #设置仅宿主拥有上传文件的权限(反掩码)
chroot_local_user=YES #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
:wq
[root@localhost ~]# systemctl restart vsftpd #重启服务
3.2 访问测试
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): ftp
331 Please specify the password.
密码:
530 Login incorrect.
登录失败。 #ftp 用户无密码登录失败
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): test #使用test 用户登录
331 Please specify the password.
密码: #输入test 用户密码
230 Login successful. #使用 普通用户 test 的账号登录成功
ftp>
ftp> pwd
257 "/" #普通用户的根目录是 它的 家目录
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
下载
公共
图片
文档
桌面
模板
视频
音乐
226 Directory send OK. #这些是用户家目录里的文件
ftp: 收到 67 字节,用时 0.00秒 16.75千字节/秒。
3.3 图形化登录
(1) 在地址栏 输入 ftp://ftp 服务器地址
(2) 输入 用户名 和 密码 (如果是匿名用户,点上匿名登录
(3) windows 和linux 之间可以直接拖拽上传
从windows 上 拖拽上传
[test@localhost ~]$ whoami
test
[test@localhost ~]$ pwd
/home/test
[test@localhost ~]$ ls
test.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
四:设置白名单和黑名单
4.1 设置黑名单
配置 文件 /etc/vsftpd/usr_list ,向文件添加或删除 用户
[root@localhost ~]# vim /etc/vsftpd/user_list
test #添加用户
:wq
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=YES (默认是此设置)
#设置黑名单,不允许 user_list 里的用户登录
:wq
[root@localhost ~]# systemctl restart vsftpd #重启服务
测试登录
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): lisi
331 Please specify the password.
密码:
230 Login successful. #lisi 用户不在user_list 中,可以登录
ftp> quit
221 Goodbye.
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): test
530 Permission denied. #test 用户在user_list 中,不可以登录
登录失败。
4.2 设置白名单
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=NO
#将YES 改为 NO,即 设置白名单,仅允许user_list 中用户登录
:wq
[root@localhost ~]# systemctl restart vsftpd #重启服务
测试服务
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): lisi
530 Permission denied.
登录失败。 #用户lisi 不在白名单内,登录失败
ftp> quit
221 Goodbye.
C:\Users\Administrator\Desktop>ftp 192.168.23.10
连接到 192.168.23.10。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.23.10:(none)): test
331 Please specify the password.
密码:
230 Login successful. #用户test 在白名单内,登录成功
ftp>