FTP概述
-
FTP服务是用来传输文件的协议
-
FTP服务器默认使用TCP协议的20和21端口与客户端进行通信
- 20端口用于建立数据连接,并传输文件数据
- 21端口用于建立控制连接,并传输FTP控制命令
-
FTP数据连接分为主动模式和被动模式
- 主动模式:服务器主动发起数据连接
- 被动模式:服务器被动等待数据连接
FTP操作步骤及图释
匿名用户访问FTP服务
- yum安装vsftp以及修改配置文件
[root@localhost ~]# yum install -y vsftpd (使用yum安装vsftpd)
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cp vsftpd.conf{,.bak} (复制配置文件备用,以防误改)
[root@localhost vsftpd]# cp vsftpd.conf vsftpd.conf.bak (这两种方法都可以进行复制操作)
[root@localhost vsftpd]# vim vsftpd.conf (编辑配置文件)
anon_upload_enable=YES (开启匿名用户访问,此项默认已开启)
write_enable=YES (开放服务器的写权限,此项默认已开启,若要进行上传操作,此项必须开启)
local_umask=022 (设置匿名用户所上传数据的权限掩码,使用反掩码)
anon_upload_enable=YES (允许匿名用户上传文件。此项默认已注释,需取消注释)
anon_mkdir_write_enable=YES (允许用户创建、上传目录。此项默认已注释,需取消注释)
anon_other_write_enable=YES (允许删除、重命名、覆盖等操作。此项需手动复制模板进行添加)
[root@localhost vsftpd]# systemctl start vsftpd
[root@localhost vsftpd]# netstat -natp | grep 21 (使用netstat命令配合管道符号查看21端口的网络的连接情况)
[root@localhost vsftpd]# systemctl stop firewalld.service
[root@localhost vsftpd]# setenforce 0 (关闭防火墙和增强型安全功能)
[root@localhost var]# cd ftp
[root@localhost ftp]# chmod -R 777 pub/ (为匿名访问ftp的根目录下的pub子目录设置最大权限,以便匿名用户上传数据)
[root@localhost ftp]# ll
总用量 0
drwxrwxrwx. 2 root root 6 10月 14 00:10 pub
- 使用Windows测试匿名访问
- 在Windows系统打开“开始”菜单,输入cmd命令打开命令提示符
ftp> pwd (匿名访问ftp的根目录为Linux系统的/var/ftp/目录)
ftp> ls (查看当前目录)
ftp> cp pub (切换到pub目录)
ftp> get 文件名 (下载文件到当前Windows本地目录)
ftp> put 文件名 (上传文件到ftp目录)
ftp> quit (退出)
[root@localhost /]# cd /var/ftp/pub
[root@localhost pub]# vim qz1
[root@localhost pub]# ls
qz1 qz.txt
设置本地用户验证访问ftp,并禁止切换到ftp以外的目录
- 匿名用户所登录的根目录是/var/ftp
- 本地用户所登录的根目录是自己的家目录
- 修改匿名用户、本地用户的默认根目录
- anon_root=/var/www/html (anon_root 针对匿名用户)
- local_root=/var/www/html (ocal_root 针对系统用户)
[root@localhost vsftpd]# vim user_list (编辑使用user_list用户列表文件)
qz2 (在末尾添加qz2用户)
[root@localhost vsftpd]# useradd qz2 (创建qz2用户)
[root@localhost vsftpd]# passwd qz2
[root@localhost vsftpd]# vim vsftpd.conf
local_enable=YES (启用本地用户访问)
anonymous_enable=NO (关闭匿名用户访问)
write_enable=YES (开放服务器的写权限,若要进行上传操作则必须开启)
local_umask=077 (可设置仅宿主用户拥有被上传的文件权限,这里使用反掩码)
chroot_local_user=YES (将访问禁锢在用户的宿主目录中)
allow_writeable_chroot=YES (允许被限制的用户主目录具有写权限)
userlist_enable=YES (启用user_list用户列表文件)
userlist_deny=NO (设置白名单,仅允许user_list用户列表文件的用户访问。默认为yes,黑名单,禁用)
[root@localhost vsftpd]# systemctl restart vsftpd