部署FTP文件传输服务(一)
FTP典型的C/S结构的应用层协议,需要有服务端软件和客户端软件两个部分共同实现文件传输功能。
1、FTP连接及传输模式
FTP服务器默认使用TCP协议的20、21端口与客户机进行通信。20端口用于建立数据连接。并传输文件数据;21端口用于建立控制连接,并传输FTP控制命令。
主动模式:服务器主动发起数据连接。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,客户端以ROTR命令告知服务器”我打开了某端口,你来连接我“,于是服务器从20端口向客户端的该端口发送请求并建立数据连接。
被动模式:服务器被动等待数据连接。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,服务器以PASV命令告知客户端”我打开了某端口,你来连接我“。于是客户端向服务器的该端口(非20)发送请求并建立数据连接。
2、FTP用户类型
匿名用户:其用户名为ftp或anonymous,提供任意密码(包括空密码)都可以登录ftp。
本地用户:直接使用本机系统用户账号来登录ftp。
虚拟用户:使用ftp服务器软件独立的用户数据库文件中的虚拟用户登录ftp。
3、vsftpd的配置文件
安装vsftpd可使用rpm命令,vsftpd软件在系统光盘中的Server目录下。
[root@localhost /]#rpm -ivh /media/Server/vsftpd-2.0.5-12.el5.i386.rpm
vsftpd的配置文件默认在”/etc/vsftpd/”目录下,包括用户列表文件(ftpusers、user_list)和主配置文件(vsftpd.conf)等。
用户列表配置文件
ftpusers :此文件中列出的用户将禁止登录vsftpd服务器,不管该用户是否在user_list文件中出现。
user_list :此文件中包含用户可能被禁止登录,也可能被允许登录,具体取决于主配置文件vsftpd.conf中的设置。
主配置文件vsftpd.conf
在vsftpd的主配置文件中,配置行采用“配置项=参数”的格式。
常见全局配置项如下:
listen=YSE :是否以独立运行的方式监听服务
listen_address=0.0.0.0 :设置监听FTP服务的IP地址
listen_port=21 :设置监听FTP服务的端口号
write_enable=YES :启用任何形式的写入权限,需要开启
download_enable=YES :是否允许下载,需要开启
dirmessage_enable=YSE :用户切换进入目录是显示.message(如果存在)文件的内容
xferlog_enable=YES :启用xferlog日志,默认记录到“/var/log/xferlog”
xferlog_std_format=YES :启用xferlog标准日志格式,若禁用此项将使用vsftpd自己的格式。
connect_from_port_20=YES :允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES :允许被动模式连接
pasv_max_port=24600 :设置用户被动模式的服务器最大端口
pasv_min_port=24500 :设置用户被动模式的服务器最小端口
pam_service_name=vsftpd :设置用于用户认证的PAM文件位置
userlist_enable=YES :是否启用suer_list用户类表文件
userlist_deny=YES :是否禁止user_list列表文件中的用户账号
max_clients=0 :最多允许多少个客户端同时连接(0无限制)
max_per_ip=0 :对于来自同一个IP地址的客户端。最多允许多少个并发连接(0无限制)
tcp_wrappers=YES :是否启用TCP_Wrappers主机访问控制
常见匿名用户配置项如下:
常见本地用户配置项如下:
关于vsftpd.conf文件中的更多配置项,可执行“man vsftpd.conf”命令查看相关的帮助。
4、搭建匿名FTP访问的目录
搭建匿名访问的FTP需要修改配置文件“vsftpd.conf”,修改如下:
[root@localhost /]#vim /etc/vsftpd/vsftpd.conf
在上述配置内容中。使用了“anon_umask”配置项,此配置项用于设置匿名用户所上传文件或目录的权限权限掩码。权限掩码的作用与子网掩码的作于有点类似,用于去掉特定的权限。列如:若上传权限掩码设为022,则所上传的文件或目录将减去022对应的这不分权限,实际结果是所上传文件的默认权限为644、目录的实际权限是755。
默认匿名用户访问的FTP根目录在“/var/ftp”下,匿名用户的上传下载权限取决于本地权限加上FTP的权限,也就是说如果要实现匿名用户上传文件,在FTP根目录下必须有匿名用户ftp可以写入的目录,否则将不能够上传文件,哪怕是在配置文件中允许了匿名用户上传选项也不能上传。
修改完配置文件后,启动vsftpd服务即可在客户端访问了。
[root@localhost /]#service vsftpd start
5、搭建本地用户验证的FTP访问目录
搭建本地用户访问的FTP也需要修改“vsftpd.conf”配置文件,修改如下:
[root@localhost /]#vim /etc/vsftpd/vsftpd.conf
local_enable=YES --启用本地系统用户
write_enable=YES --启用服务器的写入权限
local_umask=077 --权限掩码设为077,及上传的文件和目录只有属主才有权限
chroot_local_user=YES --将用户禁锢在宿主目录下,否则用户将能够任意切换到服务器的/var,/etc,/boot...等目录下
......省略部分内容
默认本地用户访问的FTP根目录也在“/var/ftp”下。
修改完配置文件后,重新加载vsftpd服务的配置文件即可在客户端访问了。
[root@localhost /]#service vsftpd reload
6、Linux客户端访问FTP
在客户端访问ftp可以是专门的ftp客户端工具,也可以使用ftp命令来访问,在Linux下使用ftp命令还是较多一些。
格式 ftp [目标ip地址]
[root@localhost /]#ftp 192.168.1.1
输入正确的用户名和密码就可以访问ftp了,如果是匿名用户输入ftp或anonymous,空密码即可登录ftp了。
登录ftp后可以使用cd命令切换不同的目录,使用lcd可以切换本机的目录。
使用ls可以查看ftp中的文件或目录,使用pwd可以显示ftp的路径,使用!ls可以查看本机的目录,使用!pwd可以查看本机的路径。
使用get命令可以下载,使用put命令可以上传,mget下载多个文件或目录,mput上传多个文件或目录。
在知道要下载的完成URL路径地址的情况下,用户也可以使用wget命令工具直接下载文件,省出了交互式的登录过程。
[root@localhost /]#wget ftp://192.168.1.1/put/linux_qq.tar.gz