1.使用vsftpd搭建ftp服务器

①yum安装vsftpd

[root@test_01 ~]# yum install -y vsftpd

②为保证安全性,添加虚拟用户virftp,并且使该用户无法登录系统

[root@test_01 ~]# useradd -s /sbin/nologin virftp

③编辑虚拟用户的密码文件/etc/vsftpd/vsftpd_login,并在文件中写入用户和密码(奇数行用户名,偶数行密码)

[root@test_01 ~]#  vim /etc/vsftpd/vsftpd_login
testuser1
1234567890
testuser2
0987654321

④修改文件权限,root用户可读可写

[root@test_01 ~]# chmod 600 /etc/vsftpd/vsftpd_login

⑤将文本形式的密码文件转换为计算机可识别的二进制文件

[root@test_01 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@test_01 ~]# ls /etc/vsftpd/
ftpusers   vsftpd.conf             vsftpd_login
user_list  vsftpd_conf_migrate.sh  vsftpd_login.db

⑥创建虚拟用户的配置文件目录

[root@test_01 ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@test_01 ~]# cd /etc/vsftpd/vsftpd_user_conf
[root@test_01 vsftpd_user_conf]#

⑦创建虚拟用户配置文件,并将如下配置写入文件中

[root@test_01 vsftpd_user_conf]# vim testuser1
local_root=/home/virftp/testuser1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10

配置信息详解:

local_root=/home/virftp/testuser1  ⇒ 定义x虚拟用户的家目录,用于文件传输

anonymous_enable=NO    ⇒   是否允许匿名用户

write_enable=YES   ⇒   是否可写

local_umask=022    ⇒   用于定义创建的新文件&目录时的权限

anon_upload_enable=NO   ⇒   是否允许匿名用户上传

anon_mkdir_write_enable=NO   ⇒    是否允许匿名用户创建文件夹,是否可写

idle_session_timeout=600    ⇒    超时登录时间限制

data_connection_timeout=120   ⇒    数据传输的超时时间

max_clients=10   ⇒   最大的客户端数目

⑧构建虚拟用户的家目录

[root@test_01 vsftpd_user_conf]# touch /home/virftp/testuser1/test.txt

[root@test_01 vsftpd_user_conf]#  chown -R virftp:virftp /home/virftp

⑨定义密码文件信息

[root@test_01 vsftpd_user_conf]# vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

⑩编辑vsftpd的主配置文件,修改以下部分信息

将anonymous_enable=YES 改为 anonymous_enable=NO 

将#anon_upload_enable=YES 改为 anon_upload_enable=NO 

将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

※在配置文件末尾添加如下内容

chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES

⑪启动vdftpd服务,查看服务状态

[root@test_01 vsftpd_user_conf]# systemctl start vsftpd
[root@test_01 vsftpd_user_conf]# ps aux | grep vsftpd
root       3986  0.0  0.0  53216   572 ?        Ss   17:34   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       3988  0.0  0.0 112680   972 pts/0    S+   17:34   0:00 grep --color=auto vsftpd

⑫在客户端安装lftp客户端后,使用lftp登录测试

[root@test_02 ~]# lftp testuser1@192.168.231.128
口令:
lftp testuser1@192.168.231.128:~> ls
-rw-r--r--    1 1022     1022            0 Jan 18 09:17 test.txt
lftp testuser1@192.168.231.128:/>

2.使用pure-ftpd搭建ftp服务

①yum安装pure-ftpd

[root@test_02 ~]# yum install -y pure-ftpd

②编辑配置文件/etc/pure-ftpd/pure-ftpd.conf

将包含密码配置文件/etc/pure-ftpd/pureftpd.pdb的这一行取消注释

PureDB                        /etc/pure-ftpd/pureftpd.pdb

③启动pure-ftpd服务

[root@test_02 ~]# systemctl start pure-ftpd

④创建测试目录以及测试用户

[root@test_02 ~]# useradd -u 1020 pure-ftp
[root@test_02 ~]# mkdir /data/ftp
[root@test_02 ~]# chown -R pure-ftp:pure-ftp /data/ftp

⑤创建ftp虚拟用户,并指定用户家目录

[root@test_02 ~]# pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp
Password:
Enter it again:
[root@test_02 ~]# pure-pw mkdb

⑥测试

[root@test_02 ~]# touch /data/ftp//test.txt
[root@test_02 ~]# lnft ftp_usera@127.0.0.1
-bash: lnft: 未找到命令
[root@test_02 ~]# lftp ftp_usera@127.0.0.1
口令:
lftp ftp_usera@127.0.0.1:~> ls
drwxr-xr-x    2 1020       pure-ftp           22 Jan 18 18:33 .
drwxr-xr-x    2 1020       pure-ftp           22 Jan 18 18:33 ..
-rw-r--r--    1 0          0                   0 Jan 18 18:33 test.txt
lftp ftp_usera@127.0.0.1:/>