1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465
| vsftpd.conf 是 vsftpd 守护进程的配置文件,默认位于 /etc/vsftpd.conf , 但是其路径也可以通过 vsftpd 的命令行参数进行修改。 这个特性在希望由 xinetd 针对每个不同的主机使用不同的配置文件调用 vsftpd 的场合很有用。
--------------------- 格式 --------------------- vsftpd.conf 的格式非常简单,每一行要么是一条指令,要么就被视作注释。 以井号(#)开头的行被视为注释而忽略。 而如下格式的行将被视为配置指令。注意:等号两边不能有任何空白!
option=value
每一个指令都有一个默认值,但是可以通过配置文件进行修改
--------------------- 布尔型指令 --------------------- 布尔型指令的值只能设为 YES 或 NO ,等号后是其默认值。
allow_anon_ssl=NO 是否允许匿名用户使用SSL连接。仅在 ssl_enable=YES 时才有意义。
anon_mkdir_write_enable=NO 是否允许匿名用户创建新目录。 仅在 write_enable=YES 时才有意义,而且匿名用户必须对所在目录具有写权限。
anon_other_write_enable=NO 是否允许匿名用户在上传文件和创建目录之外执行其他写操作,比如删除和重命名。
anon_upload_enable=NO 是否允许匿名用户或虚拟用户上传文件。 仅在 write_enable=YES 时才有意义,而且匿名用户必须对所在目录具有写权限。
anon_world_readable_only=YES 是否仅允许匿名用户下载全局可读的文件。 这主要是考虑到 ftp 用户可能会拥有文件,特别是允许上传文件的情况下。
anonymous_enable=YES 是否允许匿名登录。ftp 和 anonymous 两个名称都被认为是匿名用户。
ascii_download_enable=NO 是否允许以ASCII模式下载文件。
ascii_upload_enable=NO 是否允许以ASCII模式上传文件。
async_abor_enable=NO 是否允许使用"async ABOR"命令。 只有不合格的FTP客户端才会使用此命令,而且此命令难以正确处理,所以默认禁止使用。
background=NO 是否以"listen"模式运行。 该模式下的 vsftpd 会将监听进程放到后台运行。
check_shell=YES 是否检查本地登录用户的SHELL合法性(/etc/shells)。仅在 vsftpd 不支持PAM特性时有意义。
chmod_enable=YES 是否允许使用 SITE CHMOD 命令。仅对本地登录用户有意义,匿名用户永远不允许使用此命令。
chown_uploads=NO 是否将所有匿名上传的文件所有者更改为 chown_username 指定的用户。
chroot_list_enable=NO 是否读取 chroot_list_file 文件中的"chroot例外"用户。 当 chroot_local_user=YES 时,chroot_list_file 文件中用户将不会被限制在其家目录中。 当 chroot_local_user=NO 时,chroot_list_file 文件中用户将会被限制在其家目录中。
chroot_local_user=NO 是否将本地登录的用户通过 chroot() 限制在其家目录中。 该功能有安全方面的隐患,特别是在用户有上传权限或者有可用SHELL的时候。
connect_from_port_20=NO 是否强制 PORT 风格的数据连接使用 20 端口。 出于安全考虑,一些 FTP 客户端隐含了这个假定。而设为 NO 则可以让 vsftpd 以非特权用户运行。
debug_ssl=NO 是否将 OpenSSL 连接对话转储到日志文件中。
delete_failed_uploads=NO 是否删除上传失败的文件
deny_email_enable=NO 是否读取 banned_email_file 文件中的Email地址黑名单,其中的地址将被禁止用作匿名登录密码。
dirlist_enable=YES 是否允许列出目录的内容。
dirmessage_enable=NO 是否在进入新目录时显示 message_file 文件中的内容。
download_enable=YES 是否允许下载
dual_log_enable=NO 是否同时记录 xferlog_file 和 vsftpd_log_file 两份日志。
force_dot_files=NO 是否强制显示隐藏文件(点文件),即使客户端没有使用"a"选项也显示。
force_anon_data_ssl=NO 是否强制匿名用户必须使用SSL连接发送和接受数据。仅在 ssl_enable=YES 时才有意义。
force_anon_logins_ssl=NO 是否强制匿名登录时必须使用SSL连接,以保证密码不被泄露。仅在 ssl_enable=YES 时才有意义。
force_local_data_ssl=YES 是否强制非匿名用户必须使用SSL连接发送和接受数据。仅在 ssl_enable=YES 时才有意义。
force_local_logins_ssl=YES 是否强制非匿名登录时必须使用SSL连接,以保证密码不被泄露。仅在 ssl_enable=YES 时才有意义。
guest_enable=NO 是否将所有非匿名登录看做"guest"登录,并被映射到 guest_username 指定的用户。
hide_ids=NO 是否隐藏文件和目录的宿主和属组信息,而统一显示为"ftp"。
implicit_ssl=NO 是否强制客户端必须使用SSL连接(将 vsftpd 配置为一个FTPS服务器,也就是 implicit 模式)。 FTPS 一般使用 990 端口作为控制端口,而使用 989 端口作为数据传输端口。
listen=YES 是否以 standalone 模式运行。standalone 模式是指 vsftpd 不由 inetd 启动,而是独自监听和处理连接。
listen_ipv6=NO 含义与 listen 指令相同,只是在 IPv6 套接字上进行监听。该指令与 listen 是互斥的,不能同时使用。
local_enable=NO 是否允许本地用户登录。激活后,将允许 /etc/passwd 文件或PAM中的用户登录。 必须激活此选项才能允许非匿名登录(包括虚拟用户登录)。
lock_upload_files=YES 是否对上传中的文件加锁。激活后,所有下载进程将在该文件上共享一个读取锁。 激活此指令后,恶意的读取进程会导致写进程饿死(比如追加的写进程)。
log_ftp_protocol=NO 在 xferlog_std_format=NO 的前提下,是否在日志中记录所有FTP的请求和应答。主要用于调试。
ls_recurse_enable=NO 是否允许客户端使用"ls -R"递归列出目录的内容。对于巨大的站点来说,可能会导致性能问题。
mdtm_write=YES 是否允许客户端使用 MDTM 文件的修改时间(依然要受访问权限的限制)
no_anon_password=NO 匿名用户是否需要输入口令后才能登陆。激活后匿名用户将不需要输入密码而直接登录。
no_log_lock=NO 是否在记录日志文件时不对日志文件加锁。除非为了要解决某些操作系统缺陷,一般不应开启此指令。
one_process_model=NO 简单的一句话:不要开启此指令。
passwd_chroot_enable=NO 在 chroot_local_user=YES 的前提下,是否允许为每个不同的用户分别指定不同的 chroot() 位置。 每个用户的虚根目录来自于 /etc/passwd 文件中对应的家目录。 家目录中的 /./ 字符串表示虚根目录位于那个目录中的特定位置。
pasv_addr_resolve=NO 是否允许将 pasv_address 指令的值设为主机名而不是IP地址,以便对其进行DNS解析。
pasv_enable=YES 是否允许使用 PASV 命令获得数据连接的地址端口对。
pasv_promiscuous=NO 是否禁止对 PASV 命令进行安全检查(确保数据连接和控制连接来自于同一个IP地址)。 不要开启它,除非你明确知道自己在做什么。
port_enable=YES 是否允许使用 PORT 命令获得数据连接的端口。
port_promiscuous=NO 是否禁止对 PORT 命令进行安全检查(确保数据连接和控制连接来自于同一个IP地址)。 不要开启它,除非你明确知道自己在做什么。
require_cert=NO 是否强制SSL客户端必须提供证书。证书的有效性由 validate_cert 指令控制。
require_ssl_reuse=YES 是否要求所有SSL数据连接都复用SSL会话,以确保它们都知道控制连接的主密码。 虽然出于安全考虑,YES 是默认值,但是却与不少FTP客户端不兼容。
run_as_launching_user=NO 是否以启动 vsftpd 的进程的用户身份运行。常在无法取得 root 权限的时候使用。 警告:不要开启它,除非你明确知道自己在做什么,想当然的使用此指令会导致重大安全漏洞。 开启此指令后,chroot 特性将会失效(即使由root启动),还有其他许多重大安全问题。
secure_email_list_enable=NO 是否仅允许匿名用户使用 email_password_file 指令指定的文件中的Email地址作为登录密码。 在某些安全性要求不高的场合,这样做可以避免使用虚拟用户。
session_support=NO 是否要求 vsftpd 维护登录会话。 在使用PAM认证的时候,设为 YES 表示打开一个PAM会话,并更新 utmp 和 wtmp 文件。 如果不需要记录会话,则应该设为 NO ,以让 vsftpd 运行的更快并且需要更少的特权。
setproctitle_enable=NO 是否在进程的标题中包含会话状态信息(idle, downloading ...)。出于安全考虑,建议设为 NO 。
ssl_enable=NO 是否允许客户端使用SSL连接(将 vsftpd 配置为一个 FTPS 服务器,也就是 explicit 模式)。 与 implicit_ssl 指令的不同之处在于它并不强制客户端一定要使用SSL连接。
ssl_request_cert=YES 是否允许查看客户端证书(与 require_cert 不同,并非必须查看)。
ssl_sslv2=NO 是否允许使用 SSL2 进行连接。推荐使用 TLS1 。仅在 ssl_enable=YES 时才有意义。
ssl_sslv3=NO 是否允许使用 SSL3 进行连接。推荐使用 TLS1 。仅在 ssl_enable=YES 时才有意义。
ssl_tlsv1=YES 是否允许使用 TLS1 进行连接。推荐使用 TLS1 。仅在 ssl_enable=YES 时才有意义。
strict_ssl_read_eof=NO 是否强制SSL数据上传在SSL连接内终结,而不是以socket结束作为终结。 设为 YES 可以确保攻击者无法通过伪造的 TCP FIN 包提前终止上传数据流。 不幸的是,只有很少的客户端能正确处理,所以默认值为 NO
strict_ssl_write_shutdown=NO 是否强制SSL数据下载在SSL连接内终结,而不是以socket结束作为终结。 设为 YES 可以确保攻击者无法通过伪造的 TCP FIN 包提前终止下载数据流。 不幸的是,只有很少的客户端能正确处理,所以默认值为 NO 不过即使无此保证,客户端依然能够检查下载文件的完整性。
syslog_enable=NO 是否通过系统日志机制记录日志而不是由 vsftpd 自己记录。日志将通过 FTPD facility 进行记录。
tcp_wrappers=NO 是否通过 tcp_wrappers 对进入连接进行访问控制。仅在编译了 tcp_wrappers 支持的时候有效。 tcp_wrappers 可以针对每个单独的IP进行设置。 如果 tcp_wrappers 设置了 VSFTPD_LOAD_CONF 环境变量,那么 vsftpd 会话将会尝试加载其指定的配置文件。
text_userdb_names=NO 是否在列出目录内容时不显示文件和目录的 UID 和 GID 值,而是显示其对应的名称。 默认值 NO 主要是出于性能考虑。
tilde_user_enable=NO 是否将类似 ~chris/pics 这样路径解析到对应的用户主目录下。 注意: ~ 和 ~/something 将始终被解析( ~ 表示初始登录的目录)。 注意: ~user 仅在当前的 chroot() 中存在 /etc/passwd 时才能被解析。
use_localtime=NO 是否在列出目录内容时以本地时间(而非UTC时间)显示。MDTM FTP 返回的时间也有该指令控制。
use_sendfile=YES 是否使用操作系统的 sendfile() 接口发送文件。
userlist_deny=YES 是否允许 userlist_file 文件之外的用户登陆。该指令仅在 userlist_enable=YES 时有意义。
userlist_enable=NO 是否禁止 userlist_file 文件中的用户登陆。设为 NO 则根本无视该文件。
validate_cert=NO 是否强制要求SSL客户端证书必须有效。自签名的证书总是被认为是无效的。
virtual_use_local_privs=NO 是否让虚拟用户拥有与本地用户一样的权限(虚拟用户默认权限与匿名用户相同)。
write_enable=NO 是否允许执行FTP写入操作(STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, SITE)。
xferlog_enable=NO 是否在 vsftpd_log_file 文件中记录上传和下载信息。
xferlog_std_format=NO 是否在 xferlog_file 文件中按照标准的 xferlog 格式(wu-ftpd 的格式)记录日志。 这样做的好处是可以使用针对 wu-ftpd 设计的日志分析工具。但是默认格式更易于阅读。
--------------------- 数值型指令 --------------------- 数值型指令的值只能设为一个非负整数,等号后是其默认值。 为了支持 umask 相关的选项,八进制数也被支持,但是必须以"0"作为第一个数字。
accept_timeout=60 允许客户端建立 PASV 风格的数据传输连接的秒数。
anon_max_rate=0 匿名用户允许的最大数据传输率,单位是"字节/秒"。"0"表示不限。
anon_umask=077 匿名用户创建新文件是的 umask 值。
chown_upload_mode=0600 使用 chown() 更改匿名用户上传的文件的用户时,将此文件的权限设为什么值。
connect_timeout=60 客户端相应 PORT 风格的数据连接的超时秒数。也就是必须在此时间内建立数据连接。
data_connection_timeout=300 数据传输的超时秒数。如果超过此处规定的秒数,数据传输依然没有任何进展,那么该客户端将被踢出。
delay_failed_login=1 在对一个失败的登录作出相应前暂停的秒数。
delay_successful_login=0 在对一个成功的登录作出相应前暂停的秒数。
file_open_mode=0666 上传的文件被创建时使用的权限。umask 值将会应用到这个值上面。 如果你希望上传的文件具有可执行权限,那么可以设为 0777
ftp_data_port=20 指定 PORT 风格的连接从哪个端口发起(仅在 connect_from_port_20=YES 时有意义)
idle_session_timeout=300 客户端在两个FTP命令之间允许的最大间隔秒数。超时的客户端将被踢出。
listen_port=21 仅对 standalone 模式有效。指定在哪个端口上监听。
local_max_rate=0 本机用户允许的最大数据传输速率。"0"表示不限。
local_umask=077 本机用户在创建上传文件时使用的 umask 值。
max_clients=0 standalone 模式下,允许连接的最大客户端数量。"0"表示不限。
max_login_fails=3 最大登录尝试次数。失败次数超过这个值之后,该次会话将被终止。
max_per_ip=0 standalone 模式下,同一个IP地址允许发起的最大并发连接数。"0"表示不限。
pasv_max_port=0 允许为 PASV 风格的数据连接使用的最大端口号。"0"表示不限。
pasv_min_port=0 允许为 PASV 风格的数据连接使用的最小端口号。"0"表示不限。
trans_chunk_size=0 一般不需要调整此设置,但是也可能需要将其设置成诸如 8192 之类的值以达到更平滑的带宽限制。 "0"表示让 vsftpd 自己选择一个合理的值。
--------------------- 字符串型指令 --------------------- 等号后是其默认值。(none)表示没有默认值。
anon_root=(none) 匿名用户登录后的 chroot 目录。若未指定则使用 ftp_username 指令的家目录。 注意:ftp_username 指令指定的用户不能拥有该目录的写权限。
banned_email_file=/etc/vsftpd.banned_emails 包含禁止匿名用户使用的登录密码(Email地址)的文件。仅在 deny_email_enable=YES 时才被读取。
banner_file=(none) 指定一个文件,其内容将在客户端连接上服务器时显示。设置后将取代 ftpd_banner 指令的值。
ca_certs_file=(none) 用于校验客户端证书的CA证书文件。 注意:vsftpd 并不使用默认的 SSL CA 证书路径,因为 vsftpd 只能看到虚根(chroot)下的文件。
chown_username=root 匿名用户上传的文件的宿主。仅在 chown_uploads=YES 时有意义。
chroot_list_file=/etc/vsftpd.chroot_list 包含"chroot例外用户"的文件,仅在 chroot_list_enable=YES 时才有意义。
cmds_allowed=(none) 允许客户端使用的FTP命令(逗号分隔的列表,"USER,PASS,QUIT"总被允许),列表外的命令都将被拒绝。 不设置表示允许所有命令。
cmds_denied=(none) 禁止客户端使用的FTP命令(逗号分隔的列表,"USER,PASS,QUIT"总被允许),其优先级比 cmds_allowed 更高。
deny_file=(none) 设置一个匹配模式,禁止访问任何与此模式匹配的文件和目录(并不隐藏这些文件)。 注意,不要依赖此指令做访问控制,而应该优先使用操作系统的文件和目录权限。该指令主要用于控制虚拟用户的权限。 需要注意的是,可以通过多个途径(链接)访问的文件/目录,必须把所有途径都要考虑进去。 匹配模式语法很简单,仅支持 *, ?, {} 三种符号,例如:deny_file={*.mp3,*.mov,.private} 注意:仅在路径的结尾部分才支持匹配。也就是说 a/b/? 是可以进行匹配的,但是 a/?/c 是不可以被匹配的。
dsa_cert_file=(none) 用于SSL连接的DSA证书。默认值(none)表示使用RSA证书。
dsa_private_key_file=(none) 用于SSL连接的DSA私钥。未指定(none)表示私钥就存在于证书文件中。
email_password_file=/etc/vsftpd.email_passwords 指定一个文件,其中每一行都是一个Email地址。仅在 secure_email_list_enable=YES 时有意义。
ftp_username=ftp 用于处理匿名FTP操作的系统用户。该用户的家目录即是匿名用户登录后的根目录。
ftpd_banner=(none) 指定一个字符串,用于覆盖默认的 vsftpd 欢迎词。默认值(none)表示使用 vsftpd 内置的默认值。
guest_username=ftp 将 guest 用户映射到哪个实际用户。参见 guest_enable 指令对于 guest 登录的介绍。
hide_file=(none) 设置一个匹配模式,隐藏任何与此模式匹配的文件和目录(但是并不阻止对其访问)。 需要注意的是,可以通过多个途径(链接)访问的文件/目录,必须把所有途径都要考虑进去。 匹配模式语法很简单,仅支持 *, ?, {} 三种符号,例如:deny_file={*.mp3,*.mov,.private} 注意:仅在路径的结尾部分才支持匹配。也就是说 a/b/? 是可以进行匹配的,但是 a/?/c 是不可以被匹配的。
listen_address=(none) 仅对 standalone 模式有效。指定在哪个IP地址上监听。默认值为空,表示监听所有IP地址。
listen_address6=(none) 与 listen_address 指令含义相同,不过是针对 IPv6 地址(仅在 listen_ipv6=YES 时有意义)。
local_root=(none) 指定一个本地登录(非匿名)后的默认 chroot 目录。即使失败也不会有任何提示。
message_file=.message 指定进入一个目录时向用户显示哪个文件的内容。仅在 dirmessage_enable=YES 时有意义。
nopriv_user=nobody 当 vsftpd 进入非特权模式时使用的用户名。最好设置为一个专门的用户,而不是默认的 nobody 用户。
pam_service_name=ftp vsftpd 将要使用的PAM服务名称
pasv_address=(none) 指定用于应答 PASV 命令的IP地址。当 pasv_addr_resolve=YES 时,可以使用主机名。 默认值(none)表示使用连接接入的IP地址。
rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem 用于SSL连接的RSA证书文件的位置
rsa_private_key_file=(none) 用于SSL连接的RSA私钥文件的位置。(none)表示私钥就存放于证书文件中。
secure_chroot_dir=/usr/share/empty 该指令的值必须是一个空目录,并且对于 ftp 用户没有写权限。 该目录将在 vsftpd 不需要文件系统权限时,被用作安全的 chroot() 监狱。
ssl_ciphers=DES-CBC3-SHA 指定允许使用的SSL连接加密算法。 限制仅允许使用特定的算法可以将那些安全性较弱的算法排除在外。
user_config_dir=(none) 这个很牛叉的指令可以用于针对每个不同的用户进行不同的设置。 使用方法很简单,假定 user_config_dir=/etc/vsftpd_user_conf , 那么当"chris"登录后,vsftpd 将针对该用户使用 /etc/vsftpd_user_conf/chris 文件中的设置。 该文件的语法与 vsftpd.conf 本身完全相同,但是并非所有指令都可以针对每个用户单独设定。 例如 listen_address, banner_file, max_per_ip, max_clients, xferlog_file 等指令。
user_sub_token=(none) 根据模板自动为每个虚拟用户生成一个家目录,与虚拟用户一起使用才有意义。 例如,如果实际用户(guest_username)的家目录是 /home/virtual/$USER ,并且 user_sub_token=$USER , 那么虚拟用户 fred 的家目录就是 /home/virtual/fred (通常被 chroot 进该目录)。 在 local_root 包含了 user_sub_token 的情况下,该指令依然有效。
userlist_file=/etc/vsftpd.user_list 指定 userlist_enable=YES 时要加载的文件
vsftpd_log_file=/var/log/vsftpd.log 指定 vsftpd 风格的日志文件的路径。 仅在(xferlog_enable=YES 并且 xferlog_std_format=NO)或者(dual_log_enable=YES)时有意义。 注意:如果 syslog_enable=YES ,那么日志将被发送到系统日志记录器,而不会记录到这里指定的文件中。
xferlog_file=/var/log/xferlog 指定wu-ftpd风格的日志文件的路径。 仅在(xferlog_enable=YES 并且 xferlog_std_format=YES)或者(dual_log_enable=YES)时有意义。
|