vsftpd多个虚拟用户使用同一个目录的配置方法

发布时间:2020-12-08编辑:脚本学堂
本文介绍下,在vsftpd中配置多个虚拟用户,共同一个目录的方法,有需要的朋友参考下。

本节内容:
vsftpd多个虚拟用户共用目录。

vsftpd服务器环境:
内部管理员对FTP服务器共享目录有上传、下载、删除和修改产品信息的权限。
公司的合作伙伴能够使用FTP服务器进行上传和下载,但不可以删除数据。并且保证服务器的稳定性,进行适当优化设置~

需求分析:
根据企业的需求,对于不同用户进行不同的权限限制,FTP服务器需要实现用户的审核。考虑到服务器的安全性,关闭实体用户登录,使用虚拟帐号验证机制,并对不同虚拟
帐号设置不同的权限。同时为了保证服务器的性能,还需要根据用户的等级,限制客户端的连接数及下载速度。

解决方案:
首先用vi打开/etc/vsftpd/vsftpd.conf 这个配置文件,进入编辑模式,将anonymous_enable=YES 的YES改为NO(不让匿名用户访问ftp服务器)
1、建立虚拟用户文件
vi /etc/vsftpd/vsftpd_virtualuser.txt
 

复制代码 代码示例:
admin                                       #内部管理员账号
desheng_ADMINuser.com      #内部管理员账号密码
vip                                           #合作伙伴账号
desheng@jb200.com              #合作伙伴账号密码
 

建立完成之后保存退出。

2、生成虚拟用户数据库
要生成用户数据库,需要用到db_load命令,可以用rpm -qa | grep db4命令来查看是否有安装。
 

复制代码 代码示例:
db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db

3、配置PAM文件
若要服务器能够使用数据库文件,对客户端进行身份验证,就必须要修改vsftpd对应的PAM配置文件/etc/pam.d/vsftpd。用vi打开这个文件有如下内容:
 

复制代码 代码示例:
%PAM-1.0
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 system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
 

把这些默认配置全部用“#”号注释掉,然后加上我们需要用到的配置。
 

复制代码 代码示例:
#%PAM-1.0
#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 system-auth
#account include system-auth
#session include system-auth
#session required pam_loginuid.so
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser

4、创建虚拟帐号对应的系统用户
 

复制代码 代码示例:
useradd -d /data/share -s /sbin/nologin ftpadmin
useradd -d /data/share -s /sbin/nologin ftpvip

创建download用户的时候会提示一些警告信息,我们先不管。
为2个虚拟账号创建密码,必须要和vsftpd_virtualuser文件里面的密码相同。
 

复制代码 代码示例:
passwd ftpadmin    #密码 desheng_ADMINuser.com
passwd ftpvip        #密码 desheng@jb200.com

5、设置配置文件vsftpd.conf 在配置文件的最尾端加上如下配置:
 

复制代码 代码示例:
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/virtualuser_config     #指定用户配置文件存放路径
max_clients=300                           #设置FTP服务器最大接入客户端数为300个
max_per_ip=10                             #设置每个IP地址最大连接数为10个

6、建立虚拟用户配置文件设置多个虚拟帐号的不同权限
若使用一个配置文件无法实现此功能,需要为每个虚拟帐号建立独立的配置文件,并根据需要进行相应的设置。
为方便管理,在/etc/vsftpd下创建一个存放虚拟用户配置文件的文件夹virtualuser_config,然后进入这个文件夹创建admin和vip配置文件。
 

复制代码 代码示例:
mkdir virtualuser_config
cd virtualuser_config
touch admin
touch vip <--------配置admin文件-------->
#开启虚拟用户登录
guest_enable=YES
#设置admin对应的系统用户ftpadmin
guest_username=ftpadmin
#允许在文件系统写入数据的权限
write_enable=YES
#允许用户浏览整个服务器的文件系统(允许下载)
anon_world_readable_only=NO
#允许用户创建文件夹
anon_mkdir_write_enable=YES
#允许用户修改、删除数据的权限
anon_other_write_enable=YES
#开启用户上传功能
anon_upload_enable=YES
#限定传输速率为120KB/s
anon_max_rate=120000
 <--------配置vip文件-------->
#开启虚拟用户登录
guest_enable=YES
#设置vip对应的系统用户ftpvip
guest_username=ftpvip
#允许用户浏览整个服务器的文件系统(允许下载)
anon_world_readable_only=NO
#开启用户上传功能
anon_upload_enable=YES
#限定传输速率为50KB/s
anon_max_rate=50000
 

到这里,虚拟用户建立完成了。

修改/etc/passwd文件。
首先,来看下passwd文件的最后两行的内容:
 

复制代码 代码示例:
cat /etc/passwd
ftpadmin:x:500:500::/data/share:/sbin/nologin
ftpvip:x:501:501::/data/share:/sbin/nologin
 

ftpadmin为账户名,x为密码,500是uid,500是gid,/data/share根目录,/sbin/nologin是使用什么shell。

做如下的修改:
 

复制代码 代码示例:
ftpadmin:x:500:500::/data/share:/sbin/nologin
ftpvip:x:500:500::/data/share:/sbin/nologin

 把ftpvip的uid和gid都改为了ftpadmin的uid和gid
相当于ftpadmin这个用户有一个别名了,而且这个别名可以有它自己独立的权限(即只能下载、上传),如果不修改的话ftpvip用户就没有权限访问这个文件夹了。
为了能让用户看见/data/share文件夹里面的内容,需要修改一下这个目录的权限。
 

复制代码 代码示例:
chmod o+r /data/share

至此,vsftpd下多个虚拟用户共用一个目录就基本配置完成了。