• 摘要:vsftpd.conf是Linux vsFTPD服务器的配置文件,此文件一般是/etc/vsftpd.conf或 /etc/vsftpd/vsftpd.conf,vsftpd.conf配置文件就是Linux vsFTPD服务器的全局控制文件,此配置文件中,每行应该算做一 个规则。配置完后需要重启才有效。

 

Linux vsFTPD是一款小巧易用FTP服务器程序,是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用。

Linux vsFTPD的安装

在最新的各大发行版中的安装盘中都有Linux vsFTPD的软件包,用相应发行版提供的软件包管理工具就能安装。当然也可以到各大发行版的FTP镜像中找到Linux vsFTPD的软件包,用软件包的管理工具在线安装。推荐用发行版提供的软件来安装,不推荐自己编译源码包的安装方式。Fedora 或Redhat 系统,可以用下面的命令在线安装;

  1. [[email protected] ~]# yum install vsftpd

如果是debian 类系统,可以用apt 来在线安装;

  1. [[email protected] ~]# apt-get install vsftpd

如果是RPM的系统,也可以找到vsftpd-xxxx.rpm 的包来通过rpm命令来安装;

  1. [[email protected] ~]# rpm -ivh vsftpd*.rpm

下载源码包安装

  1. [[email protected] ~]# tar zxvf vsftpd-2.0.3.tar.gz
  2. [[email protected] ~]# cd vsftpd-2.0.3
  3. [[email protected] ~]# make ;make install
  4. [[email protected] ~]# cp vsftpd.conf /etc
  5. 然后修改/etc/vsftpd.conf ,在配置文件的最后一行加入下面一行;listen=yes

源码包安装的方法,如果您的系统是RPM包管理的系统,可以删除/etc/xinetd.d/vsftpd 这个文件;然后启动xinetd 服务器;

  1. [[email protected] ~]# /etc/init.d/xinetd restart
  2. 停止 xinetd: [ 确定 ]
  3. 启动 xinetd: [ 确定 ]
  4. vsFTPd服务器的运行
  5. [[email protected] ~]# /usr/sbin/vsftpd &
  6. [[email protected] ~]# /usr/local/sbin/vsftpd &
  7. vsFTPd 服务器关闭

用pkill vsftpd 来杀死Linux vsFTPD进程,这样就把Linux vsFTPD关闭,用psgrep vsftpd 来查看进程,如果没有进程,证明Linux vsFTPD已经关掉;要用到root权限。

  1. [[email protected] ~]# pkill vsftpd
  2. [[email protected] ~]# pgrep vsftpd
  3. 在Fedora/Redhat/CentOS中vsFTPd 服务器的启动和关闭:
  4. 在Fedora/Redhat/CentOS中,也可以用下面的方法来启动vsFTPd;当然也要用到root权限;
  5. [[email protected] beinan]# /etc/init.d/vsftpd start
  6. 为 vsftpd 启动 vsftpd: [ 确定 ]
  7. 重新启动vsFTPd用下面的命令;
  8. [[email protected] beinan]# /etc/init.d/vsftpd restart
  9. 关闭 vsftpd: [ 确定 ]
  10. 为 vsftpd 启动 vsftpd: [ 确定 ]
  11. 关掉vsFTPd服务器,应该用下面的命令;
  12. [[email protected] beinan]# /etc/init.d/vsftpd stop
  13. 关闭 vsftpd: [ 确定 ]

Linux vsFTPD配置文件

vsftpd.conf是Linux vsFTPD服务器的配置文件,此文件一般是/etc/vsftpd.conf或 /etc/vsftpd/vsftpd.conf,vsftpd.conf配置文件就是Linux vsFTPD服务器的全局控制文件,此配置文件中,每行应该算做一 个规则。配置完后需要重启才有效。

Linux vsFTPD配置虚拟用户

FTP用户一般是不能登录系统的,这也是为了安全。在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进 /etc/passwd中;这只是一种虚拟用户的方法,但说实在的并不是真正的虚拟用户,只是把他登录SHELL的权限去掉了,所以他没有能力登录系统;如果我们想把beinan这个用户目录定位在/opt/beinan这个目录中,并且不能登录系统;我们应该如下操作。

  1. [[email protected] ~]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
  2. [[email protected] ~]# passwd beinan
  3. Changing password for user beinan.
  4. New password:
  5. Retype new password:
  6. passwd: all authentication tokens updated successfully.
  7. [[email protected] ~]#
  8. 其实这还是不够的,还要改一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限;
  9. local_enable=YES
  10. write_enable=YES
  11. local_umask=022
  12. 如何实现虚拟路径?

比如:

  1. /home/a 映射为 ftp://localhost/a
  2. /home/b/c 则为 ftp://localhost/c
  3. 可以通过如下的方法来实现。
  4. [[email protected] ~]# mount –bind [原有的目录] [新目录]
  5. 比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作

我们要先在/var/ftp目录中建一个目录

  1. [[email protected] ~]# mkdir /var/ftp/WinSoft
  2. 然后执行mount命令
  3. [[email protected] ~]# mount –bind /mnt/LinG/WinSoft /var/ftp/WinSoft
  4. 这样就OK了。

打开Linux vsFTPDv服务器的日志功能

把下面xferlog_file前面的#号对掉,也就是把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。这是vsFTP的日志功能,这对于我们来说是极为重要的。xferlog_file=/var/log/vsftpd.log如何让vsFTP服务器限制链接数,以及每个IP最大的链接数?应该改Linux vsFTPD服务器的配制文件vsftpd.conf,加入下面的两行:

  1. max_clients=数字
  2. max_per_ip=数字
  3. 举例:我想让我的vsFTP最大支持链接数为100个,每个IP,最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行:
  4. max_clients=100
  5. max_per_ip=5
  6. 如何限制传输速度?
  7. anon_max_rate=数字
  8. 注:这是匿名的速度
  9. local_max_rate=数字
  10. 注:这是vsFTP服务器上本地用户的速度
  11. 注:这个数字的单位是byte,所以我们要计算一下。
  12. 比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024×80=81920
  13. 所以我们要在vsftpd.conf中加入下面的两行
  14. anon_max_rate=81920
    local_max_rate=81920

1. 直接去vsftpd网站()下载最新的tar.gz格式源码包
2. #解压 $tar -zxf vsftpd-xx.tar.gz
$cd ./vsftpd-xx
#编译
make
make install
#如果make install没有安装文件,你可能需要手动执行下面的命令
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/share/man/man5
cp vsftpd.8 /usr/local/share/man/man8
cd ./EXAMPLE/INTERNET_SITE
cp vsftpd.conf /etc
cp vsfpd.xinetd /etc/xinetd.d/vsftpd
/etc/rc.d/init.d/xinetd restart 或者service xinetd restart
######若无xinetd服务,则用命令 $yum install xinetd
3. 若要設置独立启动模式,则在/etc/xinetd.d/vsftpd文件中,把disable=no改成YES
并在/etc/vsftpd.conf文件中:
添加listen=yes这样就改成了STANDALONE独立模式
4. 匿名登录配置:
修改(若默認已是则不用修改) anonymous_enable=YES
anon_root=/sunwill   #匿名登陆的目录
anon_no_anon_password=YES #不需要提示輸入密码 NO则提示輸入密码
其他的属性如为文章最后部分的配置属性清单中(匿名一般含有anon),自己将有需要的添加或修改
6.本地用戶
首先 cp RedHat/vsftpd.pam /etc/pam.d/ftp(拷贝本地用戶认证的pam文件,没有这一步将不能使用本地用户登录!)
修改或添加:
local_enable=YES
write_enable=YES
local_umask=022
local_root=/sunwill #本地用戶登录默認目录,若没有该条则登录为本地用戶原来默認的目录,可用usermod来修改(usermod -d /dir user)。
7.虚拟用戶配置:
(1).生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单数行为用户名,偶数行为口令:
#vi account.txt
ylg
1234
zhanghong
4321
gou
5678
(2).生成口令库文件,并修改其权限:

db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db
chmod 600 /etc/vsftpd/account.db
(若要改变用戶请刪除account.db,然后再db_load)

若没有db_load 则可以从光盘中拷贝關于db4开头的几个rpm文件来安装(rpm -ivh *.rpm)。

下载地址:http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/
用命令$rpm -q db4 檢查,
若已装,则下载db4-java-4.3.29-9.fc6.i386.rpm,
db4-tcl-4.3.29-9.fc6.i386.rpm,db4-utils-4.3.29-9.fc6.i386.rpm三个包,
若db4未装则多下载db4-4.3.29-9.fc6.i386.rpm,db4-devel-4.3.29-9.fc6.i386.rpm两个软件包。用rpm -ivh *.rpm安装所下载的包
(3).新建一个虚拟用户的PAM文件。加上如下两行内容:
#vi /etc/pam.d/vsftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib/security/pam_userdb.so db=/etc/vsftpd/account
(4).建立虚拟用户,设置该用户所要访问的目录,并设置虚拟用户访问的权限:
useradd -d /ftpsite virtual_user
chmod 777 /ftpsite   ###允许所有用戶讀寫操作
经过该步骤的设置,/ftpsite就是virtual_user用户的主目录,该用户也是/ftpsite目录的拥有者。
(5)在/etc/vsftpd.conf中添加
guest_enable=YES
guest_username=virtual_user
pam_service_name=vsftp.vu
(6) 到此为止已经可以用account.txt中的帐号密码登录ftp
至于更改每个用戶的权限则需在vsftpd.conf中添加
user_config_dir=用户配置文件目录,如user_config_dir=/etc/vsftpd/
先mkdir /etc/vsftpd
然后在该目录下創建与用戶名同名的文件,如 $vi /etc/vsftpd/gou
并添加权限属性,如下:
write_enable=NO       #可写
anono_upload_enable=NO   #可上传
其他属性可以自己查看配置属性增加。
(7)启动ftp, /etc/local/sbin/vsftpd &
(8) Linux下連接ftp 的命令: ftp 192.168.18.107 #以下为输入命令后的窗口信息
Connected to 127.0.0.1.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): gou
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
显示如上则表示連接成功
8. 設置开机运行
(1)我们在前面將其設置为独立启动模式,若要开机运行则在/etc/vsftpd.conf 中的listen=YES 该为listen=NO或注释掉
(2)#vi /etc/xinetd.d/vsftpd
将disable=YES 改为disable=NO
(3)#service xinetd restart 此时可用ftp 127.0.0.1测试
9. ftp客户端的命令
FTP的命令行格式为:
ftp -v -d -i -n -g [主机名] ,其中
-v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录,即不使用;.n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
FTP使用的内部命令如下(中括号表示可选项):
<1>.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip
<2>.$ macro-ame[args]: 执行宏定义macro-name。
<3>.account[password]: 提供登录远程系统成功后访问系统资源所需的补充口令。
<4>.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
<5>.ascii:使用ascii类型传输方式。
<6>.bell:每个命令执行完毕后计算机响铃一次。
<7>.bin:使用二进制文件传输方式。
<8>.bye:退出ftp会话过程。
<9>.case:在使用mget时,将远程主机文件名中的大写转为小写字母。
<10>.cd remote-dir:进入远程主机目录。
<11>.cdup:进入远程主机目录的父目录。
<12>.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,
如:chmod 777 a.out。
<13>.close:中断与远程服务器的ftp会话(与open对应)。
<14>.cr:使用asscii方式传输文件时,将回车换行转换为回行。
<15>.delete remote-file:删除远程主机文件。
<16>.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。
<17>.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件
<18>.disconnection:同close。
<19>.form format:将文件传输方式设置为format,缺省为file方式。
<20>.get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。
<21>.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
<22>.hash:每传输1024字节,显示一个hash符号(#)。
<23>.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
<24>.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
<25>.image:设置二进制传输方式(同binary)。
<26>.lcd[dir]:将本地工作目录切换至dir。
<27>.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。
<28>.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。
<29>.mdelete[remote-file]:删除远程主机文件。
<30>.mdir remote-files local-file:与dir类似,但可指定多个远程文件,
如 :mdir *.o.*.zipoutfile 。
<31>.mget remote-files:传输多个远程文件。
<32>.mkdir dir-name:在远程主机中建一目录。
<33>.mls remote-file local-file:同nlist,但可指定多个文件名。
<34>.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。
<35>.modtime file-name:显示远程主机文件的最后修改时间。
<36>.mput local-file:将多个文件传输至远程主机。
<37>.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
<38>.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。
<39>.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。
<40>.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。
<41>.open host[port]:建立指定ftp服务器连接,可指定连接端口。
<42>.passive:进入被动传输方式。
<43>.prompt:设置多个文件传输时的交互提示。
<44>.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。
<45>.put local-file[remote-file]:将本地文件local-file传送至远程主机。
<46>.pwd:显示远程主机的当前工作目录。
<47>.quit:同bye,退出ftp会话。
<48>.quote arg1,arg2…:将参数逐字发至远程ftp服务器,如:quote syst.
<49>.recv remote-file[local-file]:同get。
<50>.reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传。
<51>.rhelp[cmd-name]:请求获得远程主机的帮助。
<52>.rstatus[file-name]:若未指定文件名,则显示远程主机的状态, 否则显示文件状态。
<53>.rename[from][to]:更改远程主机文件名。
<54>.reset:清除回答队列。
<55>.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。
<56>.rmdir dir-name:删除远程主机目录。
<57>.runique:设置文件名只一性存储,若文件存在,则在原文件后加后缀.1, .2等。
<58>.send local-file[remote-file]:同put。
<59>.sendport:设置PORT命令的使用。
<60>.site arg1,arg2…:将参数作为SITE命令逐字发送至远程ftp主机。
<61>.size file-name:显示远程主机文件大小,如:site idle 7200。
<62>.status:显示当前ftp状态。
<63>.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。
<64>.sunique:将远程主机文件名存储设置为只一(与runique对应)。
<65>.system:显示远程主机的操作系统类型。
<66>.tenex:将文件传输类型设置为TENEX机的所需的类型。
<67>.tick:设置传输时的字节计数器。
<68>.trace:设置包跟踪。
<69>.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。
<70>.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3
<71>.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous 。
<72>.verbose:同命令行的-v参数,即设置详尽报告方式,ftp 服务器的所有响 应都将显示给用户,缺省为on.
-----------vsftpd.conf配置文件的属性--------------
anonymous_enable=NO                   禁用匿名用户
no_anon_password=YES                 需要密码
anon_root=/var/ftp                   匿名用户的默认主目录
local_enable=NO                     禁用本地用户
local_root=webdisk                   本地用户的主目录(相对路径是相对于用户的家目录,绝对路径是所有用户都只能登录到这个目录下比如:/localftp)
guest_enable=NO                     禁用gust用户
ftp_username=ftp                     匿名用户的用户名(默认还有anonymous可使用)

权限控制

write_enable=YES                       本地用户可写
local_umask=022                       上传文件的umask
file_open_mode=0666                     使用文件的方式
anon_upload_enable=NO                   匿名用户不可以上传
anon_mkdir_write_enable=NO               匿名用户不可以建目录等写操作
anon_other_write_enable=NO               匿名用户不可以做其他的写操作
anon_world_readable_only=YES               匿名用户可以读文件
#chown_uploads=YES                     修改上传的文件的属主
#chown_username=ftpadmin                 修改上传的文件的属主为XXX
ascii_upload_enable=NO                   不使用ascii上传文件
ascii_download_enable=NO                 不使用ascii下载文件

secure_chroot_dir=/usr/share/empty             默认值

超时控制

idle_session_timeout=600                   空闲超时600秒
data_connection_timeout=120                 传输超时120秒
accept_timeout=60                       pasv模式等待时间60秒
connect_timeout=60                       port模式等待时间60秒

服务控制

xferlog_enable=YES                       启动日志功能
xferlog_std_format=YES                     使用标准日志格式
xferlog_file=/var/log/vsftpd.log             日志默认的位置
pasv_enable=YES                         启用被动模式
#port_enable=YES                         启用主动模式
#注意此处pasv和port只能写一个,不能一个YES,另一个NO,要想让另一个不起作用,只能用#注释掉,否则会出错。
tcp_wrappers=YES                         启用tcp_wrappers功能
nopriv_user=nobody                       最低权限用户

listen=YES                             使用standalone 模式(推荐的)

显示信息

ftpd_banner=welcome to ftp.                 登录时的欢迎信息
dirmessage_enable=YES                     启动切换目录时提示目录信息的功能
message_file=.message                     目录提示信息的内容文件
文件权限设置
chroot_list_enable=YES                   启动用户目录限制功能
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list   此文件中的用户不能改变到其他外层目录中。

userlist_enable=YES                     启动用户限制功能
userlist_deny=YES                       userlist文件中的用户禁止登录,NO的话则只有userlist中用户可以登录
userlist_file=/etc/vsftpd/vsftpd.user_list       禁止登录用户列表文件名和位置(可自定义)

user_config_dir=/etc/vsftpd/userconf/         对个别用户特殊设置的配置文件的目录(在此目录下建立对应“用户名”的文件,文件里写
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES 等权限信息,此用户将有这里所写的权限)
连接选项
max_clients=100                             最大连接数
max_per_ip=5                               每个ip最大连接数
connect_from_port_20=YES                     启用20端口传输数据
#listen_address=192.168.0.2                   指定监听的ip地址,如果你有多个ip的话
listen_port=21                           监听的端口号
ftp_data_port=20                           数据传输端口号

pasv_max_port=40000                         被动模式的端口号的上限(0为不限)
pasv_min_port=30000                         被动模式的端口号的下限(0为不限)

数据传输速度

anon_max_rate=51200                         匿名用户最大传输率
local_max_rate=5120000                       本地用户最大传输率

N宅免费SS捐赠计划

从2016年9月18日起,N宅将不再提供付费服务,改为免费提供ss代理服务具体服务器信息请加QQ群127969311(点击加群)查看群公告或查看网站公告。 由于成本原因...

阅读全文

通过SNIProxy设置反向代理(Reverse Proxy)实现google及DMM的正常访问教程

这里介绍的改hosts各位提督应该都不陌生,这是骗过dmm的ip检查玩舰娘的方法之一,同时改hosts也是翻墙的重要方法之一,只要服务端适当配置,干什么都是可以的...

阅读全文

【鄙视创宇云】关于2015年8月6日至14日伪技术の宅旗下站点被迫关闭的缘由|创宇云服务器测评|售后服务|好不好|垃圾

创宇云站长应该都知道,之前百度云加速和它有各种联合活动,于是我也跟风买了个服务器。不为别的,就图它80年不用续费,虽然我知道我一定用不了80年,但是我...

阅读全文