Vsftpd虚拟账户配置

 

一、vsftpd安装

采用rpm安装。

rpm –ql vsftpd命令查看安装路径。

默认安装路径为:/etc/vsftpd/

二、配置虚拟用户和权限

这里采用脚本控制虚拟用户的方式管理ftp虚拟用户。

虚拟用户的可以理解为:所有ftp用户使用的并不是系统用户,而是添加的虚拟账户,这些账户映射到系统中的一个账户。此账户设置为不允许登录。可以根据需要单独配置所有虚拟账户的各种权限。

1.添加用户

Useradd –s /sbin/nologin vftp
mkdir /ftproot     //创建ftp根目录为/ftproot

2.创建用户和密码文件

创建用户和密码文件,然后用db4工具把用户名和密码转换成系统识别的格式。

vi vftpuser.txt //新建文件写入用户名和密码

注:第一行写用户名,第二行写密码,以此类推,要创建多少虚拟用户,依次写下去。

例如:

abc

123

cba

321

创建了两个用户abccba密码分别为123321

接着使用工具将其转换,并且存放在适当的位置,如:、

db_load -T -t hash -f vftpuser.txt /etc/vsftpd/vftpuser.db //将密码文件保存到/etc/vsftpd/

命名为vftpuser.db

注意:此时如果没有安装db4工具会出现错误。

解决方法:安装rpmdb4db4-util

3.配置PAM验证文件

修改 /etc/pam.d/vsftpd

在下面添加如下两行,其他全部注释掉。

auth    required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vftpuser

account required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vftpuser

 

注意这里是vftpuser,不是vftpuser.db

4.新建针对虚拟用户的配置文件

mkdir –p /etc/vsftpd/vsftpd_user_conf

vi /etc/vsftpd/vsftpd_user_conf/abc //创建名为abc的控制文件。

 

local_root=/ftproot/        //abc这个用户登陆上来的家目录是/ftproot
anon_upload_enable=YES       //允许上传

anon_mkdir_write_enable=YES   //允许创建目录

anon_other_write_enable=YES    //允许删除文件和目录

 

同样创建cba的配置文件。

5.修改vsftpd.conf

启用和添加修改如下选项:

pam_service_name=vsftpd //vsftpd里的脚本做pam验证

tcp_wrappers=YES //开启ip控制

chroot_local_user=YES //锁定用户根目录

guest_enable=YES  //开启虚拟账户

guest_username=vftp //虚拟账户使用vftp(刚才建的系统账户)映射

user_config_dir=etc/vsftpd/vsftp_user_conf  //虚拟账户的控制文件路径

6.修改ftproot的权限

Chown –R vftp.vftp /ftproot

Chmod –R 700 /ftproot

重启vsftpd服务即可。


 

三、特殊需求

一个ftp用户只有一个根目录,可以限制他访问根目录以下的目录,但当需要他同时能访问其他路径的目录时,vsftpd便没有提供这个功能。

这里采用mount --bind这个命令来实现这个需求。

mount --bind 源路径 新路径(目的路径)

根据需求设置如下:

home里新建ftt目录,在里面新建文件夹用来挂载其他目录的文件夹。

[root@RedDNS ftp]# mkdir -p nba

[root@RedDNS ftp]# mkdir -p cba

 

[root@RedDNS ftp]# mount --bind /home/123 nba //123目录挂载在home/ftp

 

[root@RedDNS ftp]#mount –bind /home/abc cba //abc目录挂载在home/ftp

这时,用户ftp目录下就有nba和cba两个文件夹,里面分别“通往”各自的目录。

注意:1、挂载时权限是集成被挂载的文件夹的。
            2、文件挂载相当于镜像一份目录,会增加一倍的空间大小。。