文章目录
- 1.FTP简介
- 1.1 FTP概述
- 1.2 FTP主动模式
- 1.3 FTP被动模式
- 2. 实例:匿名用户访问FTP服务
- 3. 实例:本地用户访问FTP服务
1.FTP简介
1.1 FTP概述
FTP服务——用来传输文件的协议。
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信.
20端口用于建立数据连接,并传输文件数据.
21端口用于建立控制连接,并传输FTP控制命令.
FTP数据连接分为主动模式和被动模式
主动模式:服务器主动发起数据连接
被动模式:服务器被动等待数据连接
1.2 FTP主动模式
主动模式:客户端给服务端的21控制端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会连接客户端已打开的那个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件。
1.3 FTP被动模式
被动模式:客户端给服务器端的21端口发命令说,我要下载什么什么,服务端知道后,就打开一个空闲的端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧。于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西。
2. 实例:匿名用户访问FTP服务
(1)设置匿名用户能够下载和上传文件的命令配置;
[root@clr ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 394M 28K 394M 1% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /mnt #查看光盘镜像文件是否已经挂载成功
[root@clr /etc/yum.repos.d]# yum install -y vsftpd #安装vsftpd服务
已加载插件:fastestmirror, langpacks
已安装:
vsftpd.x86_64 0:3.0.2-28.el7
完毕!
[root@clr /etc/yum.repos.d]# rpm -qc vsftpd #查看vsftpd安装包配置文件所在的位置
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf #vsftpd的配置文件
[root@clr /etc/yum.repos.d]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# cp vsftpd.conf{,.bak} #先将vsftpd的配置文件备份下来
[root@clr /etc/vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf #修改vsftpd的配置文件
12 anonymous_enable=YES #开启匿名用户访问
13 anon_umask=022 #设置匿名用户创建文件和目录的默认权限为755
17 local_enable=YES #开启本地用户访问
20 write_enable=YES #为匿名用户开放服务器的写权限
24 local_umask=022 #本地用户对文件和目录权限
30 anon_upload_enable=YES #取消注释,允许匿名用户上传文件
34 anon_mkdir_write_enable=YES #允许匿名用户创建和上传目录
35 anon_other_write_enable=YES #开启其他权限,允许匿名用户删除、重命名、覆盖等操作
[root@clr /etc/vsftpd]# cd /var/
[root@clr /var]# ls
account cache db ftp gopher lib lock mail nis preserve spool tmp
adm crash empty games kerberos local log named opt run target yp
[root@clr /var]# cd ftp/
[root@clr /var/ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 10月 14 2020 pub #默认权限为755,只允许超级用户root具有写入修改权限
[root@clr /var/ftp]# mkdir gzy
[root@clr /var/ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 4月 19 22:27 gzy
drwxr-xr-x. 2 root root 6 10月 14 2020 pub
[root@clr /var/ftp]# chmod 777 gzy/ #修改gzy目录为所有用户可读可修改权限
[root@clr /var/ftp]# ll
总用量 0
drwxrwxrwx. 2 root root 6 4月 19 22:27 gzy #允许匿名用户在gzy目录中进行写入和修改权限
drwxr-xr-x. 2 root root 6 10月 14 2020 pub
[root@clr ~]# systemctl start vsftpd #开启ftp服务
[root@clr ~]# systemctl enable vsftpd #将ftp服务设置为开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@clr ~]# netstat -lntp | grep :21 #查看ftp的21号端口状态,是否已经打开
tcp6 0 0 :::21 :::* LISTEN 11577/vsftpd
[root@clr ~]# cd /var/ftp/
[root@clr /var/ftp]# ls
gzy pub
[root@clr /var/ftp]# cd gzy/
[root@clr /var/ftp/gzy]# echo 'helloworld' > 123.txt #向gzy/目录中的123.txt文件中写入helloworld
[root@clr /var/ftp/gzy]# ls
123.txt
[root@clr /var/ftp/gzy]# cat 123.txt
helloworld
[root@clr /var/ftp/gzy]# cp /etc/passwd ./passwd.txt #将/etc/passwd文件复制到当前目录下中,并重命名为passwd.txt
[root@clr /var/ftp/gzy]# ls
123.txt passwd.txt
(2)客户端WIN10验证连接FTP服务器的结果;
切记一定要关闭防火墙,防止影响实验结果;
匿名用户连接FTP服务器;
匿名用户连接FTP服务器下载文件的情况;
匿名用户切换到桌面,并从桌面上传文件和下载文件到桌面的情况;
3. 实例:本地用户访问FTP服务
(1) 设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录);
[root@clr /var/ftp]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# cp vsftpd.conf vsftpd.conf.bak.local #备份vsftpd.conf的配置文件,养成备份的好习惯
[root@clr /etc/vsftpd]# vim vsftpd.conf
anonymous_enable=NO #关闭匿名用户访问,只要禁止匿名用户登录后,那么匿名用户的其他所有选项都不生效
local_enable=YES #允许本地用户登录
# Uncomment this to enable any form of FTP write command.
write_enable=YES #开放服务器的写权限,允许本地用户上传文件
local_umask=077 #设置仅属主用户拥有被上传文件的权限(反掩码)
(2)创建本地用户,并重启ftp服务;
[root@clr /etc/vsftpd]# useradd clr #创建本地用户clr
[root@clr /etc/vsftpd]# useradd gzy #创建本地用户cgzy
[root@clr /etc/vsftpd]# echo '123456' | passwd --stdin clr
更改用户 clr 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@clr /etc/vsftpd]# echo '123123' | passwd --stdin gzy
更改用户 gzy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@clr /etc/vsftpd]# systemctl restart vsftpd #重新启动ftp服务
本地用户从自己家目录中下载文件到当前目录中的情况;
(3)将本地用户禁锢在宿主家目录中,不允许访问和切换到其他目录;
[root@clr /var/named]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers vsftpd.conf vsftpd.conf.bak.local
user_list vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf #修改/etc/vsftpd/vsftpd.conf配置文件
chroot_local_user=YES #将访问禁锢在本地用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
[root@clr /etc/vsftpd]# systemctl restart vsftpd #重新启动vsftp服务器
(4)修改用户登录的默认根目录;
[root@clr ~]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers vsftpd.conf vsftpd.conf.bak.local
user_list vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf
chroot_local_user=YES
allow_writeable_chroot=YES
anon_root=/opt/ #修改匿名用户所在的目录位置为/opt/
local_root=/var/local_cge/html #修改本地用户所在的目录位置为/var/local_cge/html
[root@clr /opt]# chmod -R 777 /var/ #切记修改本地用户所在的目录的权限修改为777
[root@clr /opt]# chmod 555 /opt/ #切记修改匿名用户所在的目录的权限修改为555
(5) 使用user_list用户列表文件,设置白名单和黑名单,仅允许部分用户登录;
[root@clr /opt]# vim /etc/vsftpd/user_list #修改并编辑user_list用户列表文件
root
bin
games
nobody
clr #将本地普通用户加入到列表文件中
[root@clr /opt]# vim /etc/vsftpd/vsftpd.conf #修改ftp的配置文件
pam_service_name=vsftpd
userlist_enable=YES #启用user_list用户列表文件,用户列表中存在的用户将无法通过ftp服务器连接到系统,列表中之外的用户可以登录到系统
userlist_deny=NO #该阈值默认为YES,也就是设置黑名单,表示user_list用户表列表中存在的用户名无法登录; 当该阈值设置为NO时,也就是设置白名单,表示仅允许user_list用户表列表中存在的用户登录到系统;
tcp_wrappers=YES
客户端在图形界面中,连接FTP服务器的情况;
直接将FTP服务器中的文件拖到桌面,即可进行文件的下载;