Linux的FTP服务

一、Ftp介绍

●文件传输协议( File Transfer Protocol, FTP ) , 基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。 用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。
●FTP服务是Client/Server (简称C/S )模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端, FTP客户端可以向FTP服务器上传、下载文件。
●目前主流的FTP服务器端软件包括: Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、Flilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd。

二、Ftp 传输模式介绍

●FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。
●FTP主动模式:客户端从一个任意的端口N ( N>1024 )连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1 ,并发送FTP命令"port N+ 1"到FTP服务器, FTP服务器以数据端口( 20 )连接到客户端指定的数据端口( N+1 )。
●FTP被动模式:客户端从-个任意的端口N ( N>1024 )连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1 ,客户端提交PASV命令,服务器会开启一个任意的端口 (P>1024) ,并发送PORT P命令给客户端。客户端发起从本地端口N+ 1到服务器的端口P的连接用来传送数据。
●企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙, FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。

三、Vsftp服务器简介

●非常安全的FTP服务进程1( Very Secure FTP daemon , Vsftpd ) , Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用( 1000用户)等。.
●Vsftpd基于GPL开源协议发布,在中小企业中得到广泛的应用, Vsftpd可以快速上手,基于Vstpd虚拟用户方式,访问验证更加安全。Vsftpd还可以基于MYSQL 数据库做安全验证,多重安全防护。

四、Vsftp 的登陆类型

VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp ,详细信息可以通过man vsftpd.conf查看

五、Vsftp 安装配置

1.环境需求

●服务端系统: CentOS7.6; 软件: vsftpd

●客户端系统: Windows10 ;软件: xftp客户端

2、安装epel源

[root@qfedu.com ~]# yum -y install epel-release.noarch
在这里插入图片描述

3、安装vsftpd及相关依赖

[root@qfedu.com ~]# yum -y install vsftpd* pam* db4*

●vsftpd: ftp软件
●pam:认证模块
●DB4:支持文件数据库

4、vsftpd配置文件说明

配置文件和作用

在这里插入图片描述

/etc/vsftpd/vsftpd.conf :vsftpd的核心配置文件
/et/sftpd/ftpusers :用于指定哪些用户不能访问FTP服务器
/etc/stpd/user_list :指定允许使用vsftpd的用户列表文件
/etc/sftpd/vsftpd_ conf_migrate.sh :是vsftpd操作的一些变量和设置脚本
Nvar/ftp/: 默认情况下匿名用户的根目录

5、vsftpd 配置详解

在这里插入图片描述
在这里插入图片描述

6、vsftpd修改配置前备份配置文件
[root@qfedu.com ~]# cd /etc/vsftpd/
[root@qfedu. com vsftpd]# ls ftpusers user_list  vsftpd.conf  vsftpd.conf.migrate.sh
[root@qfedu. com vsftpd]# cp vsftpd.conf{,.bak}
[root@qfedu.com vsftpd]# ls
ftpusers user.list vsftpd.conf vsftpd.conf.bak    vsftpd_conf_migrate.sh

在这里插入图片描述

7、vsftpd 配置匿名用户

1.编辑配置文件

[root@qfedu.com vsftpd]# vim vsftpd.conf
write_enable=YES
anon_umask=022   //设置匿名用户上传的权限
anonymous_enable=YES  //允许匿名用户访问
anon_upload_enable=YES  //是否允许匿名用户上传
anon_mkdir_write_enable=YES //是否允许匿名用户创建目录
anon_other_write_enable=YES //是否允许匿名用户有其他的写入权限
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YEs

2.常用的匿名FTP配置项

anonymous_ enable=YES#是否允许匿名用户访问
anon_ umask=022#匿名用户所上传文件的权限掩码
anon_ root=/var/ftp#设置匿名用户的FTP根目录
anon_ upload. enable=YES#是否允许匿名用户上传文件
anon_mkdir_write_enable=YES#是否允许匿名用户允许创建目录
anon_other_write_enable=YES#是否允许匿名用户有其他写入权(改名,删除,覆盖)
anon_max_rate=0#限制最大传输速率(字节/秒) 0为无限制

3.开启vsftp服务

[root@qfedu. com vsftpd]# systemctl start vsftpd
[root@qfedu. com vsftpd]# netstat -lnpt  |grep vsftpd
tcp  0 0 0.0.0.0:21   0.0.0.0:*    LISTEN    34531/vsftpd
8、vsftp 配置本地(系统)用户
1、创建测试用户
●创建zhangsan. lisi 密码都设置为"123456"
[root@qfedu.com ~]# useradd zhangsan
[root@qfedu.com ~]# useradd lisi
[root@qfedu.com ~]# echo "123456" | passwd --stdin zhangsan
[root@qfedu.com ~]# echo "123456" | passwd --stdin lisi
2.修改配置文件
[root@qfedu.com ~]# vim /etc/vsftpd/vsftpd.conf
1ocal_enable=YES
1ocal_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
3、常用的本地用户FTP配置项
1ocal_enable=YES#是否允许本地系统用户访问
1ocal_umask=022#本地用户所上传文件的权限掩码
1ocal_root=/var/ftp#设置本地用户的FTP根目录
chroot_list_enable=YES#表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list  #表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。
Chroot_local_user=YES   #表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
1ocal_max_rate=0#限制最大传输速率(字节/秒) 0为无限制
4、添加用户到白名单:普通用户登录的时候要在home下面创建一个同名的文件夹
[root@qfedu.com ~]# vim /etc/vsftpd/user_list
5、重启服务
[root@qfedu.com ~]# systemctl restart vsftpd
6、登陆测试

9、vsftp 配置虚拟用户
1.建立虚拟FTP用户的帐号
[root@qfedu.com ~]# useradd -s /sbin/nologin vu
2、创建虚拟用户文件
[root@qfedu.com ~]# cd /etc/vsftpd/
[root@qfedu.com vsftpd]# vim user 
wangwu //名称
12345  //密码
maliu  //名称
12345  //密码
●基数行代表用户名,偶数行代表密码

3、创建数据文件
●通过db_ldad工具创建出Berkeley DB格式的数据库文件
[root@qfedu.com vsftpd]# db_load -T -t hash  -f user user.db
[root@qfedu. com vsftpd]# ls
ftpusers user user.db user.list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
●-f指定数据原文件
●T允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
●t hash读取文件的基本方法

4、建立支持虚拟用户的PAM认证文件
[root@qfedu.com vsftpd]# vim /etc/pam.d/vsftpd.vu

auth required /lib64/security/pam_userdb.so   db=/etc/vsftpd/user
account required  /lib64/security/pam_userdb.so db=/etc/vsftpd/user
●对应刚才生成user.db的文件

5.修改配置文件
[root@qfedu.com vsftpd]# vim vsftpd.conf
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
1isten=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=VU
pam_service_name= vsftpd.Vu
1ocal_enable=YES
1oca1_umask=077
chroot_local_user-YES
virtual_use_1ocal_privs=YES
user_config_dir=/etc/vsftpd/user_dir
7、为用户建立独立的配置目录及文件
[root@qfedu.com vsftpd]# mkdir /etc/vsftpd/user_dir
[root@qfedu.com vsftpd]# ls
ftpusers user user.db user_dir user_list ssftpd.conf vsftpd.conf.bak
vsftpd_conf_migrate.sh
[root@qfedu. com vsftpd]# cd /etc/vsftpd/user_dir
[root@qfedu.com user_dir]# vim wangwu
1ocal_root=/etc/vsftpd/data
#虚拟用户数据的存放路径
8、创建虚拟用户数据存放目录
[root@qfedu.com user_dir]# cd ..
[root@qfedu.com vsftpd]# mkdir data
[root@qfedu.com vsftpd]# chmod 777 data/
9.重启服务
[root@qfedu.com ~]# systemctl restart vsftpd

六、Ftp 客户端Iftp

用了两台虚拟机做测试,一台做ftp另一台作品lftp

1、lftp介绍

●lftp命令是一款优秀的文件客户端程序,它支持ftp、SETP、 HTTP和FTPs等多种文件传输协议。lftp支持tab自动补全,记不得命令双击tab键,就可以看到可能的选项了。

2、lftp 语法

1ftp(选项)(参数)

3、lftp 选项

-f: 指定lftp指令要执行的脚本文件:
-C:执行指定的命令后退出:
–he1p:显示帮助信息:
–version:显示指令的版本号。

4、Iftp 参数

●站点:要访问的站点的ip地址或者域名。

5、Iftp 使用实例

1.登录ftp
lftp用户名:密码@ftp地址:传送端口(默认21)
●也可以先不带用户名登录,然后在接口界面下用login命令来用指定账号登录,密码不显示。

匿名登陆实验

在这里插入图片描述

指定路径下载:-o
在这里插入图片描述

下载目录:mirror 加目录
在这里插入图片描述

七、NAS存储

1、NAS 存储和SAN存储的区别回顾
1、NAS介绍

●NAS指Network Area Storage ,网络连接存储NAS)是连接到TCP/IP网络(通常是以太网)的文件级数据存储设备。它通常使用网络文件系统(NFS)或CIFS协议,但也可以使用其他选项,如HTTP.它一般是将本地的存储空间共享给其他主机使用,一般通过C/S架构实现通信。它实现的是文件级别的共享,计算机通常将共享的设别识别为一个文件系统,其文件服务器会管理锁以实现并发访问。常见的NAS有NFS和CIFS.
●NAS在操作系统中显示为共享文件夹.工作人员像访问网络上的其他文件一样访问NAS中的文件。NAS依赖于局域网运行,如果局域网出现故障,那么NAS服务将中断。
●NAS通常不像基于块存储的SAN速度那么快,但高速局域网可以克服大多数性能和延迟问题

2、NFS服务器和samba服务器介绍
1、NFS介绍

●NFS全称是Network FileSystem , NFS和其他文件系统- -样 ,是在Linux内核中实现的,因此NFS很难做到与Windows兼容。NFS共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。
●NFS的实现使用了RPC ( Remote Procedure Call )的机制,远程过程调用使得客户端可以调用服务端的函数。由于有VFS的存在,客户端可以像使用其他普通文件系统-样使用NFS文件系统,由操作系统内核将NFS文件系统的调用请求通过TCP/IP发送至服务端的NFS服务,执行相关的操作,之后服务端再讲操作结果返回客户端。

2、Samba简介

●Samba是在Linux和UNIX系统 上实现SMB协议的-一个免费软件,由服务器及客户端程序构成。SMB ( Server Messages Block ,信息服务块)是- -种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源
●Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享。
●Samba由两个主要程序组成,它们是smbd和nmbd.这两个守护进程在服务器启动到停止期间持续运行,功能各异。smbd 和nmbd使用的全部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,共享输出给谁及如何进行输出。
●Samba提供了基于CIFS的四个服务 :文件和打印服务、授权与被授权、名称解析、浏览服务。前两项服务由smbd提供,后两项服务则由nmbd提供。简单地说 ,smbd 进程的作用是处理到来的SMB软件包,为使用该软件包的资源与Linux进行协商,nmbd 进程使主机(或工作站能浏览Linux)

3、安装配置NFS服务
1、添加hosts解析
[root@nfs.qfedu.com ~]# vim /etc/hosts [可选]
192.168.42.82 dy
192.168.42.133  nas       //两个机器都要做解析

在这里插入图片描述

2、安装NFS服务器
[root@nfs.qfedu.com ~]# yum install -y nfs-utils

在这里插入图片描述

3、创建NFS存储目录

[root@nfs.qfedu.com ~]# mkdir /data
//

4、配置NFS服务

●编辑exports文件 ,添加从机

[root@nfs.qfedu.com ~]# vim /etc/exports
/data 192.168.42.0/24(rw,sync,no_root_squash)

在这里插入图片描述
在这里插入图片描述

●192.168.42.0/24 一个网络号的主机可以挂载NFS服务器上的/data目录到自己的文件系统中

5、NFS定制参数说明

●ro:目录只读
●rw:这个选项允许NFS客户机进行读写访问。缺省选项是只读的。
●secure:这个选项是缺省选项,它使用了1024以下的TCP/IP端口实现NFS的连接。指定insecure可以禁用这个选项。
●async: 这个选项可以改进性能,但是如果没有完全关闭NFS守护进程就重新启动了NFS服务器,这也可能会造成数据丢失。●no_wdelay :这个选项关闭写延时。如果设置了async ,那么NFS就会忽略这个选项。
●no_hide :如果将一 个目录挂载到另外一 个目录之上,那么原来的目录通常就被隐藏起来或看起来
像空的一样。要禁用这种行为,需启用hide选项。
●no_subtree_check :这个选项关闭子树检查,子树检查会执行一 些不想忽略的安全性检查.缺省
选项是启用子树检查.
●no_auth_nlm:这个选项也可以作为insecure_locks 指定,它告诉NFS守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是auth .nIm或
secure. Jlocks.
●mp (mountpoint=path) :通过显式地声明这个选项,NFS要求挂载所导出的目录。
●fsid=num :这个选项通常都在NFS故障恢复的情况中使用。如果希望实现NFS的故障恢复,请参考NFS文档。

6、NFS用户映射的选项

●在使用NFS挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿名用户的身份来对文件进行访问的,这些用户缺省情况下对这些文件只有只读权限。如果用户希望以root用户或锁定义的其他用户身份访问远程文件系统上的文件, NFS允许指定访问远程文件的
用户——通过用户标识号( UID )和组标识号( GID )进行用户映射。
●root_squash:这个选项不允许root用户访问挂载上来的NFS卷。
●no_root_squash: 这个选项允许root用户访问挂载上来的NFS卷。
●all squash: 这个选项对于公共访问的NFS卷来说非常有用,它会限制所有的UID和GID。只使用匿名用户。缺省设置是no, all squash.
●anonuid 和anongid :这两个选项将匿名UID和GID修改成特定用户和组帐号。

4、设置NFS服务开机启动
1、先启动rpcbind服务

[root@nfs.qfedu.com ~]# systemctl enable rpcbind.service
[root@nfs.qfedu.com ~]# systemctl enable nfs-server.service

2、启动NFS服务

[root@nfs.qfedu.com ~]# systemctl start rpcbind.service
[root@nfs.qfedu.com ~]# systemctl start nfs-server.service

5、确认NFS服务器启动

[root@nfs.qfedu.com ~]# exportfs -V
/data 192.168.42.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
●rpcinfo-p :检查NFS服务器是否挂载我们想共享的目录/data: ●exportfs-f :使配置生效
在这里插入图片描述

6、挂载端安装NFS客户端
1、安装NFS软件包

[root@client.qfedu.com ~]# yum -y install nfs-utils

2、设置rpcbind开机启动

[root@client.qfedu.com ~]# systemctl enable rpcbind.service

3、启动rpcbind服务

[root@client.qfedu.com ~]# systemctl start rpcbind.service
●注意:客户端不需要启动nfs服务

4、查看NFS服务端共享

●检查NFS服务器端是否有目录共享: showmount -e nfs服务器IP/nfs服务器主机名
[root@client.qfedu.com ~]# showmount -e nas
Export list for nas:
/data 192.168.42.0/24

在这里插入图片描述

5.挂在使用NFS存储
1、手动挂载

[root@client.qfedu.com ~]# mkdir /data
[root@client.qfedu.com ~]# mount -t nfs nas:/data /data
[root@client.qfedu.com ~]# umount /data

在这里插入图片描述

2.开机自动挂载

[root@client.qfedu.com ~]# vim /etc/fstab
nas:/data /data nfs defaults 0 0
[root@client . qfedu.com ~]# mount -a // 测试自动挂载对错

在这里插入图片描述

3.查看挂载

[root@client.qfedu.com ~]# df
nas:/data 7923136 692416 6821568 10% /data
●如果服务器端修改了NFS的配置,而又不想重启NFS服务(因为有客户端正在使用)可以使用
exportfs命令重新载入NFS配置。
● export -ar:重新导出所有的文件系统
● export -au:关闭导出的所有文件系统
● export -u FS:关闭指定的导出的文件系

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值