FTP(File Transfer Protocol)即文件传输协议,也是属于客户机/服务器(Clinet/Server,即C/S)模型的服务或应用程序,用于Internet上的控制文件的双向传输。同时,也是一个应用程序(Application)。基于不同操作系统又不同的FTP应用程序,而这些应用程序都遵守同一种协议以传输文件。

常用功能:"Download"和"Upload",即下载文件和上传文件等功能。

虚拟系统:CentOS 6

方法步骤

1.查看是否安装FTP服务

# rpm -qa | grep vsftpd

安装FTP客户端

# 32位平台:
# rpm -Uvh http://mirror.centos.org/centos/6/os/i386/Packages/ftp-0.17-54.el6.i686.rpm
# 64位平台:
# rpm -Uvh http://mirror.centos.org/centos/6/os/x86_64/Packages/ftp-0.17-54.el6.x86_64.rpm

pam认证:ldd命令检查生成的vsftpd文件有没有加载/lib/libpam.so.0

# ldd /usr/local/sbin/vsftpd

确认是否安装pam-deve1,如未安装,请执行以下命令安装

# yum install pam-devel

搜索pam相关软件包。PS:遇到PAM问题次数比较多,怀疑过使用x64系统位数的问题,记录下命令

# yum list |grep pam

若想卸载FTP服务执行以下命令

# rpm -e vsftpd

2.安装FTP服务器

# yum -y install vsftpd

3.设置开机自启动

# chkconfig vsftpd on

检查FTP服务是否开机自启动,如下图说明开机启动

# chkconfig --list vsftpd

centos7安装搭建ftp服务器指定目录 centos6.5安装ftp服务器_配置文件

查看FTP服务状态,以下命令皆可。

# service vsftpd status
# /etc/init.d/vsftpd status

管理FTP服务命令:

启动FTP:# service vsftpd start

关闭FTP:# service vsftpd stop

重启FTP:# service vsftpd restart

4.修改FTP配置文件

配置文件路径:/etc/vsftpd/vsftpd.conf

打开配置文件

# vi /etc/vsftpd/vsftpd.conf

主要配置参数如下:

请根据自己需要配置

参数

作用

listen=[YES|NO]

是否以独立运行的方式监听服务

listen_address=IP地址

设置要监听的IP地址

listen_port=21

设置FTP服务的监听端口

download_enable=[YES|NO]

是否允许下载文件

userlist_enable=[YES|NO]

userlist_deny=[YES|NO]

设置用户列表为“允许”还是“禁止”操作

max_clients=0

最大客户端连接数,0为不限制

max_per_ip=0

同一IP地址的最大连接数,0为不限制

anonymous_enable=[YES|NO]

是否允许匿名用户访问

anon_upload_enable=[YES|NO]

是否允许匿名用户上传文件

anon_umask=022

匿名用户上传文件的umask值

anon_root=/ftp

匿名用户的FTP根目录

anon_mkdir_write_enable=[YES|NO]

是否允许匿名用户创建目录

anon_other_write_enable=[YES|NO]

是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)

anon_max_rate=0

匿名用户的最大传输速率(字节/秒),0为不限制

local_enable=[YES|NO]

是否允许本地用户登录FTP

local_umask=022

本地用户上传文件的umask值

local_root=/ftp

本地用户的FTP根目录

local_max_rate=0

本地用户最大传输速率(字节/秒),0为不限制

pam_service_name=vsftpd

PAM服务名称,调用/etc/pam.d/vsftpd文件

chroot_local_user=[YES|NO]

chroot_list_enable=[YES|NO]

是否将用户权限禁锢在FTP目录,以确保安全

配置chroot_list_file所指定用户权限和访问

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/etc/vsftpd/目录其他文件介绍:

ftpusers:

ftpusers(黑名单)不受任何配制项的影响,它总是有效,它是一个黑名单!

该文件存放的是一个禁止访问FTP的用户列表,通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。

user_list:

user_list(用户名单)与vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,userlist_enable=YES时,它才有效,否则无效。

  • userlist_enable和userlist_deny两个选项针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在user_list文件中的用户这三类用户集合进行的设置。
  • 当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP。
  • 当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入。
  • 当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);注意:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous。

chroot_list:

chroot_list(限定列表)月user_list(用户名单)类似,与vsftpd.conf中的chroot_list_enable和chroot_local_user两个配置项紧密相关的,起到限制或开放指定用户访问目录和权限的作用。

  • chroot_local_user=YES chroot_list_enable=YES 1.所有用户被限制在其主目录下 2.chroot_list_file用户列表作为例外用户,不受限制(默认此种模式)
  • chroot_local_user=YES chroot_list_enable=NO 1.所有用户被限制在其主目录下 2.chroot_list_file用户列表不使用,没有例外用户
  • chroot_local_user=NO chroot_list_enable=YES 1.所有用户不被限制在其主目录下 2.chroot_list_file用户列表作为例外用户,反而受到限制
  • chroot_local_user=YES chroot_list_enable=YES 1.所有用户不被限制在其主目录下 2.chroot_list_file用户列表不使用,没有任何例外用户

5.CentOS6配置iptable规则

配置文件路径:/etc/sysconfig/iptables

打开配置文件

# vi /etc/sysconfig/iptables  # 打开配置文件

在有 ACCEPT 的规则下面添加一条开放 ss 端口的规则,如果前面使用了 10001 作为端口,那么就添加以下代码,如果有多个端口就添加多行(两种写法,第一种为系统默认写法),保存退出。

-A INPUT -p udp -m state --state NEW -m udp --dport 20 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT

由于这条规则只存储在/etc/sysconfig/iptables 这个配置文件内,并没有添加到内存里,所以需要 reload 一下 iptables:

# service iptables reload

6.重启服务

# service vsftpd restart

7.登录浏览器测试

在浏览器输入: ftp://IP地址

8.调试

如遇到问题可通过日志查看

# tail -f /var/log/secure

也可本地登录试试

# ftp 127.0.0.1

查看SeLinux设置状态

# getsebool -a|grep ftp

使用setsebool命令开启

# setsebool ftpd_disable_trans 1 或者 # setsebool ftp_home_dir 1

 

其实关于FTP服务问题还有很多,调试方法也有好多种。