关于ftp的介绍
FTP是FileTransferProtocol(文件传输合同)的中文简称,而英文简称为"文传合同"。用于Internet上的控制文件的单向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有那些应用程序都遵循同一种合同以传输文件。在FTP的使用当中,用户常常遇见两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过顾客机程序向(从)远程主机上传(下载)文件。
FTP服务器
简单地说,支持FTP合同的服务器就是FTP服务器。
与大多数Internet服务一样,FTP也是一个顾客机/服务器系统。用户通过一个支持FTP合同的顾客机程序,联接到在远程主机上的FTP服务器程序。用户通过顾客机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到顾客机。例如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令linux ftp 无法上传,将指定文件送至用户的机器上。顾客机程序代表用户接收到这个文件,将其储存在用户目录中。
用户分类
Real账户
这类用户是指在FTP服务上拥有账号。当这类用户登入FTP服务器的时侯,其默认的主目录就是其账号命名的目录。并且,其还可以变更到其他目录中去。如系统的主目录等等。
Guest用户
在FTP服务器中,我们常常会给不同的部门或则某个特定的用户设置一个账户。并且,这个帐户有个特性,就是其只才能访问自己的主目录。服务器通过这些方法来保障FTP服务上其他文件的安全性。这类账户,在Vsftpd软件中就称作Guest用户。拥有这类用户的账户,只才能访问其主目录下的目录,而不得访问主目录以外的文件。
Anonymous(匿名)用户
这也是我们一般所说的匿名访问。这类用户是指在FTP服务器中没有指定账户,而且其依旧可以进行匿名访问个别公开的资源。
在成立FTP服务器的时侯,我们就须要依照用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把完善的所有账户都归属为Real用户。并且,这常常不符合企业安全的须要。由于这类用户除了可以访问自己的主目录,但是,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要依据实际情况,更改用户所在的类别。
使用方法
TCP/IP合同中,FTP标准命令TCP端标语为21,Port方法数据端口为20。FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制。
须要进行远程文件传输的计算机必须安装和运行ftp顾客程序。在windows操作系统的安装过程中,一般都安装了tcp/ip合同软件,其中就包含了ftp顾客程序。并且该程序是字符界面而不是图形界面,这就必须以命令提示符的形式进行操作,很不便捷。
启动ftp顾客程序工作的另一途径是使用ie浏览器,用户只须要在ie地址栏中输入如下格式的url地址:ftp://[用户名:口令@]ftp服务器域名:[端标语]
(在CMD命令行下也可以用上述方式联接,通过put命令和get命令达到上传和下载的目的,通过ls命令列举目录,不仅上述方式外还可以在cmd下输入ftp回车,之后输入openIP来构建一个联接,此方式还适用于linux下联接ftp服务器)
传输方法
FTP的传输有两种形式:ASCII、二补码。
ASCII传输方法
假设用户正在拷贝的文件包含的简单ASCII码文本,假如在远程机器上运行的不是UNIX,当文件传输时ftp一般会手动地调整文件的内容以易于把文件解释成另外那台计算机储存文本文件的格式。
并且经常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或则压缩文件。在拷贝任何非文本文件之前,用binary命令告诉ftp逐条拷贝。
二补码传输模式
在二补码传输中,保存文件的位序,便于原始和拷贝的是逐位一一对应的。虽然目的地机器上包含位序列的文件是没意义的。诸如,macintosh以二补码形式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如在ASCII形式下传输二补码文件,虽然不须要也仍会转译。这会毁坏数据。(ASCII形式通常假定每一字符的第一有效位无意义,由于ASCII字符组合不使用它。假如传输二补码文件,所有的位都是重要的。)
支持模式
FTP支持两种模式:Standard(PORT方法,主动形式),Passive(PASV,被动形式)。
Port模式
FTP顾客端首先和服务器的TCP21端口构建联接,拿来发送命令,顾客端须要接收数据的时侯在这个通道上发送PORT命令。PORT命令包含了顾客端用哪些端口接收数据。在传送数据的时侯,服务器端通过自己的TCP20端口联接至顾客端的指定端口发送数据。FTPserver必须和顾客端构建一个新的联接拿来传送数据。
Passive模式
构建控制通道和Standard模式类似,但构建联接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端标语小于1023大于65535)而且通知顾客端在这个端口上传送数据的恳求,顾客端联接FTP服务器此端口,之后FTP服务器将通过这个端口传送数据。
好多防火墙在设置的时侯都是不容许接受外部发起的联接的,所以许多坐落防火墙后或外网的FTP服务器不支持PASV模式,由于顾客端难以穿过防火墙打开FTP服务器的高档端口;而许多外网的顾客端不能用PORT模式登录FTP服务器,由于从服务器的TCP20未能和内部网路的顾客端构建一个新的联接,导致难以工作。
更多关于FTP的知识请参考《鸟哥的私房菜-服务器架设篇》第21章内容。
window上ftp安装
最知名的FileZilla有服务端和顾客端。
FileZilla是一个免费开源的FTP软件,分为顾客端版本和服务器版本,具备所有的FTP软件功能。可控性、有条理的界面和管理多站点的简化方法促使Filezilla顾客端版成为一个便捷高效的FTP顾客端工具,而FileZillaServer则是一个精巧而且可靠的支持FTP&SFTP的FTP服务器软件。
filezillaserver下载:
server端安装和配置,搭建个人ftp服务:
参考
vsftpd介绍
vsftpd是"verysecureFTPdaemon"的简写,安全性是它的一个最大的特性。vsftpd是一个UNIX类操作系统上运行的服务器的名子,它可以运行在例如Linux、BSD、Solaris、HP-UNIX等系统里面,是一个完全免费的、开放源代码的ftp服务器软件,支持好多其他的FTP服务器所不支持的特点。诸如:特别高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特征是精巧轻柔linux ftp 无法上传,安全易用。
在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等特征
①vsftpd是以通常身分启动服务,所以对于Linux系统的使用权限较低,对于Linux系统的害处就相对的降低了。据悉,vsftpd亦借助chroot()这个函式进行改换根目录的动作,致使系统工具不会被vsftpd这支服务所误用;
②任何须要具有较高执行权限的vsftpd指令均以一支特殊的下层程序(parentprocess)所控制,该下层程序享有的较高执行权限功能早已被限制的相当的低,并以不影响Linux本身的系统为准;
③所有来自clients端,想要使用这支下层程序所提供的较高执行权限之vsftpd指令的需求,均被视为『不可信任的要求』来处理,必须要经过相当程度的身分确认后,方可借助该下层程序的功能。诸如chown(),Login的要求等等动作;
④此外,里面提及的下层程序中,仍然使用chroot()的功能来限制使用者的执行权限。
vsftpd安装配置过程
此过程所有涉及到的linux命令,可以参考:
安装VSFTPD
1.首先确认系统内无vsftpd。
rpm-qa|grepvsftpd
若有的话会显示vsftpd-x.x.x.-x.xxx.x86_64
若没有的话会空返回
2.安装vsftpd
yum-yinstallvsftpd
正在安装中:要求linux才能联网
安装完成,注意提示信息:
3.设置开机启动
chkconfigvsftpdon
配置VSFTPD
1.打开vsftpd配置文件/etc/vsftpd/vsftpd.conf
cd/etc/vsftpd
vivsftpd.conf
通过上下箭头联通光标
更改配置文件(核实以下几个参数,次序可能不一致):
anonymous_enable=NO
local_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ascii_upload_enable=YES
ascii_download_enable=YES
//已下内容请在配置文件中自动添加,加到最后
guest_enable=yes
guest_username=ftp
user_config_dir=/etc/vsftpd/vuser_conf
allow_writeable_chroot=YES
编辑杂记得:wq!保存
2.创建用户密码文件/etc/vsftpd/vuser_passwd.txt,注意奇行是用户名,偶行是密码
vivuser_passwd.txt
ftp
ftp123456
截图如下:
3.生成虚拟用户认证的db文件
db_load-T-thash-f/etc/vsftpd/vuser_passwd.txt/etc/vsftpd/vuser_passwd.db
ls查看有没有vuser.passwd.db生成
4.编辑认证文件/etc/pam.d/vsftpd
vi/etc/pam.d/vsftpd
把已有的内容都注释了,之后加上以下几条
authrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/vuser_passwd
accountrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/vuser_passwd
疗效如下:
5.创建虚拟用户配置文件
在/etc/vsftpd/目录下创建chroot_list文件
vichroot_list
文件内容只须要写配置的ftp用户名即可:
创建ftp用户的配置文件:
mkdir/etc/vsftpd/vuser_conf/
vi/etc/vsftpd/vuser_conf/ftp//最后的ftp文件名等于vuser_passwd.txt上面的帐户名,否则下边设置无效
6.设置用户配置文件内容
local_root=/data/ftp
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
如图:
7.设置文件夹权限
在根目录下创建文件夹
mkdir/data/ftp
更改文件夹权限
chmod-R777/data
9.启动vsftpd服务
servicevsftpdstart或则systemctlstartvsftpd.service
执行servicevsftpdstart时假如显示redirect…..一行信息,这个是正常的,不是错误的
启动后,查看是否启动成功,倘若看见红色的active(running)代表成功:
servicevsftpdstatus或则systemctlstatusvsftpd.service
假如ftp联接失败,在服务器上查看错误信息:
tail-f/var/log/secure
使用FileZilla联接
先关掉虚拟机的防火墙,这儿不再深究怎样将ftp端口加到防火墙的放行配置中
联接成功
倘若出现500的错误:
执行:setsebool-Pftp_home_dir1
假如不能上传文件,执行:
setsebool-Pallow_ftpd_full_access=1
此命令为临时的,重启系统就失效了,若果要永久的改,修改配置:
之后重启系统即可
附表:ftp操作命令
启动:systemctlstartvsftpd.service
停止:systemctlstopvsftpd.service
重启:systemctlrestartvsftpd.service
/etc/vsftpd/目录:
chroot_list文件内容:
vuser_passwd.txt内容:
vuser_conf/ftp内容:
vsftpd.conf内容:
#是否容许匿名登陆FTP服务器,默认设置为YES容许
#用户可使用用户名ftp或anonymous进行ftp登陆,口令为用户的E-mail地址。
#如不容许匿名访问则设置为NO
anonymous_enable=YES
#是否容许本地用户(即linux系统中的用户账号)登陆FTP服务器,默认设置为YES容许
#本地用户登入后会步入用房主目录,而匿名用户登入后步入匿名用户的下载目录/var/ftp/pub
#若只容许匿名用户访问,上面加上#注释掉即可制止本地用户访问FTP服务器
local_enable=YES
#是否容许本地用户对FTP服务器文件具有写权限,默认设置为YES容许
write_enable=YES
#网段,本地用户默认网段为077
#你可以设置本地用户的文件网段为缺省022,也可按照个人喜好将其设置为其他值
#local_umask=022
#是否容许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
#anon_upload_enable=YES
#是否容许匿名用户创建新文件夹
#anon_mkdir_write_enable=YES
#是否激活目录欢迎信息功能
#当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息
#默认情况下,欢迎信息是通过该目录下的.message文件获得的
#此文件保存自定义的欢迎信息,由用户自己完善
#dirmessage_enable=YES
#是否让系统手动维护上传和下载的日志文件
#默认情况该日志文件为/var/log/vsftpd.log,也可以通过下边的xferlog_file选项对其进行设定
#默认值为NO
xferlog_enable=YES
#MakesurePORTtransferconnectionsoriginatefromport20(ftp-data).
#是否设定FTP服务器将启用FTP数据端口的联接恳求
#ftp-data数据传输,21为联接控制端口
connect_from_port_20=YES
#设定是否容许改变上传文件的属主,与下边一个设定项配合使用
#注意,不推荐使用root用户上传文件
#chown_uploads=YES
#设置想要改变的上传文件的属主红联linux论坛,假如须要,则输入一个系统用户名
#可以把上传的文件都改成root属主。whoever:任何人
#chown_username=whoever
#设定系统维护记录FTP服务器上传和下载情况的日志文件
#/var/log/vsftpd.log是默认的linux伊甸园,也可以另设其它
#xferlog_file=/var/log/vsftpd.log
#是否以标准xferlog的格式书写传输日志文件
#默认为/var/log/xferlog,也可以通过xferlog_file选项对其进行设定
#默认值为NO
#xferlog_std_format=YES
#以下是附加配置,添加相应的选项将启用相应的设置
#是否生成两个相像的日志文件
#默认在/var/log/xferlog和/var/log/vsftpd.log目录下
#后者是wu_ftpd类型的传输日志,可以借助标准日志工具对其进行剖析;前者是vsftpd类型的日志
#dual_log_enable
#是否将原先输出到/var/log/vsftpd.log中的日志,输出到系统日志
#syslog_enable
#设置数据传输中断间隔时间,此句子表示空闲的用户会话中断时间为600秒
#即当数据传输结束后,用户联接FTP服务器的时间不应超过600秒。可以依据实际情况对该值进行更改
#idle_session_timeout=600
#设置数据联接超时时间,该句子表示数据联接超时时间为120秒,可依照实际情况对其个更改
#data_connection_timeout=120
#运行vsftpd须要的非特权系统用户,缺省是nobody
#nopriv_user=ftpsecure
#是否辨识异步ABOR恳求。
#假如FTPclient会下达"asyncABOR"这个指令时,这个设定才须要启用
#而通常此设定并不安全,所以一般将其取消
#async_abor_enable=YES
#是否以ASCII形式传输数据。默认情况下,服务器会忽视ASCII形式的恳求。
#启用此选项将容许服务器以ASCII形式传输数据
#不过,这样可能会造成由"SIZE/big/file"方法导致的DoS功击
#ascii_upload_enable=YES
#ascii_download_enable=YES
#登陆FTP服务器时显示的欢迎信息
#如有须要,可在修改目录欢迎信息的目录下创建名为.message的文件,并写入欢迎信息保存后
#ftpd_banner=WelcometoblahFTPservice.
#黑名单设置。假如很厌恶个别emailaddress,就可以使用此设定来取消他的登陆权限
#可以将个别特殊的emailaddress阻挡住。
#deny_email_enable=YES
#当里面的deny_email_enable=YES时,可以借助这个设定项来规定什么电邮地址不可登入vsftpd服务器
#此文件需用户自己创建,一行一个emailaddress即可
#banned_email_file=/etc/vsftpd/banned_emails
#用户登入FTP服务器后是否具有访问自己目录以外的其他文件的权限
#设置为YES时,用户被锁定在自己的home目录中,vsftpd将在下边chroot_list_file选项值的位置找寻chroot_list文件
#必须与下边的设置项配合
#chroot_list_enable=YES
#被纳入此文件的用户,在登陆后将不能切换到自己目录以外的其他目录
#因而有利于FTP服务器的安全管理和隐私保护。此文件需自己完善
#chroot_list_file=/etc/vsftpd/chroot_list
#是否容许递归查询。默认为关掉,以避免远程用户导致过量的I/O
#ls_recurse_enable=YES
#是否容许窃听。
#假如设置为YES,则vsftpd将以独立模式运行,由vsftpd自己窃听和处理IPv4端口的联接恳求
listen=YES
#设定是否支持IPV6。如要同时窃听IPv4和IPv6端口,
#则必须运行两套vsftpd,采用两套配置文件
#同时确保其中有一个窃听选项是被注释掉的
#listen_ipv6=YES
#设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件
#此文件中file=/etc/vsftpd/ftpusers数组,说明了PAM模块能抵御的账号内容来自文件/etc/vsftpd/ftpusers中
#pam_service_name=vsftpd
#是否容许ftpusers文件中的用户登入FTP服务器,默认为NO
#若此项设为YES,则user_list文件中的用户准许登陆FTP服务器
#而假如同时设置了userlist_deny=YES,则user_list文件中的用户将不容许登陆FTP服务器,甚至连输入密码提示信息都没有
#userlist_enable=YES/NO
#设置是否阻扯user_list文件中的用户登入FTP服务器,默认为YES
#userlist_deny=YES/NO
#是否使用tcp_wrappers作为主机访问控制方法。
#tcp_wrappers可以实现linux系统中网路服务的基于主机地址的访问控制
#在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制
#后者设置容许访问记录,前者设置拒绝访问记录。
#如想限制个别主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下边降低两行命令:
#vsftpd:192.168.57.1:DENY和vsftpd:192.168.57.9:DENY
#表明限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器
#此时FTP服务器虽可以PING通,但未能联接