vsftpd完整配置手册.docx
《vsftpd完整配置手册.docx》由会员分享,可在线阅读,更多相关《vsftpd完整配置手册.docx(21页珍藏版)》请在冰豆网上搜索。
vsftpd完整配置手册
vsftpd完整配置手册.txtゅ你不用一上线看见莪在线,就急着隐身,放心。
莪不会去缠你。
说好的不离不弃现在反而自己却做不到╮vsftpd配置选项
1、vsftpd配置参数详细整理
#接受匿名用户
anonymous_enable=YES
#匿名用户login时不询问口令
no_anon_password=YES
#匿名用户主目录
anon_root=(none)
#接受本地用户
local_enable=YES
#本地用户主目录
local_root=(none)
#如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录
deny_email_enable=YES
#仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录
check_shell=YES
#若启用此选项,userlist_deny选项才被启动
userlist_enable=YES
#若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录
userlist_deny=NO
#如果和chroot_local_user一起开启,那么用户锁定的目录来自/etc/passwd每个用户指定的目录(这个不是很清楚,很哪位熟悉的指点一下)
passwd_chroot_enable=NO
#定义匿名登入的使用者名称。
默认值为ftp。
ftp_username=FTP
#################用户权限控制###############
#可以上传(全局控制).
write_enable=YES
#本地用户上传文件的umask
local_umask=022
#上传文件的权限配合umask使用
#file_open_mode=0666
#匿名用户可以上传
anon_upload_enable=NO
#匿名用户可以建目录
anon_mkdir_write_enable=NO
匿名用户其它的写权利(更改权限?
)
anon_other_write_enable=NO
如果设为YES,匿名登入者会被允许下载可阅读的档案。
默认值为YES。
anon_world_readable_only=YES
#如果开启,那么所有非匿名登陆的用户名都会被切换成guest_username指定的用户名
#guest_enable=NO
所有匿名上传的文件的所属用户将会被更改成chown_username
chown_uploads=YES
匿名上传文件所属用户名
chown_username=lightwiter
#如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
chroot_list_enable=YES
#允许使用"asyncABOR"命令,一般不用,容易出问题
async_abor_enable=YES
管控是否可用ASCII模式上传。
默认值为NO。
ascii_upload_enable=YES
#管控是否可用ASCII模式下载。
默认值为NO。
ascii_download_enable=YES
#这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd不需要filesystem
的权限时,就会将使用者限制在此数据夹中。
默认值为/usr/share/empty
secure_chroot_dir=/usr/share/empty
###################超时设置##################
#空闲连接超时
idle_session_timeout=600
#数据传输超时
data_connection_timeout=120
#PAVS请求超时
ACCEPT_TIMEOUT=60
#PROT模式连接超时
connect_timeout=60
################服务器功能选项###############
#开启日记功能
xferlog_enable=YES
#使用标准格式
xferlog_std_format=YES
#当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用.
#log_ftp_protocol=NO
#允许使用pasv模式
pasv_enable=YES
#关闭安全检查,小心呀.
#pasv_promiscuous+NO
#允许使用port模式
#port_enable=YES
#关闭安全检查
#prot_promiscuous
#开启tcp_wrappers支持
tcp_wrappers=YES
#定义PAM所使用的名称,预设为vsftpd。
pam_service_name=vsftpd
#当服务器运行于最底层时使用的用户名
nopriv_user=nobody
#使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?
)
pasv_address=(none)
#################服务器性能选项##############
#是否能使用ls-R命令以防止浪费大量的服务器资源
#ls_recurse_enable=YES
#是否使用单进程模式
#one_process_model
#绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式
listen=YES
#当使用者登入后使用ls-al
之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名称。
若是希望出现拥有者的名称,则将此功能开启。
text_userdb_names=NO
#显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果
use_localtime=NO
#测试平台优化
#use_sendfile=YES
################信息类设置################
#login时显示欢迎信息.如果设置了banner_file则此设置无效
ftpd_banner=欢迎来到湖南三辰Fake-TaFTP网站.
#允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES
#显示会话状态信息,关!
#setproctitle_enable=YES
##############文件定义##################
#定义不能更改用户主目录的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定义限制/允许用户登录的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定义登录信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用户登陆时作为密码的电子邮件地址
banned_email_file=/etc/vsftpd.banned_emails
#日志文件位置
xferlog_file=/var/log/vsftpd.log
#目录信息文件
message_file=.message
##############目录定义#################
#定义用户配置文件的目录
user_config_dir=/etc/vsftpd/userconf
#定义本地用户登陆的根目录,注意定义根目录可以是相对路径也可以是绝对路径.相对路径是针对用户家目录来说的.
local_root=webdisk#此项设置每个用户登陆后其根目录为/home/username/webdisk
#匿名用户登陆后的根目录
anon_root=/var/ftp
#############用户连接选项#################
#可接受的最大client数目
max_clients=100
#每个ip的最大client数目
max_per_ip=5
#使用标准的20端口来连接ftp
connect_from_port_20=YES
#绑定到某个IP,其它IP不能访问
listen_address=192.168.0.2
#绑定到某个端口
#listen_port=2121
#数据传输端口
#ftp_data_port=2020
#pasv连接模式时可以使用port范围的上界,0表示任意。
默认值为0。
pasv_max_port=0
#pasv连接模式时可以使用port范围的下界,0表示任意。
默认值为0。
pasv_min_port=0
##############数据传输选项#################
#匿名用户的传输比率(b/s)
anon_max_rate=51200
#本地用户的传输比率(b/s)
local_max_rate=5120000
########################################
别外,如果要对每个用户进行单独的控制,只需要在user_config_dir中建立username文件,内容为数据传输和用户权利里面设置个人的合适的选项,用户自定义文件同样适合用pam支持的虚拟用户
附:
FTP数字代码的意义
110重新启动标记应答。
120服务在多久时间内ready。
125数据链路埠开启,准备传送。
150文件状态正常,开启数据连接端口。
200命令执行成功。
202命令执行失败。
211系统状态或是系统求助响应。
212目录的状态。
213文件的状态。
214求助的讯息。
215名称系统类型。
220新的联机服务ready。
221服务的控制连接埠关闭,可以注销。
225数据连结开启,但无传输动作。
226关闭数据连接端口,请求的文件操作成功。
227进入passivemode。
230使用者登入。
250请求的文件操作完成。
257显示目前的路径名称。
331用户名称正确,需要密码。
332登入时需要账号信息。
350请求的操作需要进一部的命令。
421无法提供服务,关闭控制连结。
425无法开启数据链路。
426关闭联机,终止传输。
450请求的操作未执行。
451命令终止:
有本地的错误。
452未执行命令:
磁盘空间不足。
500格式错误,无法识别命令。
501参数语法错误。
502命令执行失败。
503命令顺序错误。
504命令所接的参数不正确。
530未登入。
532储存文件需要账户登入。
550未执行请求的操作。
551请求的命令终止,类型未知。
552请求的文件终止,储存位溢出。
553未执行请求的的命令,名称不正确。
2、VSFTPD官方资料翻译版(不完整版)---摘自中国Linux公社
翻译了部分VSFTPD的官方资料。
有些知道是什么意思,但难于翻译。
有些涉及专业的知识,我自己也不懂,只好按字面翻译。
有些我自己看不懂,只好尽量翻译。
如果看了其中一部分觉得糊涂,请参阅官方文挡。
安装篇
===============
这个文件详细介绍了如何从VSFTPD的.tar.gz分发包开始,建立和安装并运行VSFTPD。
1)建立VSFTPD
先进入解压.tar.gz文件后产生的目录内。
如下:
cdvsftpd-2.0.1
编辑"builddefs.h"以操作compile-time设定。
(tcp_wrappersbuild,等)
输入make,回车(如果它不工作请发邮件通知我.
这将产生一个二进制文件,你可以验证一下。
如下:
[chris@localhostvsftpd]$ls-lvsftpd
-rwxrwxr-x1chrischris61748Sep2700:
26vsftpd
2)满足VSFTPD安装所需的一些条件
VSFTPD默认设置需要一个"nobody"用户,如果这个用户不存在,那么添加它。
如下:
[root@localhostroot]#useraddnobody
useradd:
usernobodyexists
VSFTPD默认设置需要一个空目录:
/usr/share/empty.增加这个目录,如果它还不存在的话。
如下:
[root@localhostroot]#mkdir/usr/share/empty/
mkdir:
cannotcreatedirectory`/usr/share/empty':
Fileexists
如果容许匿名用户(anonymous),那么你将需要一个"ftp"用户和其home目录(这个home目录不属于“ftp”用户,而且“ftp"用户也对其没有写权限)在你的系统中存在。
以下命令用来创建一个"ftp"用户,如果它还不存在的话。
[root@localhostroot]#mkdir/var/ftp/
[root@localhostroot]#useradd-d/var/ftpftp
(即使你的"ftp"用户已经存在,完成以下这两步也是很有好处的:
)
[root@localhostroot]#chownroot.root/var/ftp
[root@localhostroot]#chmodog-w/var/ftp
3)安装VSFTPD的配置、执行和帮助文件。
输入"makeinstall"后会将二进制文件和帮助文件拷贝到适当的目录。
你也可以手工拷贝这些文件:
cpvsftpd/usr/local/sbin/vsftpd
cpvsftpd.conf.5/usr/local/man/man5
cpvsftpd.8/usr/local/man/man8
"makeinstall"不会拷贝默认的配置文件,所以建议你手工拷贝:
cpvsftpd.conf/etc
daidong注:
根据你系统版本的不同,也可能是cpvsftpd.conf/etc/vsftpd
4)测试(无inetd影响)
VSFTPD能运行在独立模式(standalone)或者通过inetd(xinetd)来启动。
你能通过inetd来运行vsftpd以更好地控制它。
但我们在首次运行时不这么做,以便检查系统是否现在配置正常。
编辑/etc/vsftpd.conf(daidong注:
也可能是/etc/vsftpd/vsftpd.conf),并在最下面加入以下这一行:
listen=YES
这将告诉VSFTPD不要从inetd启动。
OK,现在试着启动FTP。
以ROOT登录。
确定你没有运行其他FTP服务(否则VSFTPD不能占用FTP所需的21端口)。
运行那个二进制文件,如下:
[root@localhostroot]#/usr/local/sbin/vsftpd&
[1]2104
如果一切正常,那么你将连上FTP服务器,如下:
[chris@localhostchris]$ftplocalhost
Connectedtolocalhost(127.0.0.1).
220(vsFTPd1.1.1)
Name(localhost:
chris):
ftp
331Pleasespecifythepassword.
Password:
230Loginsuccessful.Havefun.
RemotesystemtypeisUNIX.
Usingbinarymodetotransferfiles.
ftp>ls
227EnteringPassiveMode(127,0,0,1,229,133)
150Herecomesthedirectorylisting.
d--x--x--x2004096Jan142002bin
d--x--x--x2004096Apr2120:
52etc
drwxr-xr-x2004096Apr2120:
52lib
drwxr-sr-x20504096Jul2622:
58pub
226DirectorysendOK.
ftp>
5)从inetd或者类似方式启动(官方推荐使用standalone方式)
你也许想通过inetd或者类似方式启动VSFTPD,因为这能给你更多的感受。
例如xinetd就有很多的设置。
(注意:
VSFTPD的内在机制屏蔽了xinetd的大多数的有用的设置)。
如果使用标准的"inetd",你需要编辑/etc/inetd.conf,在其中加入以下一行:
ftpstreamtcpnowaitroot/usr/sbin/tcpd/usr/local/sbin/vsftpd
(确定你删除或者注释掉一些已存在的FTP服务配置行。
如果你没有安装tcp_wrappers,或者不想使用它们,那么请去掉/usr/sbin/tcpd
part).
inetd需要指定并重新载入它的配置文件:
kill-SIGHUP`pidofinetd`
如果你想使用"xinetd",请参阅我们提供的范例/EXAMPLE/INTERNET_SITE/README.
而其他范例文件将告诉你如何调配出更强大的xinetd功能。
6)为本地登录配置PAM文件(可选)
如果你在一台激活了PAM的设备上运行VSFTPD,你需要提供一个/etc/pam.d/ftp文件。
否则非匿名用户将无法登录服务器。
(注:
如果你的PAM版本比较老,那么这个文件也许是/etc/pam.conf).
做为一个标准设置,你可以拷贝一个已提供的范例文件,如下:
cpRedHat/vsftpd.pam/etc/pam.d/ftp
7)自定义你的配置文件
完成以上的配置后,建议你安装一个配置文件。
默认的配置文件位置是/etc/vsftpd.conf.在VSFTPD软件分发包内有一个范例配置文件。
你可以拷贝其为/etc/vsftpd.conf以做进一步修改。
cpvsftpd.conf/etc
(daidong注:
也可能是cpvsftpd.conf/etc/vsftpd).
这个默认配置即不容许本地登录也不容许匿名用户上传,也许你希望更改这个配置。
其它
===================
测试平台(已通过)
-流行的,功能完善的平台都能测试通过。
在以下平台的较新版本,VSFTPD工作得很好。
在其大部分较早的版本下,也运行正常。
-RedHatLinux
-RedHatEnterpriseLinux
-Solaris/GNUtools(Solaris8ornewer)
-SuSELinux
-DebianLinux
-OpenBSD
-FreeBSD
-NetBSD
-HP-UX/GNUtools
-IRIX/GNUtools
-MacOSX(note;olderversionshavesetgroups()problem.10.3.4reported
OK)
虚拟用户1
=============
这个例子示范了如何为虚拟用户设置VSFTPD/PAM。
虚拟用户是一个在系统中并不作为一个登录实体而存在的用户。
使用虚拟用户比使用真实的用户更安全,因为这个账号只能用于FTP服务器。
虚拟用户经常用来提供给不大可信任的用户访问某些资源,而这些资源通常是其他普通用户不能访问的。
1)创建虚拟用户数据库
我们将使用pam_userdb来认证虚拟用户。
这需要提供一个“db"格式(一种通用数据库格式)的用户名/密码文件。
创建一个"db"格式的文件,首先要创建一个标准文本文件,并把用户名,密码以竖直排列方式输入。
如logins.txt:
tom
foo
fired
bar
这个例子中,tom用户的密码是foo.fired用户的密码是bar.
以ROOT登录,创建一个数据库文件,如下:
db_load-T-thash-flogins.txt/etc/vsftpd_login.db
(这要求berkeleydb程序已经安装)
(注:
一些系统也许安装了多个版本的"db",所以某些情况下你可能使用"db3_load"才是正确的。
对于一些Debian系统就是这样。
关键在于要让pam_userdb相信它的登录数据库是哪一个db版本所产生(一般都是db3,尽管你的系统里可能安装的是db4).)
这将创建/etc/vsftpd_login.db文件。
显然,你希望设定这个文件的权限:
chmod600/etc/vsftpd_login.db
要了解更多关于维护你的登录数据库的信息,请在"berkeleyDB"察看相关文档:
2)用你的新数据库创建一个PAM文件
请参考范例vsftpd.pam,它包含2行:
authrequired/lib/security/pam_userdb.sodb=/etc/vsftpd_login
accountrequired/lib/security/pam_userdb.sodb=/etc/vsftpd_login
这是告诉PAM用新的数据库去验证用户。
把这个PAM文件拷贝到PAM目录,一般是/etc/pam.d
cpvsftpd.pam/etc/pam.d/ft