# ftp 服务搭建

## ftp 介绍

FTP是File Transfer Protocol（文件传输协议，简称文传协议）的英文简称，用于在Internet上控制文件的双向传输。

FTP的主要作用就是让用户连接一个远程计算机（这些计算机上运行着FTP服务器程序），并查看远程计算机中的文件，然后把文件从远程计算机复制到本地计算机，或把本地计算机的文件传送到远程计算机。\
小公司用的多，大企业不用FTP，因为不安全

## 使用vsftp 搭建 ftp 服务

vsftp为CentOS自带的ftp软件

**安装服务**

```bash
yum -y install vsftpd db4-utils
```

**建立系统账号**  <br>

```bash
useradd virftp -s /sbin/nologin
```

**建立虚拟账户**

```bash
vim /etc/vsftpd/vsftpd_login
# 加入

test
1234567
```

> 格式：奇数行为用户，偶数行为密码

**更改权限**

```bash
chmod 600 /etc/vsftpd/vsftpd_login
```

**生成库文件密码**

```bash
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
```

**创建和用户对应的配置文件**

```bash
mkdir /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
```

```bash
vim test
   # 文件名和虚拟用户名相同
#加入

local_root=/home/virftp/test   # 虚拟用户家目录
anonymous_enable=NO            # 匿名用户
write_enable=YES               # 可写权限
local_umask=022                # 文件的umask
anon_upload_enable=NO          # 上传权限
anon_mkdir_write_enable=NO     # 创建目录权限
idle_session_timeout=600       # 空闲超时时间
data_connection_timeout=120    # 连接超市时间
max_clients=10                 # 最大客户端连接数
max_per_ip=5                   # 最大客户端ip数量
local_max_rate=50000

           # 最大传输速度，k/s
```

**创建ftp文件**

```bash
mkdir /home/virftp/test
chown -R virftp:virftp /home/virftp
```

**用户认证**

```bash
vim /etc/pam.d/vsftpd  
# （在开头添加一下两行）
auth       sufficient   /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account    sufficient   /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
```

> 注意：如果系统为64位，则上面的lib改为lib64，否则配置失败

**修改全局配置文件**

```bash
vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
listen_ipv4=yes

# 添加：

chroot_local_user=YES （可能已经存在）
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
```

**启动vsftpd 服务**

```bash
systemctl start vsftpd
```

**在客户端测试**

```bash
# 客户端
yum install -y lftp
# 登录
lftp test@IP
```

## 使用pure-ftpd 搭建 ftp 服务

**安装**

```bash
yum install -y epel-release

yum install -y pure-ftpd
```

**修改配置文件**

```bash
vim /etc/pure-ftpd/pure-ftpd.conf

# 找到pureftpd.pdb这行，把行首的#删除
```

**启动服务**

```bash
systemctl start pure-ftpd
```

**创建ftp目录和用户**

```bash
# 创建ftp目录
mkdir -pv /data/ftp

# 创建用户
useradd -u 1010 pure-ftp

chown -R pure-ftp:pure-ftp /data/ftp

# 将系统用户映射为ftp用户
pure-pw useradd ftp -u pure-ftp  -d /data/ftp

# 生成密码库（这步很关键）
pure-pw mkdb

# 其他命令
pure-pw list/userdel/usermod/passwd
```

**测试**

```bash
# 客户端
yum install -y lftp
# 登录
lftp ftp@IP
```
