ftp 虚拟用户模式使用

安装ftp服务

1
2
3
4
5
6
#安装ftp服务
[root@localhost ~]# yum install -y vsftpd ftp
#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# setenforce 0

配置ftp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#1 新建一个ftp的宿主用户(真实用户)
[root@localhost ~]# useradd -g root -M -d /data/vsftp -s /sbin/nologin ftpuser
[root@localhost ~]# passwd ftpuser
#此处的ftpuser就是用来关联ftp用的

#2 设置该用户的目录
[root@localhost ~]# mkdir -p /data/vsftp
[root@localhost ~]# chown -R ftpuser.root /data/vsftp
#把 /data/vsftp 的所有权给ftpuser.root
#这里的 /data/vsftp 就是ftp的根目录,没有的话自行创建,也可以换成其他目录

#3 修改/etc/pam.d/vsftpd (只保留下面两行)
[root@localhost ~]# vim /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

#4 创建一个用于保存明文用户名和密码的文件 vuser_passwd.txt
[root@localhost ~]# vim /etc/vsftpd/vuser_passwd.txt
test
123456
admin
123456

#5 然后通过以下命令生成db文件:
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

#6 设置虚拟用户的目录
[root@localhost ~]# mkdir /etc/vsftpd/vuser_conf
[root@localhost ~]# vim /etc/vsftpd/vuser_conf/test
#设置用户目录
local_root=/data/vsftp
#设置虚拟用户是否可以写入
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
#允许虚拟用户的上传功能
anon_upload_enable=YES
#设置虚拟用户是否可以创建文件夹
anon_mkdir_write_enable=YES
#设置虚拟用户是否可以执行其他的写入操作,比如删除、重命名、覆盖操作。
anon_other_write_enable=YES
#最多允许同一账号在10个不同的IP登录
max_per_ip=10
#最大下载速度(字节/秒)
local_max_rate=2500000
#session超时时间
#idle_session_timeout=300
#连接超时时间
#data_connection_timeout=90
#最多连接数
#max_clients=10

#7 修改ftp的配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
#修改一下几处
#不允许匿名访问
anonymous_enable=NO
#本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
local_enable=YES
#可以进行写操作
write_enable=YES
#禁止匿名用户上传
anon_upload_enable=NO
#禁止匿名用户建立目录
anon_mkdir_write_enable=NO
#支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES
#限制用户只能在FTP主目录
#若没有chroot_list文件,自行创建,每一行为一个用户名
chroot_local_user=NO
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/vuser_passwd.txt
#开启ip4监听
listen=YES
#关闭ip6监听
listen_ipv6=NO
#PAM服务下Vsftpd的验证配置文件名
pam_service_name=vsftpd
#指定vsftpd服务的运行帐户,不指定时使用ftp
#这里的ftpuser就是刚才useradd时创建的Linux系统用户
nopriv_user=ftpuser
# 设定启用虚拟用户功能
guest_enable=YES
# 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
guest_username=ftpuser
# 虚拟用户配置文件存放的路径
user_config_dir=/etc/vsftpd/vuser_conf
# 如果启用了限定用户在其主目录下需要添加这个配置
allow_writeable_chroot=YES
# NO时,虚拟用户和匿名用户有相同的权限,默认是NO
virtual_use_local_privs=YES
#开启pasv被动模式
pasv_enable=YES
#被动模式最小起始端口
pasv_min_port=10000
#被动模式最大端口,使用10000-15000端口,生产环境应该适当缩小端口范围
pasv_max_port=15000
#开启vsftpd操作日志,包括删除、重命名等等,方便追溯
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

以上配置好后就可以重启ftp服务进行使用了

1
[root@localhost ~]# systemctl restart vsftpd

增加虚拟用户

后续增加新的虚拟用户,只需要在vuser_passwd.txt 中添加添加新的用户密码,db_load生成新的db文件,在vuser_conf/目录增加用户同事的虚拟用户权限文件,重启ftp服务就可以了(修改了用户权限也需要重启服务)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 1 增加nanjingftp用户
[root@localhost ~]# vim /etc/vsftpd/vuser_passwd.txt
test
123456
admin
123456
czz
czz

#2 然后通过以下命令生成db文件:
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

#3 设置虚拟用户的目录
[root@localhost ~]# vim /etc/vsftpd/vuser_conf/czz
local_root=/data/vsftp/czz
#设置虚拟用户是否可以写入
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
#允许虚拟用户的上传功能
anon_upload_enable=YES
#设置虚拟用户是否可以创建文件夹
anon_mkdir_write_enable=YES
#设置虚拟用户是否可以执行其他的写入操作,比如删除、重命名、覆盖操作。
anon_other_write_enable=YES
#最多允许同一账号在10个不同的IP登录
max_per_ip=10
#最大下载速度(字节/秒)
local_max_rate=2500000
#session超时时间
#idle_session_timeout=300
#连接超时时间
#data_connection_timeout=90
#最多连接数
#max_clients=10

#4 重启ftp服务
[root@localhost ~]# systemctl restart vsftpd
-------------本文结束感谢您的阅读-------------