CentOS 7.0 FTP服务器简单搭建
1、先了解FTP(File Transfer Protocol)的三种登录模式和两种工作模式,针对不同的登录方式配置FTP服务器的文件目录,防止根据步骤安装完成后,发现并不是自己想要的,少走一些湾路。
FTP支持的三种认证模式:
匿名用户模式:不需要用户名和密码认证直接登录到FTP服务器。
本地用户模式:通过本地用户和设置密码的方式,控制登录FTP的用户,本地用户登录模式相比匿名用户登录更加安全。
虚拟用户模式:FTP服务的专有用户,只用于访问FTP服务提供的资源,不能访问Linux系统中的其他资源。相比本地用户模式更加安全。
两种工作模式:
FTP与其他服务不同,它是同时使用两个端口来进行传输操作,一个数据端口,另一个是命令端口。通常21端口是命令端口,20端口是数据端口。
主动模式:ftp服务器没有与客户端之间的传输端口,客户端会任意分配端口与服务器连接。
被动模式:客户端随机分配可用端口与ftp连接,ftp服务器的命令端口没有改变,数据传输端口由ftp服务器分配。


2、开始:yum安装。没有yum工具的先装个。$ yum install vsftpd -y。
3、启动服务:$ systemctl start vsftpd。
启用开机自启服务:$ systemctl enable vsftpd。
1、程序安装好后默认使用的是匿名模式,无需密码就能直接访问FTP服务器资源,默认的文件地址为/var/ftp/pub。推荐两个支持FTP服务的软件FileZilla,还有Xftp。

1、$ useradd test 创建用户
$ passwd test 用户密码设置
$ mkdir /var/ftp/test 创建服务目录
$ chown -R test:test /var/ftp/test/ 修改目录拥有者为test。这里很重要,设置权限,这里设置了read权限。
2、修改vsftpd.conf:
$ cd /etc/vsftpd/
$ cp vsftpd.conf vsftpd.conf.bak 拷贝一份,避免修改失误还能再来
$ vim /etc/vsftpd/vsftpd.conf 编辑文件
修改内容如下
# vsftpd.conf
anonymous_enable=NO 禁止匿名登录
local_enable=YES 允许本地用户登录
FTP listen=YES 监听 IPv4
#listen_ipv6=YES 注释关闭监听IPv4
# 文件的最底层添加
local_root=/var/ftp/test 本地用户登录后所在目录
chroot_local_user=YES 全部用户被限制在主目录
chroot_list_enable=YES 启用额外用户名单
chroot_list_file=/etc/vsftpd/chroot_list 指定例外用户列表文件
allow_writeable_chroot=YES 列表中用户不被锁定在主目录
# 如果仅仅想主动模式,以下配置就无需添加
pasv_enable=YES 开启被动模式
pasv_address=127.0.0.1 FTP服务器公网IP地址
pasv_min_port=39000 被动模式下,建立数据传输可使用的端口范围最小值
pasv_max_port=41000 被动模式下,建立数据传输可使用的端口范围最大值
3、创建用户列表:$ vim /etc/vsftpd/chroot_list
由于并没有给任何用户权限可以访问系统中的其他目录,所以为空
有一些服务器,例如阿里云服务器,需要配置安全组的端口开发,所以这里也需要多加注意,并且关闭39000 - 41000的防火墙。

4、添加用户能够访问的其他路径的权限:
$ vim /etc/vsftpd/chroot_list
chroot_list pathname

1、虚拟用户模式相比本地用户模式更加安全,用户只能访问系统提供的服务资源,进一步增强了FTP服务器的安全性。 虚拟用户的用户认证是通过pam方式去认证的,pam文件里面指定了认证的db文件,db文件又是通过明文用户名和密码文件生成而来。
配置pam文件,注释所有的内容,末尾添加一下内容:
$ getconf LONG_BIT 查看多少位机子
$vim /etc/pam.d/vsftpd
# 64 位
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
# 32 位
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
2、生成db文件:
$ vim /etc/vsftpd/vuser_passwd.txt
# 单行为用户,双行位密码
test2
passwd
$ cd /etc/vsftpd
$ db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db
如果想添加用户,可以在vuser_passed.txt中添加用户,之后重新生成db文件。

3、配置vsftpd.conf
$ vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 关闭匿名
chroot_local_user=YES 用户被限制在主目录
allow_writeable_chroot=YES 开启用户读写权限
listen=YES
listen_ipv6=NO
guest_enable=YES 启动虚拟用户功能
user_config_dir=/etc/vsftpd/vuser_conf 虚拟用户配置文件存放路径
pasv_enable=YES 开启被动模式
pasv_address=127.0.0.1 FTP服务器公网IP地址
pasv_min_port=39000 被动模式下,建立数据传输可使用的端口范围最小值
pasv_max_port=41000 被动模式下,建立数据传输可使用的端口范围最大值
4、配置虚拟用户的权限和目录:
$ mkdir /var/ftp/test2 虚拟用户文件目录
$ mkdir -p /etc/vsftpd/vuser_conf/ 虚拟用户配置目录
$ vim /etc/vsftpd/vuser_conf/test2 创建用户配置文件
local_root=/var/ftp/iot2 配置用户文件目录
write_enable=YES 设置用户可写入
max_per_ip=10 设置同一账号允许10个ip登录
5、创建本地用户:
$ useradd -s /sbin/nologin test2 创建本地用户
不创建用户会有这个报错响应: 500 OOPS: cannot locate user entry:test2
6、最后的是开放端口的命令行:
$ firewall-cmd --zone=public --add-port=21/tcp --permanent
$ firewall-cmd --reload