ftp 实用户和虚拟用户共存设置

老习惯先吐槽,总共花费接近6个小时,遇到各种奇葩问题,决定把问题记录下来,作为知识储备~

调整前背景:  

  vsftp已有全部为实体用户,不同的用户对不同的目录有权限,但现在由于需求,后续接近上百的用户要使用不同账号,且不同账号对不同目录有不同权限,这种需求创建实体用户是不现实的,且以后做ftp迁移也极为不方便。

操作步骤:

1、修改配置文件 /etc/vsftpd/vsftpd.conf

  user_config_dir=/etc/vsftpd/userconfig (该配置已存在,用于控制用户的不同操作目录)

  guest_enable=YES 开启虚拟用户

  guest_username=ftpvirtual 虚拟用户映射到的实用户ftpvirtual ,即系统用户,用户名称任意

  pam_service_name=vsftpd  pam验证文件,名称任意,但是要和/etc/pam.d/下文件名保持一致,我这边均是vsftpd ,默认。

2、创建被映射的系统用户

#useradd -s /sbin/nologin -d /data/virtual ftpvirtual

#mkdir -p /data/virtual

#chown -R ftpvirtual: /data/virtual/

3、创建虚拟用户 vtest1 vtest2

a、创建虚拟用户文件virtual

#touch virtual 

#vim virtual   奇数行是账户名,偶数行是账户密码,!!!用户名和用户密码前后一定不要留空格,我就吃了大亏,好久才查到原因!

添加  vtest1

    vtest1pass

   vtest2

   vtest2pass  

b、创建虚拟用户文件库 

#db_load -T -t hash -f /etc/vsftpd/virtual /etc/vsftpd/virtual.db  有的系统应该是db4_load ,还没有细追究这些问题,后续补充

此时,可以看到生成了用户db文件virtual.db,这时virtual 文件可以删除,但是保留和可以方便记忆用户名和密码~

4、修改pam验证模块

#vim /etc/pam.d/vsftp 这时可以看到文件中已包含一些数据,这些数据为实用户验证模块,一定要保留,删除后就实用户就会登陆失败!!

在文件开通添加

auth sufficient pam_userdb.so db=/etc/vsftpd/virtual 
account sufficient pam_userdb.so db=/etc/vsftpd/virtual 添加完之后应该是如下图所示:virtual是指步骤3中生成的db文件,但是这里不能加db后缀,会出问题(其中我机器上的用户db文件和文章略有不同virtual_list)

图片中可以看到有两对注释掉的auth account ,据验证都有问题,细节尚未追究,后续补充,貌似require 不能验证通过实用户,后面一对说明auth 和account 对必须要放在原实体验证之前。

5、修改配置文件chroot_list user_list配置文件

#vi chroot_root

添加 ftpvirtual   添加需用户对应的实用户,原因后续补充

#vim userconfig 

添加vtest1   若不添加,将报错530  premisson denied

  vtest2

6、配置虚用户的控制目录,以及权限

#mkdir -p /etc/vsftpd/userconfig/vtest1 

#mkdir -p /etc/vsftpd/userconfig/vtest2 文件名一定和虚拟用户的名称完全一样

#vim vtest1

添加local_root=/data/virtual/vtest1    vtest1只对vtest1 目录有操作权限,下面各权限若不赋予,
write_enable=yes                            该虚拟用户将不能上传和下载文件,问题也找了半天
download_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=no

vtest2文件类似

7、 修改虚拟用户操作目录权限

虚拟目录权限全部赋给映射的实用户ftpvirtual 即可

#chown -R ftpvirtual: /data/virtual

8、验证登陆成功

原文地址:https://www.cnblogs.com/hello-kelly/p/4693448.html