FTP简介
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
搭建FTP服务器
检查vsftpd软件是否安装
[fanmaolin@Centeros ~]$ rpm -qa | grep vsftpd
如果没有安装进行下面的安装操作
安装vsftpd软件
[fanmaolin@Centeros ~]$ sudo yum install -y vsftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: centos.ustc.edu.cn
* updates: centos.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-24.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================
Installing:
vsftpd x86_64 2.2.2-24.el6 base 156 k
Transaction Summary
====================================================================================================================================
Install 1 Package(s)
Total download size: 156 k
Installed size: 340 k
Downloading Packages:
vsftpd-2.2.2-24.el6.x86_64.rpm | 156 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : vsftpd-2.2.2-24.el6.x86_64 1/1
Verifying : vsftpd-2.2.2-24.el6.x86_64 1/1
Installed:
vsftpd.x86_64 0:2.2.2-24.el6
Complete!
vsftpd的一般操作
使用vsftpd软件,主要包括如下几个命令:
启动ftp:service vsftpd start
停止ftp:service vsftpd stop
重启ftp:service vsftpd restart
配置vsftpd
ftp的配置文件主要有三个:
ftpusers 该文件用来指定那些用户不能访问ftp服务器。
user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
vsftpd.conf vsftpd的主配置文件
[fanmaolin@Centeros ~]$ ls /etc/vsftpd/
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
查看配置
“#”表示注释
[fanmaolin@Centeros ~]$ sudo grep -v "#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES#是否允许匿名登录ftp,YES表示允许。
local_enable=YES#是否允许本地用户登录,本地用户即/etc/passwd内帐号,YES表示允许。
write_enable=YES#是否开放写权限
local_umask=022#设置本地用户的文件的掩码是022。
dirmessage_enable=YES#当使用者进入某个目录时,会显示该目录需要注意的内容,显示的档案预设是.message ,需要手工在该目录下创建,当然,可以使用message_file设定项目来修订!
xferlog_enable=YES#激活上传下载日志,由xferlog_file决定日志文件名。
connect_from_port_20=YES#启用FTP数据端口的连接请求(ftp-data)。
xferlog_std_format=YES#是否使用标准的ftp xferlog模式。
listen=YES#开启ipv4监听
pam_service_name=vsftpd#使用pam模块控制,vsftpd文件在/etc/pam.d目录下。
userlist_enable=YES#此选项被激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步骤。
tcp_wrappers=YES#是否允许tcp_wrappers管理。
进入vsftpd.conf进行配置修改
[fanmaolin@Centeros ~]$ sudo vim /etc/vsftpd/vsftpd.conf
anonymous_enable=yes //允许匿名用户登录
local_enable=yes //允许本地用户登录
write_enable=yes
local_umask=022
anon_upload_enables=yes #取消注释符“#”
anon_mkdir_write_enable=yes #取消注释符“#”
dirmessage_enable=yes
xferlog_enable=yes
connet_from_port_20=yes
xferlog_file=/va/log/vsftpd.log #取消注释符“#”,当xferlog_enable的值为YES时,日志将记录在xferlog_file定义的文件中。
xferlog_std_format=yes
listen=yes
修改防火墙
[fanmaolin@Centeros ~]$ sudo service vsftpd start #启动vsftpd
Starting vsftpd for vsftpd: [ OK ]
[fanmaolin@Centeros ~]$ sudo /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT #打开21端口
[fanmaolin@Centeros ~]$ sudo /etc/rc.d/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[fanmaolin@Centeros ~]$ sudo service iptables restart
iptables: Setting chains to policy ACCEPT: filter mangle na[ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
这样子就可以登录ftp了
参考链接:
总结:
无法启动vsftpd
[fanmaolin@Centeros ~]$ service vsftpd restart
Shutting down vsftpd: [FAILED]
可能是21端口被占用
[fanmaolin@Centeros ~]$ sudo netstat -natp | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 5460/vsftpd
tcp 0 0 192.168.216.128:22 192.168.216.1:50934 ESTABLISHED 5180/sshd
tcp 0 0 192.168.216.128:22 192.168.216.1:55972 ESTABLISHED 5305/sshd
tcp 0 0 192.168.216.128:22 192.168.216.1:52572 ESTABLISHED 4465/sshd
进行查看后发现是上次启动的没有关闭
[fanmaolin@Centeros ~]$ sudo service vsftpd stop
Shutting down vsftpd: [ OK ]
[fanmaolin@Centeros ~]$ sudo netstat -natp | grep 21
tcp 0 0 192.168.216.128:22 192.168.216.1:50934 ESTABLISHED 5180/sshd
tcp 0 0 192.168.216.128:22 192.168.216.1:55972 ESTABLISHED 5305/sshd
tcp 0 0 192.168.216.128:22 192.168.216.1:52572 ESTABLISHED 4465/sshd
[fanmaolin@Centeros ~]$ sudo service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
解决问题。
登录ftp显示时间过长
重新启动虚拟机后解决问题。