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

创建了两个用户 abc cba 密码分别为 123 321

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

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

命名为 vftpuser.db

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

解决方法:安装 rpm db4 db4-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 、文件挂载相当于镜像一份目录,会增加一倍的空间大小。。