vsftpd 常用功能参数配置及参数详解

1 配置超级服务

vi /etc/xinetd.d/vsftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
# 上面这个 server 的设定请依照您的主机环境来设定!
# 至于 server_args 则请写入您的 vsftpd 的配置文件完整名称即可!
per_source = 5 <==与同一 IP 的联机数目有关
instances = 200 <==同一时间最多的联机数目
no_access = 192.168.1.3
banner_fail = /etc/vsftpd/vsftpd.busy_banner
# 上面这个文件就是当主机忙碌中,则在 Client 端显示的内容!
log_on_success += PID HOST DURATION
log_on_failure += HOST
} [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
listen=NO

2 配置匿名用户

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
Table 1: 匿名用户配置
参数 说明
anonymous_enable=YES 是否允许匿名登录 yes=允许 no= 不允许
ftp_username=ftp 设置ftp匿名登录时的用户名,默认 ftp
no_anon_password=YES 匿名用户登录不需要输入密码 默认 YES
deny_email_enable=YES 以banned_email_file里面的电子邮件为密码的匿名用户不能登录
anon_root 匿名用户登录后的默认目录,不设置,默认为/var/ftp
anon_upload_enable=YES 允许匿名登录用户上传文件 默认NO
anon_mkdir_write_enable=YES 允许匿名登录用户创建目录 默认NO
anon_other_write_enable=NO 允许匿名用户有较高的写权限包括 删除目录和重命名等 默认NO
anon_world_readable_only=YES 允许匿名用户下载可读文件 默认YES , 设置为yes时只能下载不能直接在Ftp中阅读。
chown_uploads=YES 设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。

3 配置本地用户登录

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
#下面是允许某些用户登入的项目 存在user_list文件中的用户不允许登入
userlist_enable=YES
userlist_deny=YES #如果这里改为NO 反过来只能存在user_list文件中的用户允许登入
userlist_file=/etc/vsftpd/user_list
anonymous_enable=NO #下面是限制用户只能访问自己的主目录 存在chroot_list文件中的用户只能访问自己的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

4 配置虚拟用户登录

#创建虚拟用户的专用目录
[root@localhost ~]# mkdir /home/vsftpd/admin [root@localhost ~]# vi /etc/vsftpd/loginuser.txt
#加入两个用户 奇数行代表用户名 偶数行代表密码
admin
admin123 #执行命令 生成虚拟数据库
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/login.db
#设置数据库文件的访问权限
[root@localhost ~]# chmod 600 /etc/vsftpd/login.db
[root@localhost ~]# vi /etc/pam.d/vsftpd
#将以下内容增加的原文件前面两行:
auth required pam_userdb.so db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login
auth sufficient pam_userdb.so db=/etc/vsftpd/login
account sufficient pam_userdb.so db=/etc/vsftpd/login
#我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd 来启用的。 #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
#auth required pam_stack.so service=system-auth
#auth required pam_shells.so
#account required pam_stack.so service=system-auth
#session required pam_stack.so service=system-auth 可以看出前面两行是对虚拟用户的验证,后面是对系统用户的验证。 为了安全我一般把系统用户的登入关闭 使用虚拟账号登入ftp
对虚拟用户的验证使用了sufficient这个控制标志。
这个标志的含义是如果这个模块验证通过,就不必使用后面的层叠模块进行验证了;但如果失败了,
就继续后面的认证,也就是使用系统真实用户的验证。
虚拟用户创建本地系统用户 #新建一个系统用户vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统)
[root@localhost ~]# useradd vsftpd -d /home/vsftpd -s /bin/false
[root@localhost ~]# chown vsftpd:vsftpd /home/vsftpd #改变目录所属用户组 根据需要创建/etc/vsftpd/vsftpd.conf,以下设置:
listen=YES #监听为专用模式
anonymous_enable=NO #禁用匿名登入
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log #记录ftp操作日志
xferlog_std_format=YES
chroot_local_user=YES #对用户访问只限制在主目录 不能访问其他目录
guest_enable=YES #启用guest
guest_username=vsftpd #使用虚拟账号形式
user_config_dir=/etc/vsftpd/user_conf #虚拟账号配置目录
pam_service_name=vsftpd #对vsftpd的用户使用pam认证
local_enable=YES #执行以下命令
[root@localhost ~]# mkdir /etc/vsftpd/user_conf
[root@localhost ~]# cd /etc/vsftpd/user_conf
[root@localhost ~]# vi /etc/vsftpd/user_conf/admin
#加入以下内容 拥有所有权限
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/admin #如果不能读写操作 可能是目录权限不够需要设置权限 试试看
[root@localhost ~]# chmod 777 /home/vsftpd/admin

5 使用SSL登入

[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost ~]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
[root@localhost ~]#vi /usr/local/etc/vsftpd.conf
ssl_enable=YES(开启vsftpd对ssl协议的支持)
ssl_sslv2=YES(支持SSL v2 protocol)
ssl_sslv3=YES(支持SSL v3 protocol)
ssl_tlsv1=YES(支持TSL v1)
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem(证书的路径) ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES

这样重启vsftpd 就可以用客户端来尝试进行SSL加密连接了 。

相关参数说明:

Table 2: ssl 加密协议配置
参数 说明
allow_anon_ssl=NO 是否允许SSL连接,启用SSL后才可以使用此参数,默认NO
ssl_enable=NO 是否启用ssl 安全连接 默认NO 如果设置为yes,vsftpd。
  将启用openSSL,通过SSL支持安全连接和数据传输
force_local_logins_ssl=YES 是否对非匿名用户登录加密 默认yes
force_local_data_ssl=YES 是否对非匿名用户传输加密 默认yes
force_anon_logins_ssl=NO 匿名用户登录时是否加密 默认为no
force_anon_data_ssl=NO 匿名用户数据传输时是否加密 默认为no
ssl_sslv2=NO 是否开户sslv2协议。 默认NO ,如果设置为yes,
  前提为ssl_enable=YES
ssl_sslv3=NO 是否开户sslv3协议。 默认NO ,如果设置为yes,
  前提为ssl_enable=YES
dsa_cert_file 为ssl加密连接指定dsa证书位置 默认 无
ssl_ciphers 是否指定加密方式 默认 DES-CBC3-SHA

6 日志文件


参数 说明
dual_log_enable=NO # 是否启用双日志,默认NO 如果设置为yes,则分别在/var/log/xferlog、
  var/log/vsftpd.log里记录日志。前一个为wu-ftpd格式,可被通用工具
  分析,后一个为vsftpd的专用格式
xferlog_enable=YES # 激活上传和下传的日志 依赖 参数xferlog_std_format的设置
xferlog_std_format=YES # 使用标准格式记录上传、下传日志
syslog_enable=NO # 是否关闭vsftpd的日志并记录系统日志 默认NO ,如果设置为YES,系
  统日志会记录到/var/log/vsftpd.log,而VSFTPD的日志进程将停止。

7 传输模式


参数 说明
ascii_download_enable=YES 是否启用ascii模式下载文件 默认 NO
ascii_upload_enable=YES 是否启用ascii模式上传文件 默认 NO
async_abor_enable=NO 是否启用强制中止传输文件 默认 NO 启用此参数是为了
  免中止传输时的客户端挂死。只有特殊情况下才使用。
background=NO 是否后台启动vsftpd监听 默认 NO 启用后,VSFTPD将
  监听进程置于后台,当访问vsftpd服务时,console 会返
  回到shell 模式
check_shell=YES 检测是否有可用的shell环境 默认 YES
userlist_enable=YES 启用user_list 文件的检查 默认 NO 为YES时检查
  user_list文件中的用户列表,为NO 时不检测该文件
userlist_deny=NO 只有在userlist_enable 启用时有效,默认YES .
  YES: 表示user_list文件中的用户不允许登录ftp
  NO: 表示只允许user_list文件中的用户登录FTP

8 传输速率设置


参数 说明 默认值
anon_max_rate 匿名用户允许的最大传输速率 0秒
local_max_rate 本地认证用户的最大传输速率 0秒

9 超时设置


参数 说明 默认值
accept_timeout 尝试连接时间 60s
data_connection_timeout 数据传输延迟的最大时间,超过限制,会话将被终止 300s
idle_session_timeout 连接建立后,两次ftp命令之间的时间间隔,超时会话将被终止 300s

10 用户创建的文件的权限


参数 说明 默认值
anon_umask 匿名用户创建的文件的默认权限 022
local_umas 本地用户创建的文件的默认权限 022

11 连接数设置


参数 说明 默认值
max_clients 允许的最大连接数 0
max_per_ip 单个IP允许的最大连接数 0

12 端口设置


参数 说明 默认值
listen_port=21 FTP服务器建立连接所侦听的端口 21
ftp_data_port 数据传输所使用的默认端口 20
connect_from_port_20=YES 指定FTP数据传输连接使用20端口,设置为NO时,则进 NO
  行数据连接时,所使用的端口由ftp_data_port指定  
pasv_max_port=0 passive 模式下数据传输使用的端口上限 0
pasv_mim_port=0 passive 模式下数据传输使用的端口下限 0

13 用户访问权限

参数 说明
chroot_list_enable=YES 是否改变用户的根目录, 默认 NO。 当设置为YES时,需要以root
  用户做如下操作:
  mkdir /etc/vsftpd/userconf;
  cat >>$username<<eof
  local_root=$path
  EOF
  说明 "$username" 是需要改变默认根目录的用户比如用户aaa
  ,$path 为你想要用户aaa默认访问的路径 ,比如/data/aaa
chroot_list_enable=YES 设置是否启用chroot_list_file配置项指定的用户列表文件。
  默认值为NO
chroot_list_file=/etc/vsftpd/chroot_list 用于指定存储用户列表文件,该文件用于控制哪些用户只可以
  访问自己的根目录,不可以访问根路径的上级路径目录
chroot_local_user=YES 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
  通过搭配能实现以下多种效果。见表格下方。

①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到根路径的上级路径;未在文件中列出的用户,则不能切换。

②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到根路径的上级路径;未在文件中列出的用户,则可以切换。

③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到用户根路径的上级路径

④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到用户根路径的上级路径

Author: halberd.lee

Created: 2019-10-24 Thu 19:34

Validate

vsftpd 配置用户及根目录及其参数详解的更多相关文章

  1. vsftpd 配置:chroot_local_user与chroot_list_enable userlist_enable userlist_deny详解

    默认情况下,如果设置了 userlist_enable=YES,当 userlist_deny 选项设置为 YES 的时候,userlist_file=/etc/vsftpd.userlist 中列出 ...

  2. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  3. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  4. reids配置参数详解

    转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行, ...

  5. nginx配置参数详解

    配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍 ...

  6. Redis配置参数详解

    Redis配置参数详解 /********************************* GENERAL *********************************/ // 是否作为守护进 ...

  7. MHA配置参数详解 【转】

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  8. HAproxy 配置参数详解

    HAproxy 配置参数详解 /etc/haproxy/haproxy.cfg # 配置文件 ----------------------------------------------------- ...

  9. rsync的介绍及参数详解,配置步骤,工作模式介绍

    rsync的介绍及参数详解,配置步骤,工作模式介绍 rsync是类unix系统下的数据镜像备份工具.它是快速增量备份.全量备份工具. Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主 ...

随机推荐

  1. RabbitMQ 功能

    学习完了rabbitmq总一下 RabbitMQ依赖的语言 erlang 第一它可以实现不同程序之间的程序信息储存交互,在易用性.扩展性.高可用性的方面不俗. rabbitmq相当于一个中间人,我们同 ...

  2. win10家庭版设置移动热点出现“我们无法设置移动热点”

    寝室wifi卡到爆炸,  买了一个360随身WiFi,可是360随身WiFi烧坏了  ...然后我就一个星期没玩游戏了 今天本来想开电脑的wifi试一试,结果发现无法设置热点 纳闷了 百度一下,发现都 ...

  3. 2.02_Python网络爬虫分类及其原理

    一:通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫是捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联 ...

  4. Android使用WebView打包网页成app

    原生app的开发成本和网页相比相对较高,所以越来越多的app使用网页来作为界面,甚至完全将一个网站封装成app,可以提高开发速度,还能基本实现跨平台. 下面以Android为例,在ubuntu-14. ...

  5. Hdu 4661 树上拓扑序计数

    #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ; ; ], nxt[MAXM << ...

  6. CSS基础学习 17.CSS动画

  7. c++ 用eclipse建立一个类,并实例化并运行

    新建项目 file->new->c/c++ project 项目结构 cpc.cpp //================================================= ...

  8. P3254——DP&&入门

    题目 给定一个$n \times m$的$01$矩形,选择其中为$1$的位置,要求互不相邻,问方案数. 解决方案 直接dp因为状态较多,数组很难直接表示出来,我们采用二进制状态压缩存储. 用$dp[i ...

  9. 单独使用ibatis做事物控制。

    当项目中,只使用到了ibatis而没有使用spring来作为事物控制的时候,可以这样写: try { Reader reader = Resources.getResourceAsReader(&qu ...

  10. JavaScript创建函数的三种方式

    ㈠函数(function) ⑴函数也是一个对象 ⑵函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码) ⑶函数中可以保存一些代码在需要的时候调用 ⑷使用typeof检查一个函数对象时,会返 ...