FTP服务介绍

FTP服务即文件传输合同(filetransferprotocol,FTP),基于该合同FTP顾客端与服务端可以实现共享文件、上传文件、下载文件。FTP基于TCP合同生成一个虚拟的联接,主要用于控制FTP联接信息,同时再生成一个单独的TCP联接用于FTP数据传输。用户可以通过顾客端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

它可依照实际须要设置各用户的使用权限,同时还具有跨平台的特点,即在UNIX、Linux和Windows等操作系统中都可实现FTP顾客端和服务器,互相之间可跨平台进行文件的传输。为此,FTP服务是网路中时常采用的资源共享方法之一。

FTP用于Internet上的控制文件的单向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有那些应用程序都遵循同一种合同以传输文件。

在FTP的使用当中,用户常常遇见两个概念:“下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过顾客机程序向(从)远程主机上传(下载)文件。

FTP服务布署

1.安装服务

yuminstall-yvsftpd

2.查看安装文件

rpm-qlvsftpd

/etc/logrotate.d/vsftpd…ftp服务的日志滚动文件

/etc/vsftpd/ftpusers…ftp服务的黑白名单

/etc/vsftpd/user_list…ftp服务的黑白名单

/etc/vsftpd/vsftpd.conf…ftp服务的主配置文件

/var/ftp…匿名用户访问ftp服务的根目录

3.编辑配置文件

vim/etc/vsftpd/vsftpd.conf

anonymous_enable=NO…是否容许匿名用户登入

local_enable=YES…是否容许本地用户登入

write_enable=YES…本地用户是否有写权限

local_umask=022…本地用户的umask码

anon_upload_enable=YES…匿名用户是否有写权限

anon_mkdir_write_enable=YES…匿名用户是否有创建目录的权限

dirmessage_enable=YES…欢迎信息

connect_from_port_20=YES…是否使用20端口作为数据传输的端口

chown_uploads=YES…上传文件是否修改文件的拥有者

chown_username=whoever…更改的用户

idle_session_timeout=600…命令联接的超时时间

linux用户 ftp命令_命令用户界面操作系统_命令用户界面

data_connection_timeout=120…数据联接的超时时间

ascii_upload_enable=YES…是否容许使用纯文本的形式上传文件

ascii_download_enable=YES…是否容许使用纯文本的形式下载文件

ftpd_banner=WelcometoblahFTPservice…欢迎信息内容

chroot_local_user=YES…是否开启用户监牢

chroot_list_enable=YES…是否容许跳出监牢

chroot_list_file=/etc/vsftpd/chroot_list…跳出监牢的文件

ls_recurse_enable=YES…是否容许使用-R递归查询

listen=NO…是否窃听IPV4地址

listen_ipv6=YES…是否窃听IPV6地址

pam_service_name=vsftpd…认证模块

userlist_enable=YES…是否开启黑白名单

3.关掉防火墙

systemctlstopfirewalld.service

4.启动服务器

systemctlstartvsftpd

FTP服务的链接

FTP服务的链接有2种

1.控制链接

用于传输命令等,使用的时TCP合同,控制联接用于在两个主机之间传输控制信息,如用户标示、口令、改变远程目录的命令以及“put”和“get:”文件的命令,使用端口21。

2.数据链接

数据联接用于实际传输一个文件,使用端口20或随机端口。

FTP服务的工作模式

1.主动模式

主动模式的FTP工作原理:顾客端从一个任意的非特权端口N联接到FTP服务器的命令端口,也就是21端口。之后顾客端开始窃听端口N+1,并发送FTP命令“portN+1”到FTP服务器。接着服务器会从它自己的数据端口(20)联接到顾客端指定的数据端口(N+1)。

2.被动模式(默认)

当开启一个FTP联接时,顾客端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口联接服务器的21端口,但与主动形式的FTP不同,顾客端不会递交PORT命令并容许服务器来回连它的数据端口,而是递交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORTP命令给顾客端,同时通知自己的防火墙开启该端口,之后顾客端发起从本地端口N+1到服务器的端口P的联接拿来传送数据

FTP顾客端链接

顾客端登陆ftp服务

1.windows登入FTP服务

在URL路径上输入ftp://FTP服务器地址

2.linux登陆FTP服务

因为FTP服务属于C/S构架linux用户 ftp命令,所以要安装FTP服务的顾客端(网路YUM有软件包)

ftpFTP服务器的IP地址

name:登陆的用户(ftp、anonymous为匿名用户)

passwd:用户密码(匿名用户密码为空)

FTP默认传输文件的模式为使用二补码传输

linux顾客端ftp命令

ftp>help顾客端命令查询

!:执行的系统命令ascii:使用ascii模式传输文件

binary:使用binary模式传输文件cd:切换远程目录

delete:删掉文件dir:显示远程目录

exit:退出get:下载

lcd:切换系统目录ls:显示文件

mdelete:删掉多个文件mget:下载多个文件

mkdir:创建目录mput:删掉多个文件

passive:修改为被动模式put:上传

pwd:显示工作目录quite:退出

FTP服务登陆用户

1.匿名用户

顾客端访问FTP资源时,可以在没有服务器的帐户及密码的下,使用匿名(anonymous)身分获取公共资源,但权限较小.

2.实体用户

实体用户(realuser)是指FTP服务器的本地帐户,使用/etc/password中的用户名为认证方法.

3.虚拟用户

区别于实体帐户,FTP支持构建专有的用户,将帐号及密码保存在数据库中,采用非系统帐户访问服务器资源,相对于FTP的实体用户而言,虚拟用户只能访问FTP共享资源,提高了系统安全性,但是,顾客端使用虚拟用户登入,须要递交帐号及密码,管理员可以按照这种帐号进行策略设置,降低了对用户和下载的可管理性,考虑到FTP服务器的安全性以及管理诱因,选择虚拟用户登入,是一个十分可靠的方案.

FTP实例配置

1.匿名用户下载

注意:匿名用户下载文件,FTP要对下载的文件要有读权限,而且要对自己下载的目录有写权限

2.匿名用户上传文件

在FTP服务器的配置文件中更改容许匿名用户上传文件anon_upload_enable=YES,重启服务。注意,上传文件,要保证匿名用户对上传文件的目录有写权限

匿名用户上传文件

3.修改用户上传文件的拥有者(便捷系统用户管理)

修改FTP配置文件

4.本地用户chroot限定

本地用户登入

默认FTP服务本地用户登入的时该用户的家目录

默认本地用户可以切换到FTP服务器的其他的目录

限定本地用户切换FTP服务器的系统目录

修改FTP配置文件

注意:

1在v10版本中的vsftpd服务,在开启用户限制时linux操作系统界面,没有写在chroot_list文件中的用户,因为安全问题,默认不能登入。

2.若要用户登入,把用户的家目录的写权限除去(chmodu-w用户的家目录),或则在配置文件中添加选项allow_writeable_chroot=YES

把jerry用户添加到chroot_list文件中linux系统iso下载,分别使用2个用户登入

5.FTP服务器的黑白名单

在/etc/vsftpd目录下的ftpusers和user_list文件为黑白名单

黑名单:写入到上述2个文件中的用户不能登入(默认)

白名单:写入到上述2个文件中的用户可以登入

配置文件中的userlist_deny=NO选项使用的是白名单(yes:为黑名单,no为白名单)

6.测试主被动模式使用的端口

主动模式:打算一个大文件linux用户 ftp命令,使用顾客端下载。

在其他终端窃听,主动模式使用20号端口传输数据

被动模式

在其他终端窃听,主动模式使用随机端口传输数据。随机端口=44*256+233

7.虚拟用户登入(属于匿名用户登入)

1)创建虚拟用户文件

vimftpuser

tom…用户名

kylin…密码

2)把ftpuser文件生成虚拟用户口令库文件

db_load-T-thash-fftpuser/etc/vsftpd/ftp.db

3)更改ftp.db权限

chmod644/etc/vsftpd/ftp.db

命令用户界面_命令用户界面操作系统_linux用户 ftp命令

4)更改vsftp配置文件

vim/etc/vsftpd/vsftpd.conf

pam_service_name=ftp…指定ftp服务认证的模块

guest_username=ky…指定虚拟用户承接的用户

guest_enable=YES…是否容许虚拟用户登入

allow_writeable_chroot=YES…是否容许在根下有写权限

****在注意allow_writeable_chroot选项必须有

****匿名用户登入的根目录在ky用户的家目录下

5)修改ky用户家目录的权限

chmod755/home/ky…根据需求更改权限,虚拟用户是否可写

6)更改认证模块

cp-a/etc/pam.d/vsftpd/etc/pam.d/ftp

vim/etc/pam.d/ftp

authrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/ftp

accountrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/ftp

7)启动服务

systemctlrestartvsftpd.service

8)查看tom用户

idtom注意:tom用户不存在

9)防火墙设置

firewall-cmd--permanent--add-service=ftp

firewall-cmd--reload

或则

systemctlstopfirewalld.service

10)测试顾客端虚拟用户登入

ftp服务器的IP地址

name:虚拟用户名

passwd:虚拟用户密码

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复