Vsftp配置虚拟用户,目标:把用户限定在自己的目录中

0.Notice

环境是64位的Centos6.3 牵涉到的用户:

  • 实体用户 vsftpuser (linux用户)
  • 虚拟用户 ftpuser 这个只是vsftp 配置中的用户,非linux 用户

1.安装vsftp (此处略去50字)

2.生成密码数据库

用户密码文件 /etc/vsftpd/vuser.list,一行用户一行密码

1
2
ftpuser 
ftppass

生成密码库的命令如下:

1
2
3
# 没有db_load的 apt install db-util
db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db

2.1 /etc/pam.d/vsftpd.vu

1
2
auth required pam_userdb.so db=/etc/vsftpd/vuser 
account required pam_userdb.so db=/etc/vsftpd/vuser

3.配置主文件 /etc/vsftpd/vsftpd.conf

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
#disable anonymous
anonymous_enable=NO
#user config
local_enable=YES
write_enable=YES
local_umask=022

###virtual user config###
guest_enable=YES
guest_username=vsftpuser
user_config_dir=/etc/vsftpd/user.d

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#server config
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
connect_from_port_20=YES
listen=YES
pam_service_name=vsftpd.vu
tcp_wrappers=YES
use_localtime=YES
pasv_enable=YES
anon_world_readable_only=NO
allow_writeable_chroot=YES

4. chroot 编辑文件 /etc/vsftpd/chroot_list

1
2
#实体用户
vsftpuser

5.创建实体用户用来做所有虚拟用户的handler

1
useradd -s /sbin/nologin -d /home/vsftpuser vsftpuser

6.虚拟用户配置文件 /etc/vsftpd/user.d/ftpuser

1
2
3
4
5
#虚拟用户根目录
local_root=/home/vsftpuser/ftpuser
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

7.创建虚拟用户根目录

1
2
mkdir /home/vsftpuser/ftpuser 
chown vsftpuser.vsftpuser /home/vsftpuser/ftpuser

8.重启

1
/etc/init.d/vsftpd restart