vsftp linux

查看是否安装 rpm -qa|grep vsftpd

yum -y install vsftpd

/etc/vsftpd/vsftpd.conf    #主配置文件mysql

/usr/sbin/vsftpd              #主程序linux

/etc/vsftpd/ftpusers         #FTP用户黑名单nginx

/etc/vsftpd/user_list         #控制用户登陆web

/var/ftp                          #匿名用户主目录sql

 

anonymous_enable=YES               #是否启用匿名用户shell

anon_upload_enable=NO              #是否容许匿名用户上传文件数据库

anon_mkdir_write_enable=NO      #是否容许匿名用户建立文件夹安全

local_enable=YES       #是否容许本地用户服务器

write_enable=YES       #是否容许本地用户具备写权限网络

local_umask=022        #本地用户掩码   777-022  755默认权限

 

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

ftpd_banner=Welcome to blah FTP service. dongyanming

chroot_local_user=YES


chroot_list_enable=YES                           #锁定用户在本身的家目录
chroot_list_file=/etc/vsftpd/chroot_list     #此文件中的用户将启用chroot!

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

userlist_enable=YES     #NO时, user_list文件不生效

                                   #YES时             userlist_deny=YES时:  user_list 和 ftpusers  同为黑名单

            #          user_list文件中的用户不能登陆FTP,列表外的用户能够登陆。

            #                       userlist_deny=NO时:   user_list中用户能够登陆,列表外不能够登陆

userlist_deny=YES

#userlist_file=/etc/vsftpd/vsftpd.user_list

 ======================================================================

这里是用CentOS7.0来进行配置的,和其余不一样的版本号大同小异,仅仅是在此作一个记录,方便本身查看的同时也可以分享出来给有须要的人看看

一、配置防火墙,开启所需端口

7.0使用的防火墙是firewall,我改为用iptables做为防火墙

(1)关闭firewall:

systemctl stop firewalld.service

#中止firewall

systemctl disable firewalld.service

#禁止firewall开机启动

(2)安装iptables防火墙

yum install iptables-services

#安装

vi /etc/sysconfig/iptables

#编辑防火墙配置文件

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

:wq!

#保存退出

systemctl restart iptables.service

#最后重启防火墙使配置生效

systemctl enable iptables.service

#设置防火墙开机启动

说明:21端口是ftp服务端口;10060到10090是Vsftpd被动模式须要的端口,可自定义一段大于1024的tcp端口。

二、关闭selinux

vi /etc/selinux/config

#SELINUX=enforcing

#注释掉

#SELINUXTYPE=targeted

#注释掉

SELINUX=disabled

#增长

:wq! #保存退出

setenforce 0 #使配置当即生效

三、安装vsftp

yum install -y vsftpd

#安装vsftpd

yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI

#安装vsftpd虚拟用户配置依赖包

systemctl start vsftpd.service

#启动

systemctl enable vsftpd.service

#设置vsftpd开机启动

四、配置vsftp

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak

#备份默认配置文件

执行如下命令进行设置

sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'

echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300

\ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd

\nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES

\npasv_min_port=10060\npasv_max_port=10090

\naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf

五、创建虚拟用户文件

touch /etc/vsftpd/virtusers

编辑虚拟用户名单文件:(第一行帐号,第二行密码,注意:不能使用root作用户名,系统保留)

vi /etc/vsftpd/virtusers

web1

123456

web2

123456

web3

123456

:wq!

#保存退出

六、生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

chmod 600 /etc/vsftpd/virtusers.db

#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

七、在/etc/pam.d/vsftpd的文件头部加入如下信息(在后面加入无效)

修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak

vi /etc/pam.d/vsftpd

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

注意:若是系统为32位,上面改成lib,不然配置失败

八、新建系统用户vsftpd,用户目录为/home/wwwroot, 用户登陆终端设为/bin/false(即便之不能登陆系统)

useradd vsftpd -d /home/wwwroot -s /bin/false

chown vsftpd:vsftpd /home/wwwroot -R

chown www:www /home/wwwroot -R

#若是虚拟用户的宿主用户为www,须要这样设置。

九、创建虚拟用户我的Vsftp的配置文件

mkdir /etc/vsftpd/vconf

cd /etc/vsftpd/vconf

touch web1 web2 web3

#这里建立三个虚拟用户配置文件

mkdir -p /home/wwwroot/web1/http/

vi web1

#编辑用户web1配置文件,其余的跟这个配置文件相似

local_root=/home/wwwroot/web1/http/

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

十、最后重启vsftpd服务器

systemctl restart vsftpd.service

备注:

guest_username=vsftpd #指定虚拟用户的宿主用户(就是咱们前面新建的用户)

guest_username=www

#若是ftp目录是指向网站根目录,用来上传网站程序,能够指定虚拟用户的宿主用户为nginx运行帐户www,能够避免不少权限设置问题

 

 

 

========================================================================

vsftp配置详解  
这里是对vsftp配置文件的详细解释,主要参考了《RedHat8.0网络服务》一书中《使用vsftpd架设FTP服务器》一节的内容。
 
声明:以 下内容基于Smartraining工做室Osmond 编著的《RedHat 8.0 网络服务》一书中 《使用vsftpd架 设FTP服务器》 一节。为适应debian有大幅删改,原做者联系方法: osmond68@163.com

1、vsftpd简介
在稳定性方面:vsftpd能够在单机(非集群)上支持4000个以上的并发用户同时链接。据 ftp.redhat.com的数据,vsftpd能够支持15000个并发用户。  
除了安全、高速、稳定以外,vsftpd还具备以下的特性:

支持基于IP的虚拟FTP服务器  
支持虚拟用户 
支持PAM或xinetd / tcp_wrappers的认证方式 
支持两种运行方式:独立和Xinetd 
支持每一个虚拟用具备独立的配置 
支持带宽限制等
vsftpd的配置文件有三个,分别是:
/etc/vsftpd.conf  
/etc/vsftpd.ftpusers 
/etc/vsftpd.user_list
其中,/etc/vsftpd.conf是主配置文件。/etc/vsftpd.ftpusers中指定了哪些用户不能访问FTP服务器。 /etc/vsftpd.user_list中指定的用户默认状况下(即在/etc/vsftpd.conf中设置了userlist_deny= YES)不 能访问FTP服务 器,当在/etc/vsftpd.conf中设置了userlist_deny=NO时,仅仅容许/etc/vsftpd.user_list中指定的用 户访问FTP服务器。

2、vsftpd的默认主配置文件
vsftpd的默认主配置文件的内容以下:
//容许匿名登陆  
anonymous_enable=YES 
//容许本地用户登陆 
local_enable=YES 
//开放本地用户的写权限 
write_enable=YES 
//设置本地用户的文件生成掩码为022,默认值为077 
local_umask=022 
//当切换到目录时,显示该目录下的.message隐含文件的内容 
//这是因为默认状况下有message_file=.message的 设置 
dirmessage_enable=YES 
//激活上传和下载日志 
xferlog_enable=YES 
//启用FTP数据端口的链接请求 
connect_from_port_20=YES 
//使用标准的ftpd xferlog日志格式 
xferlog_std_format=YES 
//设置PAM认证服务的配置文件名称,该文件存放 在/etc/pam.d/目录下 
#pam_service_name=vsftpd

3、进一步配置vsftpd
1.容许匿名用户上传  
为了使匿名用户可以上传,须要在/etc/vsftpd中激活两个配置选项,分别是:
anon_upload_enable=YES  
//容许匿名用户上传 
anon_mkdir_write_enable=YES 
//开 启匿名用户的写和建立目录的权限 
若要以上两项设置生效,同时还要求:
write_enable=YES  
//匿名用户对文件系统的上传目录具备写权限
添加以下的配置语句:
anon_world_readable_only=NO  
//上面的配置语句用于放开匿名用户的浏览权限
建立匿名上传目录:
mkdir /var/ftp/incoming
修改上传目录的权限:
chmod o+w /var/ftp/incoming/
从新启动vsftpd.
2.启用ASCII传输方式  
默认状况下,vsftpd为了安全,禁止了ASCII传输方式。虽然在ftp客户软件中可使用asc命 令,可是传输文件时仍然使用二进制传输方式。能够分别启用上传和下载的ASCII传输方式,方法是编辑/etc/vsftpd配置文件,将以下两 行前的#去掉便可 启用:
#ascii_upload_enable=YES  
#ascii_download_enable=YES
3.设置链接服务器后的欢迎信息  
为了使用户链接服务器后显示信息,vsftpd提供了两个选项,分别是:
ftpd_banner  
banner_file
例如:能够设置以下的ftpd_banner选项的值:
ftpd_banner=Welcome to Smartraining FTP service.
即:用户链接服务器后显示信息“Welcome to Smartraining FTP service.”。  
也能够设置以下的banner_file选项的值:
banner_file=/var/vsftpd_banner_file
即:用户链接服务器后显示文件/var/vsftpd_banner_file中的信息。  
注意:(1)若是设置了ftpd_banner的值,将覆盖vsftpd默认的服务器链接后的信息。 
(2)若是ftpd_banner和banner_file同时设置,那么banner_file将覆盖ftpd_banner的设置。
4.配置基本的性能和安全选项  
//设置空闲的用户会话的中断时间 
例以下面的配置:
idle_session_timeout=600
将在用户会话空闲10分钟后被中断。
//设置空闲的数据链接的的中断时间  
例以下面的配置:
data_connection_timeout=120
将在数据链接空闲2分钟后被中断。
//设置客户端空闲时的自动中断和激活链接的时间  
例以下面的配置:
accept_timeout=60  
connect_timeout=60
将使客户端空闲1分钟后自动中断链接,并在中断1分钟后自动激活链接
//设置最大传输速率限制  
例以下面的配置:
local_max_rate=50000  
anon_max_rate=30000
将使本地用户的最大传输速率为50kbytes / sec,匿名用户的 传输速率为30 kbytes / sec。
//设置客户端链接时的端口范围  
例以下面的配置:
pasv_min_port=50000  
pasv_max_port=60000
将使客户端链接时的端口范围在50000和60000之间。这提升了系统的安全性。
//设置chroot  
在 默认配置中,本地用户能够切换到自家目录之外的目录进行浏览,并在权限许可的范围内进行下载和上传。这样的设置对于一个FTP服务器来讲是不安全的。若是但愿用户登陆后不能切换到自家目录之外的目录,则须要设置chroot选项,涉及以下选项:
chroot_local_user  
chroot_list_enable 
chroot_list_file
有两种设置chroot的方法:  
(1)设置对全部的本地用户执行chroot(即活动范围限制在自家目录)只要将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。  
注意 :上面所说起的文件/etc/vsftpd.chroot_list和下面将要说起的文件 /etc/vsftpd.user_list的格式要求均为每一个 用户名占一行。
5.配置基于本地用户的访问控制  
要配置基于本地用户的访问控制,能够经过修改vsftpd的主配置文件/etc/vsftpd.conf来进行, 有两种限制方法:
1)限制指定的本地用户不能访问,而其余本地用户可访问  
例以下面的设置:
userlist_enable= YES  
userlist_deny=YES 
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list中 指定的本地用户不能访问FTP服务器,而其余本地用户可访问FTP服务器。
2)限制指定的本地用户能够访问,而其余本地用户不可访问  
例以下面的设置:
userlist_enable= YES  
userlist_deny= NO 
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list中 指定的本地用户能够访问FTP服务器,而其余本地用户不能够访问FTP服务器。  
注意:对于userlist_enable能够这样理解: 
如 果userlist_enable=YES,表示vsftpd将从userlist_file选项给出的文件名中装载一个含有用户名的清单。而后再读取 userlist_deny的值来肯定vsftpd.user_list中的用户是否容许访问FTP服 务器。若是用户不能访问,将在输入用户口令前被拒绝。
6.配置基于主机的访问控制  
因为vsftpd有两种运行方式,即:由inetd启动和独立启动。 这两种运行方式的主机访问控制配置是不一样的,下面介绍的是由xinetd启动的vsftpd的主机访问控制的配置。显然,要配置这种主机访问控制,须要修 改配置文件/etc/xinetd.d/vsftpd。
1)只容许指定的主机访问  
在配置文件/etc/xinetd.d/vsftpd的{}中添加以下的配置语句:
only_from <主机表>
例如:only_from 192.168.1.0  
表示只容许192.168.1.0网段内的主机访问。
2)指定不能访问的主机  
在配置文件/etc/xinetd.d/vsftpd的{}中添加以下的配置语句:
no_access <主机表>
例如:no_access 192.168.1.0  
表示只有192.168.1.0网段内的主机不能访问。
关于主机表的书写形式,见下表:  
访问控制表时主机表的书写语法 
选项值 含义 
Hostname 可解析的主机名 
IP Address 十进制表示的IP地址 
Net_name 在/etc/networks中定义的网络名 
x.x.x.0 x.x.0.0 x.0.0.0 0.0.0.0 0做为通配符看待。如:191.72.61.0匹配从191.72.61.0到191.72.61.255的全部IP地址。0.0.0.0表示匹配全部的IP地址 
x.x.x.{a,b,.} x.x.{a,b,.} x.{a,b,.} 指定主机表。如:191.72.61.{1,3,123}表示包含地址191.72.61.一、191.72.61.2和191.72.61.123 
IPAddress/netmask 定义要匹配的网络或子网。如:172.19.16/20匹配从172.19.16.0到172.19.31.255

3)配置每一个客户机的最大连结数  
//在置文件/etc/xinetd.d/vsftpd的{}中添加以下的配置语句:
per_source = 数值
例如:per_source = 5表示每一个客户机的最大链接数为5。
4)配置服务器总的并发链接数  
在配置文件/etc/xinetd.d/vsftpd的{}中添加以下的配置语句:
instances = 数值
例如:instances = 200 表示FTP服务器总共支持的最高链接数为200。
5)配置访问时间限制
在配置文件/etc/xinetd.d/vsftpd的{}中添加以下的配置语句:
access_time = hour:min-hour:min
例如:access_time = 18:00-23:59 表示只有在下午6点到午夜0点以前才能访问此FTP服务器;  
又如:access_time = 8:30-11:30 13:00-18:00 表示只有在上午8点半到11点半和下午1点到下午6点才能访问此FTP服务器。
6)指定链接失败时显示的信息  
在配置文件/etc/xinetd.d/vsftpd的 {}中添加以下的配置语句:
banner_fail =文件名
例如:banner_fail = /etc/vsftpd.busy_banner 表示当链接失败时显示文件/etc/vsftpd.busy_banner中的内容。  
能够用下面的命令生成文件/etc/vsftpd.busy_banner:
echo "421 Server busy, please try later."> /etc/vsftpd.busy_banner

下面内容是基于xinetd的,由于debian用的是inetd,因此懒得修改了:(
4、使用vsftpd配置高安全级别的匿名服务器  
高安全级别匿名FTP服务器的配置要求:
仅仅容许匿名用户访问  
不容许本地用户访问 
关闭全部写权限 
不容许匿名用户上传 
设置客户端链接时的端口范围 
设置匿名用户的最大传输速率限制 
设置空闲的数据链接的中断时间 
设置客户端空闲时的自动中断和激活链接的时间 
配置每一个主机的最大链接数 
配置总的并发链接数 
配置禁止访问的主机 
配置安全日志
vsftpd推荐使用这种近乎于偏执的安全 配置,若是用户只想架设匿名FTP下载服务器,出于安全性的考虑,请参考使用这种谨慎配置。
这种安全匿名服务器的配置,能够从vsftpd的源代码树中得到,具体操做步骤以下:
进入vsftp源代码树的EXAMPLE/INTERNET_SITE目录复制默认配置文件:  
# cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/INTERNET_SITE 
# cp vsftpd.conf /etc 
# cp vsftpd.xinetd /etc/xinetd.d/vsftpd 
//修改主配置文件/etc/vsftpd.conf,添加一 个链接后的信息 
# cat >>/etc/vsftpd.conf < > ftpd_banner=This FTP server is anonymous only. 
> ! 
//显示主配置文件的内容以下: 
# cat /etc/vsftpd.conf 
# Access rights 
anonymous_enable=YES 
local_enable=NO 
write_enable=NO 
anon_upload_enable=NO 
anon_mkdir_write_enable=NO 
anon_other_write_enable=NO 
# Security 
anon_world_readable_only=YES 
connect_from_port_20=YES 
hide_ids=YES 
pasv_min_port=50000 
pasv_max_port=60000 
# Features 
xferlog_enable=YES 
ls_recurse_enable=NO 
ascii_download_enable=NO 
async_abor_enable=YES 
# Performance 
one_process_model=YES 
idle_session_timeout=120 
data_connection_timeout=300 
accept_timeout=60 
connect_timeout=60 
anon_max_rate=50000 
ftpd_banner=This FTP server is anonymous only.
//接下来查看/etc/xinetd.d/vsftpd  
# cat /etc/xinetd.d/vsftpd
service ftp  
{ 
disable = no 
socket_type = stream 
wait = no 
user = root 
server = /usr/local/sbin/vsftpd 
per_source = 5 
instances = 200 
no_access = 192.168.1.3 
banner_fail = /etc/vsftpd.busy_banner 
log_on_success += PID HOST DURATION 
log_on_failure += HOST 
} 
//从新启动xinetd
# service xinetd restart
//配置结束

5、配置基于IP的虚拟FTP服务器
vsftpd支持基于IP的虚拟FTP服务器配置。其主要配置步骤为:
配置虚拟IP地址  
创建虚拟FTP的服务器目录并设置适当的权限 
创建虚拟FTP的服务器的xinetd配置文件 
创建虚拟FTP的服务器的主配置文件
注意:虚拟FTP的服务器要有单独的xinetd配置文件和单独的主配置文件, 这两个文件不能与原配置文件重名。
 
 
具体操做过程以下:
 
 
1.查看本机现有的IP地址

# ifconfig |grep -1 eth0

eth0 Link encap:Ethernet HWaddr 00:50:56:C7:22:DF

inet addr:192.168.1.222 Bcast:192.168.1.255 Mask:255.255.255.0

//能够看出本机的第一个网络接口eth0的IP为192.168.1.222

2.配置一个虚拟网络接口eth0:1

# ifconfig eth0:1 192.168.1.234 up

# ifconfig |grep -1 eth0:1

eth0:1 Link encap:Ethernet HWaddr 00:50:56:C7:22:DF

inet addr:192.168.1.234 Bcast:192.168.1.255 Mask:255.255.255.0

//能够看出本机的虚拟网络接口eth0:1的IP为192.168.1.234
 
 
3.创建虚拟FTP的服务器目录

# mkdir -p /var/ftp2/pub

//确保目录具备以下的权限

# ll -d /var/ftp2

drwxr-xr-x 3 root root 4096 3月12 03:00 /var/ftp2

# ll -d /var/ftp2/pub

drwxr-xr-x 2 root root 4096 3月12 03:00 /var/ftp2/pub
 
 
4.建立此虚拟服务器的匿名用户所映射的本地用户ftp2

# useradd -d /var/ftp2 -M ftp2
 
 
5.更改现有的配置文件/etc/xinetd.d/vsftpd

# vi /etc/xinetd.d/vsftpd

// 在此文件的{}中添加以下的配置语句:

// bind = 192.168.1.222

// 将原FTP服务绑定到eth0接口,以后保存退出vi
 
 
6.生成并修改新的虚拟FTP服务器的配置文件/etc/xinetd.d/vsftpd2

# cp /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd2

//更改新的配置文件/etc/xinetd.d/vsftpd2

# vi /etc/xinetd.d/vsftpd2

//在此文件的{}中添加以下的配置语句:

bind = 192.168.1.234

//将虚拟FTP服务绑定到eth0:1接口

//另外添加以下的配置语句:

server_args = /etc/vsftpd_site2.conf

//使vsftpd读取虚拟FTP服务器的主配置文件,以后保存退出vi
 
 
7.生成并修改虚拟FTP服务器的主配置文件/etc/vsftpd_site2.conf

# cp /etc/vsftpd.conf /etc/vsftpd_site2.conf

//修改新的主配置文件

# vi /etc/vsftpd_site2.conf

//将以下的配置语句行:

ftpd_banner=This FTP server is anonymous only.

//修改成:

ftpd_banner=This is the alternative FTP site.

//添加以下的配置语句:

ftp_username=ftp2

//使此虚拟服务器的匿名用户映射到本地用户ftp2

//这样匿名用户登陆后才能进入本地用户ftp2的/var/ftp2目录

//修改后,保存退出vi

#

8.从新启动xinetd

# service xinetd restart

#

//配置结束
 
 
6、配置独立运行的vsftpd
 
 
显然,这种启动方式将再也不须要/etc/xinetd.d下面的配置文件。要配置独立运行的vsftpd很简单,只须要在前面的
 
主配置文件的基础上添加以下的配置便可:

设置listen=YES

指明vsftpd以独立运行方式启动。

为了实现访问控制,须要添加以下的配置项:

设置max_clients=200

指明服务器总的并发链接数

设置max_per_ip=4

指明每一个客户机的最大链接数。
 
 
具体操做步骤以下:
 
 
//复制一个新的主配置文件

# cp /etc/vsftpd.conf /etc/vsftpd.standalone.conf

//编辑新的配置文件/etc/vsftpd.standalone.conf

# vi /etc/vsftpd.standalone.conf

//在文件开始处插入下面的行

listen=YES

max_clients=200

max_per_ip=4

//并将下面的配置语句

ftpd_banner=This FTP server is anonymous only.

//改成:

ftpd_banner=This FTP server is anonymous only, and vsftpd in "standalone" mode.

//(注意:要写在一行里)

//退出vi

//将由xinetd启动的配置停用

# vi /etc/xinetd.d/vsftpd

//将disable = no

//设为disable = yes

//保存后退出vi
 
 
# vi /etc/xinetd.d/vsftpd2

//将disable = no

//设为disable = yes

//保存后退出vi

//从新启动xinetd

# service xinetd restart

//启动独立运行的vsftpd守护进程

# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.conf &
 
 
 

7、配置独立运行的vsftpd在非标准端口下提供服务

为了配置独立运行的vsftpd在非标准端口下提供服务须要添加listen_port配置语句。具体操做步骤以下:
 
 
//修改独立运行的主配置文件,添加listen_port配置语句:

# echo listen_port=10021>> /etc/vsftpd.standalone.conf

//从新启动vsftpd守护进程

# killall vsftpd

# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.conf &
 
 
独立启动和xinetd启动的vsftpd服务器配置和启动的比较
 
 
 
 
独立启动
 
xinetd启动
 
 
所需的配置文件
 
主配置文件
 
主配置文件
 
xinetd配置文件
 
 
配置
 
listen
 
 
 
 
 
 
listen_address
 
 
 
bind
 
 
listen_port
 
 
 
 
 
 
max_per_ip
 
 
 
per_source
 
 
max_clients
 
 
 
instances
 
 
 
 
 
 
only_from和no_access
 
 
 
 
 
 
access_time
 
 
 
 
 
 
server_args
 
 
启动
 
将配置文件做为参数运行
 
启动xinetd
 
 
 
 
 
 
8、用vsftpd配置独立运行的虚拟FTP服务器

为了配置独立运行的虚拟FTP服务器须要使用listen_address配置语句。以上面的配置为基础进行下面的配置,具
 
体步骤以下:
 
 
//修改原独立运 行的服务器配置文件

# vi /etc/vsftpd.standalone.conf

//添加listen_address=192.168.1.222的配置行

//将原FTP服务绑定到eth0接口。以后用:wq退出vi
 
 
//由xinetd运行的虚拟服务器的配置文件创 建一个新的配置文件

# cp /etc/vsftpd_site2.conf /etc/vsftpd.standalone2.conf

//修改新的配置文件

# vi /etc/vsftpd.standalone2.conf

//在文件开始处插入下面的行

listen=YES

listen_address=192.168.1.234 将虚拟服务器绑定到eth0:1接口

max_clients=200

max_per_ip=4

//并将下面的配置语句

ftpd_banner=This is the alternative FTP site.

//改成:

ftpd_banner=This is the alternative FTP site, and vsftpd in "standalone" mode.

//用:wq退出vi
 
 
//让原FTP服务器从新读取配置文件

/usr/local/sbin/vsftpd /etc/vsftpd.standalone.conf

# kill -HUP `pidof vsftpd`

//启动新的虚拟FTP服务器

# /usr/local/sbin/vsftpd /etc/vsftpd.standalone2.conf &
 
 
 

9、配置虚拟用户的FTP服务器
 
 
该部分讲述虚拟用户(virtual users)的FTP服务器的配置。虚拟用户只能访问为其 提供的FTP服 务,而不能像本地
 
的实用户那样登陆系统访问系统的其余资源。若要某用户对FTP服务器站内具备写权限但不容许访问系统的其余
 
资源,则该用户应该使用虚拟用户才能提升系统的安全性。
 
 
传统的FTP服务器采用以下的方法实现虚拟用户:

在本地创建普通用户帐号并设置密码

将其登陆shell设为不可登陆

由passwd/shadow口令系统进行认证

vsftpd的虚拟用户 采用了不与系统帐户口令文件合二为一的方法,也就是说,为了认证这些虚拟用户vsftpd使用单
 
独的口令库文件(pam_userdb),由可插拔认证模块(PAM)进行认证。使用这种方式更加安全,而且配置更灵
 
活。
 
比较vsftpd中的三类用户:

vsftp中有三类用户,即:本地用户、虚拟用户和匿名用 户。下面将这三类用户进行比较,见下表。
 
 
比较vsftpd中的三类用户
 
 
 
 
 
本地用户
 
虚拟用户
 
匿名用户
 
 
用户名
 
本地用户名
 
虚拟用户口令库中指定的用户名
 
Anonymous或ftp
 
 
登陆用户名
 
本地用户名
 
虚拟用户口令库中全部用户名
 
Anonymous或ftp
 
 
用户口令
 
本地用户的口令
 
虚拟用户口令库中指定的口令
 
Email地址
 
 
口令的认证方式
 
由基于passwd/shadow的口令系统认证
 
DB口令库由PAM进行认证
 
由vsftpd认证
 
 
登陆映射的本地用户名
 
本地用户名
 
guest_username所指定的本地 用户,默认为空
 
ftp_username所指定的本地用 户,默认为ftp
 
 
登陆后进入
 
的目录
 
本地用户的
 
自家目录
 
guest_username所指定的本地 用户的自家目录
 
ftp_username所指定的本地用户 的自家目录,默认为/var/ftp
 
 
对登陆后的目录是否可浏览
 
能够
 
anon_world_readable_only=NO时能够
 
anon_world_readable_only=NO时能够
 
 
对登陆后的目录是否可上传
 
write_enable=YES时能够
 
write_enable=YES,同时anon_upload_enable=YES时能够
 
write_enable=YES,同时anon_upload_enable=YES时能够
 
 
对登陆后的目录是否可建立目录
 
write_enable=YES时能够
 
write_enable=YES,同时anon_mkdir_write_enable=YES时能够
 
write_enable=YES,同时anon_mkdir_write_enable=YES时能够
 
 
对登陆后的目录是否可更名和删除
 
write_enable=YES时能够
 
write_enable=YES,同时anon_other_write_enable=YES时能够
 
write_enable=YES,同anon_other_write_enable=
 
YES时能够
 
 
是否有用户
 
自家目录
 
 
 
是否能切换到登陆目录之外的目录  
chroot_local_user=NO时 能,其值为YES时不能
不能,即设置chroot_local_user=YES  
不能激活此类用户的命令 
local_enable=YES 
guest_enable=YES 
anonymous_enable=YES
为了配置虚拟用户的FTP服务器,其主要配置步骤为:
生成虚拟用户口令库文件
配置生成vsftpd的认证文件
创建虚拟用户所要访问的目录并设置相应权限  
创建配置文件
下面以独立运行的vsftpd为例进行配置,具体的操做过程 以下:  
//生成虚拟用户口令库文件,以mysql数据库为例: 
//修改口令库 文件的权限 
# chmod 600 /etc/vsftpd_login.db
//编辑生成虚拟用户所 需的PAM配置文件:  
# vi /etc/pam.d/ftp 
//插入以下两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login 
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 
//保存后退出vi
//用户也能够用下面的命令从源代码分发包中复制此文件  
// cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/ 
// cp VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp 
//创建虚拟用户所要访问的目录并设置仅virtual用户访问的权限
# useradd -d /home/ftpsite virtual  
# chmod 700 /home/ftpsite/
//生成主配置文件  
# vi /etc/vsftpd.standalone.vu.conf 
//在此文件中插入下面的配置语句 
listen=YES 
anonymous_enable=NO 
local_enable=YES 
write_enable=NO 
anon_upload_enable=NO 
anon_mkdir_write_enable=NO
anon_other_write_enable=NO 
chroot_local_user=YES 
guest_enable=YES 启用虚拟用户 
guest_username=virtual 将虚拟用户映射为本地virtual用户
//这样虚拟用户登陆后才能进入本地用户virtual的目录/home/ftpsite/  
pasv_min_port=30000 
pasv_max_port=30999 
ftpd_banner=This FTP server is virtual user only. 
pam_service_name=ftp 指定PAM配置文件为ftp.vu 
//插入完毕,保存退出。
//下面先关闭原来的服务,然后启动新的服务  
# killall vsftpd 
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.vu.conf & 
//配置结束
注意:配置文件中anon_world_readable_only的默认值为YES。这样的设置是最安全的,是建议的配置,即虚拟用户不能浏览目录中的内容。若要虚拟用户口令库中的用户都能看到登陆目录的内容,应该在配置文件  
/etc/vsftpd.standalone.vu.conf中添加配置语句anon_world_readable_only=NO 
配置好后,新的口令库中的全部用户就均可以登陆此FTP服务器了。
对不一样的虚拟用户进行不一样权限的配置
对于配置本地组中各用户访问FTP服务器的不一样权限,可将某文件归属于但愿 具备读写(包括列文件目录、上 传、下载)权限的用户,而对该组中其余用户则可设置对该文件只具备只读(包括列文件目录、下载)权限。 这是借助在本地文件系 统上分配权限来实现的,可是若要让两个用户同时都具备读写权限,则用这种方法就不能实现了。
vsftpd支持对不一样的虚拟用户进行不一样配置的方式。例如,vsftpd能够实现以下的配置:  
虚拟用户valid具备浏览目录、上传和下载的权限 
虚拟用户dede具备浏览目录、上传、下载、文件改 名和删除的权限 
虚拟用户tom和fred具备浏览目录和下载的权限

下面以简单的虚拟用户FTP服务器的配置为基础进行说明,具体配置步骤为:
//首先编辑配置文件/etc/vsftpd.standalone.vu.conf  
//激活对不一样的虚拟用户进行不一样权限配置的配置语句
# vi /etc/vsftpd.standalone.vu.conf
//在文件中添加以下的配置行  
user_config_dir=/etc/vsftpd_user_conf
//指定不一样虚拟用户配置文件的存放路径  
//添加后保存退出vi 
//接下来建立此目录 
# mkdir /etc/vsftpd_user_conf
//下面分别建立虚拟用户tom和fred的配置文件
//开放tom和fred的读权限  
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/tom 
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/fred
//下面分别建立虚拟用户valid和dede的配置文件  
//开放valid和dede的读写权限
# cat > anon_world_readable_only=NO  
> write_enable=YES 
> anon_upload_enable=YES 
> !
# cp /etc/vsftpd_user_conf/valid /etc/vsftpd_user_conf/dede
# echo “anon_other_write_enable=YES”>>/etc/vsftpd_user_conf/dede
//通过以上的设置虚拟用户valid能浏览、下载和上传
//而虚拟用户dede除此以外还具备文件更名和删除文件 的权限
//下面让守护进程vsftpd从新读取配置文件/etc/vsftpd.standalone.vu.conf

/usr/local/sbin/vsftpd /etc/vsftpd.standalone.vu.conf  
# kill -HUP `pidof vsftpd` 
#
//配置结束,测试略。
重点:当一个虚拟用户登陆FTP服务器时,vsftpd的守护进程首先查看主配置文件 的权限配置,而后再用此用户
单独的配置文件中的配置覆盖主配置文件中的配置。vsftpd的这种配置机制,相似于Apache配置中的
httpd.conf和.htaccess。只不过前者是针对不一样虚拟用户的,然后者是针对不一样目录的。所以在对不一样虚
拟用户进行配置时要注意:
(1)在主配置文件中设置最低的权限,这些设 置对虚拟用户口令库中的全部用户均生效;
(2)分别在不一样的虚拟用户的配置文件中开放此虚拟用户应该具备的权限。
注意:上面讲述的虚拟用户FTP服务器的配置是基于独立运行的vsftpd守护进程讲解的。也能够配置为基于
xinetd启动的FTP服务器,同时也能够将虚拟用户的FTP服务器配置为基于IP的虚拟FTP服务器
相关文章
相关标签/搜索