搭建FTP服务器实现文件共享
搭建FTP服务器实现文件共享
1 VSFTP服务器概述
4.1.1 FTP服务概述:
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
FTP(File Transfer Protocol: 文件传输协议)作用:Internet 上用来传送文件的协议。
常见FTP服务器:
Windows:Serv-U 、FTP Server、filezilla_server
Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。
1.2 VSFTP
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
特点:
它是一个安全、高速、稳定的FTP服务器。
VSFTP模式: C/S 模式
端口:
[root@K3 ~]# vim /etc/services
FTP监听的端口有两个:
端口20:用于传输数据
端口21:用于传输指令
FTP(File Service Protocol):文件服务协议。
1.3 工作流程(原理)分为两种模式:
主动和被动模式:
FTP会话包含了两个通道,控制通道和数据传输通道,FTP的工作有两种模式,一种是主动模式,一种是被动模式,以FTP Server为参照,主动模式,服务器主动连接客户端传输,被动模式,等待客户的连接。
主动模式的工作原理:
FTP客户端连接到FTP服务器的21号端口,发送用户名和密码,客户端随机开放一个端口(1024以上),发送PORT命令到FTP服务器,告知服务器客户端采用主动模式并开放端口,FTP服务器收到PORT主动模式命令和端口后,通过服务器的20号端口和客户端开放的端口连接,发送数据,原理如图 4-2 所示,(无论是主动还是被动模式,首先的控制通道都是先建立起来,只是在数据传输模式上的区别)
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器所监听的21号端口,发送用户名和密码,发送PASV命令到FTP服务器,服务器在本地随机开放一个端口(1024以上),然后把开放的端口告知客户端,而后客户端再连接到服务器开放的端口进行数据传输
2.搭建匿名登录FTP
服务器 | IP | 角色 |
k2 | 10.27.17.92 | vsftp服务端 |
k3 | 10.27.17.93 | 客服端 |
k4 | 10.27.17.94 | windows |
2.1 安装服务端
[root@k2 ~]# yum -y install vsftpd
2.2 安装客户端:
[root@xuegod64 ~]# yum install -y lftp #使用Yum安装ftp客户端。
lftp
注:从CentOS开始,系统镜像中默认没有ftp客户端命令。取而代之的是lftp命令。
Linux客户端:
lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp、ftps、http、https、hftp、fish(其中ftps和https需要在编译的时候包含openssl库),llftp的界面非常类似一个Shell,有命令补全、历史记录、允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载、等功能
2.3 配置文件位置:
/etc/vsftpd/vsftpd.conf #vsftpd 的核心配置文件。
/etc/vsftpd/ftpusers #用于指定哪些用户不能访问FTP 服务器,即黑名单。
/etc/vsftpd/user_list #指定允许使用VSFTP的用户列表文件,即白名单。
首先请明确一点:ftpusers不受任何配制项的影响,它总是有效,它是一个黑名单!
而user_list则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!那么是什么的设置决定了它的作用呢?这就是问题二要解释的。
所以简单总结就是:ftpusers和user_list没有任何关系,ftpusers文件总是生效,user_list则取决于userlist_enable和userlist_deny两项配置。
[root@k2 ~]# vim /etc/vsftpd/user_list
如果userlist_deny= YES(默认),绝不允许在这个文件中的用户登录ftp,甚至不提示输入密码。
2.4启动服务
[root@k2 vsftpd]# systemctl start vsftpd #启动FTP服务。
[root@k2 vsftpd]# systemctl enable vsftpd #设置开启自动启动FTP服务。
[root@k2 ~]# netstat -antup | grep ftp #查看FTP服务监听的端口。
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 11725/vsftpd
2.5允许匿名用户访问
[root@xuegod63 vsftpd]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
允许匿名用户上传文件并可以创建目录
但不能删除,报500的错
解决办法是手动添加一行
[root@K2 vsftpd]# chown ftp.ftp /var/ftp/pub/ #修改FTP共享目录属主、
anon_other_write_enable=YES
注:千万不要和anon_mkdir_write_enable=YES这个挨着,换一个位置。
重启FTP服务,使配置文件生效:
[root@k2 vsftpd]# systemctl restart vsftpd
2.6 测试一下:
k3上测试
[root@k3 ~]# lftp 10.27.17.92
lftp 10.27.17.92:~> ls
drwxr-xr-x 3 14 50 26 Oct 09 03:07 pub
lftp 10.27.17.92:/> cd pub
lftp 10.27.17.92:/pub> ll
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub> mkdir aa
mkdir ok, `aa' created
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 aa
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub> mkdir bb cc
mkdir ok, 2 directories created
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 aa
drwx------ 2 14 50 6 Oct 09 03:08 bb
drwx------ 2 14 50 6 Oct 09 03:08 cc
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub> rm -rf aa
rm ok, `aa' removed
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 bb
drwx------ 2 14 50 6 Oct 09 03:08 cc
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub>
3、用户名密码方式访问VSFTP
WEB服务器维护,FTP 给不同的部门账号,进行相关目录的维护
设置两个用户,共享/var/www/html ,用户名kezi1,kezi2
这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。
只允许:kezi1和kezi2两用户 可以上传,vsftp禁止匿名。
3.1 建立用户并设置密码
[root@k2 vsftpd]# useradd -s /sbin/nogling kezi1
[root@k2 vsftpd]# useradd -s /sbin/nogling kezi2
[root@k2 vsftpd]# echo "123456"|passwd --stdin kezi1
Changing password for user kezi1.
passwd: all authentication tokens updated successfully.
[root@k2 vsftpd]# echo "123456"|passwd --stdin kezi2
Changing password for user kezi2.
passwd: all authentication tokens updated successfully.
3.2 配置vsftpd.conf 主配置文件并作相应修改
[root@k2 vsftpd]# vim vsftpd.conf
anonymous_enable=NO #禁止匿名用户登录
local_enable=YES #允许本地用户登录
local_root=/var/www/html #设置本地用户的根目录为/var/www/html 。
chroot_list_enable=YES #激chroot 功能。
chroot_list_file=/etc/vsftpd/chroot_list #设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名。
allow_writeenable_chroot=YES #允许锁定的用户有写的权限。
3.3 建立/etc/vsftpd/chroot_list 文件,添加kezi1 和kezi2帐号
[root@k2 vsftpd]# touch /etc/vsftpd/chroot_list
[root@k2 vsftpd]# vim chroot_list
kezi1
kezi2
3.4 修改本地权限
[root@k2 vsftpd]# ll -d /var/www/html
drwxr-xr-x. 2 root root 24 Sep 27 15:28 /var/www/html
[root@k2 vsftpd]# chmod -R o+w /var/www/html/index.html
[root@k2 vsftpd]# ll -d /var/www/html
drwxr-xr-x. 2 root root 24 Sep 27 15:28 /var/www/html