CentOS7 vsftp 配置虚拟用户


1、安装

yum install vsftpd db4-utils

2、备份配置文件

cd /etc/vsftpd/
cp vsftpd.conf vsftpd.src.conf

3、修改配置文件如下

vim vsftpd.conf
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
guest_enable=yes
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=vsftpd

local_enable=YES
pasv_enable=YES
pasv_min_port=5090
pasv_max_port=6000

4、创建虚拟用户账户文件

vim /etc/vsftpd/userfile
user1
123456
user2
123456

5、根据虚拟用户账户文件生成虚拟用户配置文件  vsftpd_login.db

db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db

6、配置虚拟用户登录认证,注释掉全部内容,新增下面的两行,最终效果如下:

vim /etc/pam.d/vsftpd
#%PAM-1.0
auth        sufficient  /lib64/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login
account     sufficient  /lib64/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login
#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

7、限制虚拟用户切换主目录

vim /etc/vsftpd/chroot_list
user1
user2

8、创建配置文件目录

mkdir /etc/vsftpd/vsftpd_user_conf

9、按用户名为每个用户写配置内容

仅下载权限

vim /etc/vsftpd/vsftpd_user_conf/user1
anon_world_readable_only=NO    
local_root=/home/vsftpd/user1

上传、下载权限,不能删除、不能重命名

anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/vsftpd/user1

全部权限:可上传、下载、删除和改名

write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/user1

10、创建vsftpd用户(与vsftpd.conf 文件中的:guest_username=vsftpd  一致)

useradd -d /home/vsftpd -s /sbin/nologin vsftpd
chown -R vsftpd:vsftpd /home/vsftpd

11、重启vsftpd服务

systemctl vsftpd restart.service

注意:建议使用filezilla等工具进行登录,如果出现问题,有明确的问题提示。