FTP:File Transfer protocol 文件传输协议
ftp不只是一个连接,它是基于tcp的两个连接,命令连接和数据连接。
数据连接的两种模式:
- 主动模式: 服务器端通过20端口主动连接客户端,客户端监听在于服务器端的建立连接的端口+1上,服务器工作在tcp/20
- 客户端使用自己与服务器端建立端口+1上连接客户端的随机端口
ftp是文件传输协议,数据是通过什么形式呢?数据都是以流的方式在物理线路上传送,主要有文本(文件流)、二进制。为了保证数据的安全,有sftp(ssh提供的基于ssh协议的ftp),ftps(基于ssl的ftp)
登录ftp服务器有三种方式:
- 系统用户:ftp服务器的用户
- 虚拟用户:存储在mysql或hash文件中的账号密码
- 匿名用户:ftp服务器开启匿名用户,即可以anonymous身份进行登录
ftp有5种不同的状态码:
- 1xx:信息码
- 2xx:成功状态码
- 3xx:进一步提示补全信息的状态码
- 4xx:客户端错误(临时错误)
- 5xx:服务器端错误(永久性错误)
安装vsftpd
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
特点:
- vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用;
- 任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准;
- 所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作;
- 此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。
安装:
yum -y install vsftpd
服务脚本/etc/rc.d/init.d/vsftpd
配置文件/etc/vsftp/vsftpd.conf
主程序文件/usr/sbin/vsftpd
数据文件/var/ftp
配置文件/etc/vsftpd/vsftp.conf
#禁锢用户,默认为no,yes为开启禁锢,chroot为家目录
chroot_local_user={yes | no}
#禁锢用户列表user_list的用户
chroot_list_enable={yes | no}
#user_list中的将用户禁锢在其家目录,也可对其设定黑白名单,黑名单不允许user_list登录,白名单允许user_list登陆
#黑名单:userlist_enable=YES,userlist_deny=YES
#白名单:userlist_enable=YES,userlist_deny=NO
#禁锢部分用户,将禁锢的用户名添加到chroot文件,一行一个用户名。
#与禁锢用户列表不能同时使用,两者选择一个
chroot_list_file=/etc/vsftpd/chroot
#是否需要本地用户登录
local_enable={yes | no}
#启动匿名用户登录
anonymous_enable=YES
#允许匿名用户有写权限
anon_upload_enable=YES
#允许匿名用户有删除权限
anon_other_write_enable=YES
#允许匿名用户创建文件夹权限
anon_mkdir_write_enable=YES
#注意:`在启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;生效的权限取决于文件系统权限和服务权限的交集`
#用户登录欢迎信息
ftpd_banner=Welcome to my ftp
banner_file=/etc/vsftpd/bannerfile #在文件中写欢迎信息
dirmessage_enable=YES #在目录中创建.messages隐藏文件,里面写欢迎信息
#/etc/vsftpd/ftpusers中的用户不允许使用ftp服务器
#这是在/etc/pam.d/vsftpd中定义的
#连接限制
max_clients #最大并发连接数
max_per_ip #相同的ip可同时发起并发请求数
#传输速率,单位“字节/秒”
anon_max_rate #匿名用户的传输速率
local_max_rate #本地用户传输速率
#上传文件的umask
anon_umask #匿名用户上传文件的umask
local_umask #本地用户上传文件的umask
#修改匿名用户上传文件的属主属组
chown_uploads=YES
chown_username=用户名