系统:linuxhtml
vsftp版本:version 2.2.2 (yum install vsftpd)linux
FTP的登陆通常有三种方式,分别是:数据库
从安全性考虑,对于多用户登入、为了方便对用户权限进行管理,通常都是用虚拟用户形式。vim
Vsftp安装:浏览器
若是能够连外网,能够直接使用命令: yum install vsftpd (建议用这种方式,这个会自动把依赖搞好)安全
若是用tar包, tar –zxvf vsftpd-3.0.2.tar.gz服务器
make && make install 性能
ftp虚拟账号优化
公司为了宣传最新的产品信息,计划搭建FTP 服务器,为客户提供相关文档的下载。对全部互ui
联网开放共享目录,容许下载产品信息,禁止上传。公司的合做单位可以使用FTP 服务器进行上
传和下载,但不能够删除数据。须要保证服务器的稳定性并作优化。
建立ftp虚拟账号。容许客户使用ftp账号下载文件。 可是,大家本身的合做伙伴账号:vip账号能够上传一内部文件。
需考虑到服务器的安全性,因此关闭实体用户登陆,使用虚拟账号验证机制,并对不一样虚拟账号设置不
同的权限。
保证服务器的性能,还须要根据用户的等级,限制客户端的链接数及下载速度。
1、建立用户数据库
(1)建立用户文本文件
先创建用户文本文件vsftpd_virtualuser.txt,添加两个虚拟账号,公共账号ftp 及客户账号
vip
[root@xuegod63 vsftpd]# vim /etc/vsftpd/vsftpd_virtualuser.txt #写入如下内容。格式一行用户一行密码。
ftp #用户
123456 #密码
vip
123456
(2)生成数据库
保存虚拟账号和密码的文本文件没法被系统账号直接调用。咱们须要使用db_load 命令生成db
数据库文件
安装:
[root@xuegod63 vsftpd]# rpm -qf `which db_load `
db4-utils-4.7.25-16.el6.x86_64
# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db
选项-T容许应用程序可以将文本文件转译载入进数据库。
-t hash使用hash码加密
-f 指定包含用户名和密码文本文件。此文件格式要示:奇数行用户名、偶数行密码
[root@xuegod63 vsftpd]# rm -rf /etc/vsftpd/vsftpd_virtualuser.txt #为了安全,删除此文件。后期再也不使用此文件。
(3)修改数据库文件访问权限
[root@xuegod63 vsftpd]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
[root@xuegod63 vsftpd]# ll !$
ll /etc/vsftpd/vsftpd_virtualuser.db
-rw------- 1 root root 12288 Nov 10 21:16 /etc/vsftpd/vsftpd_virtualuser.db
2、配置PAM 文件
为了使服务器可以使用数据库文件,对客户端进行身份验证,须要调用系统的PAM 模块.
PAM概述:
PAM(Plugable Authentication Module)为可插拔认证模块,没必要从新安装应用系统,经过修
改指定的配置文件,调整对该程序的认证方式。PAM 模块配置文件路径为/etc/pam.d/目录,此
目录下保存着大量与认证有关的配置文件,并以服务名称命名。
vim /etc/pam.d/vsftpd
修改vsftpd 对应的PAM 配置文件/etc/pam.d/vsftpd。将默认配置使用“#”所有注释,下面添加两行,pam_userdb.so能够写成/lib64/security/pam_userdb.so的绝对路径。
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
3、建立虚拟账号对应的系统用户及ftp共享的目录
对于公共账号和客户账号,由于须要配置不一样的权限,因此能够将两个账号的目录进行隔离,控
制用户的文件访问。公共账号ftp 对应系统账号ftpuser,并指定其主目录为/var/ftp/share,
而客户账号vip 对应系统账号ftpvip,指定主目录为/var/ftp/vip。
[root@xuegod63 vsftpd]# useradd -d /var/ftp/share ftpuser
[root@xuegod63 vsftpd]# useradd -d /var/ftp/vip ftpvip
[root@xuegod63 vsftpd]# chmod -R 500 /var/ftp/share/ #修改权限
[root@xuegod63 vsftpd]# chmod -R 700 /var/ftp/vip/
chmod -R 500 /var/ftp/share/ :公共账号ftp 只容许下载,修改share 目录其余用户权限为
rx 可读可执行。
chmod -R 700 /var/ftp/vip/ :客户账号vip 容许上传和下载,因此对vip 目录权限设置为rwx,
可读可写可执行。
4、创建配置文件
一个配置文件没法实现此功能,须要为每一个虚拟账号创建独立的配置文件,并根据须要进行相应的设置。
(1)修改vsftpd.conf 主配置文件
[root@xuegod63 vsftpd]# cp vsftpd.conf.back vsftpd.conf
禁用匿名用户登陆并启用本地用户登陆设置
vim vsftpd.conf
改:
#anonymous_enable=YES
为:
#anonymous_enable=NO
local_enable=YES #确认此选项打开,容许本地用户登陆。 Uncomment :取消注释
chroot_local_user=YES #确认此选项打开。将全部本地用户限制在家目录中,NO 则不限制
pam_service_name=vsftpd #确认在文件的最后有选项。配置vsftpd 使用的PAM 模块为vsftpd
在此选项后面追加:
user_config_dir=/etc/vsftpd/vuserconfig:设置虚拟账号的主目录为 vuserconfig
max_clients=300:设置FTP 服务器最大接入客户端数为300 个
max_per_ip=10:设置每一个IP 地址最大链接数为10 个
(2)创建虚拟账号配置文件
在user_config_dir 指定路径下,创建与虚拟账号同名的配置文件并添加相应的配置字段
首先创建公共账号ftp 的配置文件
[root@xuegod63 ~]# grep vuserconfig /etc/vsftpd/vsftpd.conf #查看要建立的目录名
user_config_dir=/etc/vsftpd/vuserconfig
[root@xuegod63 ~]# mkdir /etc/vsftpd/vuserconfig
[root@xuegod63 ~]# touch /etc/vsftpd/vuserconfig/ftp
[root@xuegod63 ~]# touch /etc/vsftpd/vuserconfig/vip
配置虚拟账号配置文件,写入如下内容:
[root@xuegod63 ~]# vim /etc/vsftpd/vuserconfig/ftp
guest_enable=yes
guest_username=ftpuser
anon_world_readable_only=no
anon_max_rate=50000
解释:
guest_enable=yes:开启虚拟账号登陆
guest_username=ftpuser:设置ftp 对应的系统账号为ftpuser
anon_world_readable_only=no:容许匿名用户浏览器整个服务器的文件系统
anon_max_rate=50000:限定传输速率为50KB/s
注意:
vsftpd 对于文件传输速度限制并非绝对锁定在一个数值上哈,而是在80%~120%之间变化
好比设置100KB/s 则实际是速度在80KB/s~120KB/s 之间变化
下面是合做伙伴账号的配置文件vip
[root@xuegod63 ~]# vim /etc/vsftpd/vuserconfig/vip #写入如下内容
guest_enable=yes
guest_username=ftpvip
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_max_rate=100000
解释:
guest_enable=yes:开启虚拟账号登陆
guest_username=ftpvip:设置ftp 对应的系统账号为ftpvip
anon_world_readable_only=no:容许匿名用户浏览器整个服务器的文件系统
write_enable=yes:容许在文件系统写入权限
anon_mkdir_write_enable=yes:容许建立文件夹
anon_upload_enable=yes:开启匿名账号的上传功能
anon_max_rate=100000:限定传输速度为100KB/s
附:
若是想要将虚拟帐户限制在某个路径,须要在该帐户的文件中配置:
local_root=/home/lxxd/dssj/Shenzhen
容许帐户删除权限
anon_other_write_enable=YES
5、重启vsftpd 使配置生效
[root@xuegod63 ~]# service vsftpd restart