简介
(File Transfer Protocol文件传输协议 )应用层的文件共享服务是互联网控制文件实现双向传输,同样ftp也是一个应用程序,不同系统对应的应用程序也不同,但是所遵循的是同一个协议
用户分类:
ftpReal帐户(本地用户 ) 用户 密码 这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
ftpGuest用户(虚拟用户 ) 在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd HYPERLINK 软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
ftpAnonymous(匿名用户 ) 这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。 在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户 。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。
使用方式:
端口: 1. TCP21 命令 2. TCP20 数据
传输方式: FTP的传输有两种方式:ASCII、二进制。 ASCII传输方式 假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者 HYPERLINK 压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
二进制传输模式 在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送 HYPERLINK 可执行文件到Windows系统,在对方系统上,此文件不能执行。 如在ASCII方式下传输 HYPERLINK 二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)
模式:
port(主动模式),服务器使用20端口连接客户端
1.客户端开启高位随机端口和服务端建立一个命令连接,发起一个port主动请求指令信息 2.服务端响应主动请求指令的结果 3.服务端主动开启20号数据端口,将这个数据文件主动响应给客户端主机 4.客户端主机收到信息后发起一个确认信息最后断开连接 pasv(被动模式) 1.客户端开启高位随机端口和服务端建立一个命令连接,发起一个pasv被动请求指令信息 2.服务端响应主动请求指令的结果 3.客户端开启高位的数据端口向服务端建立数据连接请求 4.服务端根据客户端的请求以被动方式将数据响应给客户端主机 优缺点:
主动模式对ftp对服务器管理有利,是由FTP服务器主动与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞。而被动模式对客户端管理有效,它是企图与服务端的随机端口建立连接但是这个端口很可能又会被服务端的防火墙所拒绝。一般做安全措施我们是在被动模式下做,由于主动模式是打开一个端口给客户端传送数据,我们做安全措施都是基于端口来做所以不太好做,一般也不建议去做。但是被动模式也是在不停地放端口,所以慢慢的ftp慢慢的在淘汰。
ftp用户 匿名用户 任何人同一个ID身份登录(不需要用户验证) 虚拟用户 将一个本地用户身份虚拟为多个身份(通过虚拟用户身份验证登录) 系统用户 本地用户(本地用户身份验证登录) 案例:在主机配置FTP服务 要求:在openlab公司教学部建立一个文件系统服务器。 实现所有用户基于虚拟用户身份登录到该部门的ftp文件系统服务器,访问的文件系统根目录为/home/teacher目录 (虚拟用户分别为:lucy,lack,david,dylan密码是openlab) 首先安装ftp服务 [root@localhost ~]# yum install vsftpd.x86_64 更改配置文件 anonymous_enable=NO //关闭匿名用户
allow_writeable_chroot=YES //通过chroot对用户宿主目录实现禁锢
chroot_local_user=YES //指定本地用户不能切换
guest_enable=YES //虚拟用户模式开启
guest_username=teacher //tearcher为系统用户(真实本地用户)
virtual_use_local_privs=YES //本地虚拟用户特权开启
pam_service_name=vuser //设置PAM认证模块使用名称预设为vuser
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 创建用户teacher [root@localhost ~]# useradd teacher 创建虚拟用户文件 [root@localhost ~]# vim /etc/vsftpd/vfile 奇数行为虚拟用户,偶数行为密码 将虚拟用户文件转换成用户数据库文件 [root@localhost vsftpd]# db_load -T -t hash -f vfile vfile.db 修改PAM认证方式,编辑认证配置文件 [root@localhost vsftpd]# vim /etc/pam.d/vuser 重启服务 [root@localhost vsftpd]# systemctl restart vsftpd 测试
|