vsftpd高级用法之虚拟用户配置


vsftpd高级用法之虚拟用户配置

需求:需要2个ftp用户访问不同的根目录,其他的访问ftp默认目录。

2个用户为:test1、test2

首先安装vsftpd,然后配置文件如下:

vsftpd.conf:

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES

ftpd_banner=”welcome test Ftp Server.”

pam_service_name=vsftpd #设置PAM使用的名称,该名称就是/etc/pam.d/目录下vsfptd文件的文件名

userlist_enable=YES

tcp_wrappers=YES

local_root=/home/www/test/upload/

virtual_use_local_privs=YES

guest_enable=YES #表示是否开启vsftpd虚拟用户的功能,yes表示开启,no表示不开启。

guest_username=www

user_config_dir=/etc/vsftpd/vuser_conf #指定每个虚拟用户账号配置目录

pasv_enable=YES

pasv_min_port=40000

pasv_max_port=40080

pasv_promiscuous=YES

创建虚拟用户配置目录:

mkdir /etc/vsftpd/vuser_conf

创建虚拟用户文件,把这些用户名和密码存放在一个文件中。该文件内容格式是:用户名占用一行,密码占一行。如下:

[root@localhost vsftpd]# cat /etc/vsftpd/login.txt
test1
testone
test2
testtwo

这个文件的虚拟用户和密码的文本文件无法被系统帐号直接调用,所以我们需要使用db_load命令生成db口令数据库文件,命令如下:

db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

为了使服务器能够使用上述生成的数据库文件,对客户端进行身份验证,需要调用系统的PAM模块。PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。

我们现在切换到/etc/pam.d/ 目录下,编辑vsfptd文件。如下图:

[

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login

auth是指对用户的用户名口令进行验证。

accout是指对用户的帐户有哪些权限哪些限制进行验证。

再后面的/lib64/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。

注意该函数会根据系统的位数而所在位置不同。

如果是32bit系统,该文件所在位置是/lib/security/pam_userdb.so

如果是64bit系统,该文件所在位置是/lib64/security/pam_userdb.so

最后db=/etc/vsftpd/login则指定了验证库函数将到这个指定的数据库中调用数据进行验证。其实该文件指的是/etc/vsftpd/login.db文件。

注意:**db=/etc/vsftpd/login**格式是这样的,去掉.db后缀。

PAM配置完毕后,我们现在开始创建虚拟用户与系统用户对应的文件。切换到/etc/vsftpd/vuser_conf目录下,并创建test1文件。注意该文件名称一定要与login.txt中的虚拟用户要对应。比如现在login.txt文件有test1用户,那么在 /etc/vsftpd/vuser_conf目录下创建一个文件名为test1的文件。

[root@localhost vsftpd]# cat /etc/vsftpd/vuser_conf/test1

local_root=/home/www/test1/upload/ #表示使用本地用户登录到ftp时的默认目录
virtual_use_local_privs=YES #虚拟用户和本地用户有相同的权限
guest_username=www #表示的是设置FTP对应的系统用户为www
write_enable=YES
anon_umask=022

以上配置完毕后,启动vsftpd服务完成。

测试test1、test2 ftp用户均可以正常登录,对应的根目录不同,均有创建和删除、上传权限。

ftp虚拟用户,故不需要事先创建系统用户。

关于chroot:

\1. chroot_local_user

\2. chroot_list_enable

\3. chroot_list_file

可以通过如下两种方法来设置chroot,从而杜绝上述不安全的情况发生:

(1)设置所有的本地用户执行chroot,只要将/etc/vsftpd/vsftpd.con文件中的chroot_local_ user值置为YES,即 chroot_local_user=YES。

(2)设置指定的用户执行chroot,按照如下方法进行设置:

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

设置后,只有/etc/vsftpd.chroot_list文件中指定的用户才能够执行chroot命令。


文章作者: ghf
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ghf !
评论
 上一篇
2009⇆2019:六组数据里的中国十年 2009⇆2019:六组数据里的中国十年
2009⇆2019:六组数据里的中国十年 来源:微信公众号吴晓波频道 你的2019年余额仅剩6天 在即将迈向2020年的这个节点 我们不妨回顾一下 过去10年的变化 当2009年第一缕阳光洒下的时候 马云还是阿里巴巴CEO 彼时茅台的股价也
2019-12-26
下一篇 
CentOS7安装配置vsftp搭建FTP CentOS7安装配置vsftp搭建FTP
CentOS7安装配置vsftp搭建FTP安装在安装前查看是否已安装vsftpd # 查看是否已安装 方法一 [root@localhost ~]# rpm -q vsftpd vsftpd-3.0.2-21.el7.x86_64 # 查
2019-12-26