Linux详细搭建 vsftpd 服务

1.FTP服务简介
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文件传输协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在FTP的使用当中,用户经常遇到两个概念下载(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件,由于FTP的文件传输是明文方式,具有一定危险性,所以就诞生了一种更加安全的传输方式vsftp,下面主要介绍vsftp的特性及相关配置。



2.VSFTP是一个比FTP更安全的软件具有以下特点:

(1)vsftp一般以普通用户运行,降低了进程的权限,提高了安全性
(2)任何需要执行较高权限的指令都需要上层程序的许可
(3)ftp的命令都被整合到了vsftp中,不需要系统额外提供命令
(4)用于chroot功能,可以改变用户的根目录,限制用户只能在自己的家目录
(5)vsftpd 是一个基于GPL发布的FTP服务器软件。其中的vs是“ Very Secure”的缩写,由此名称缩写可以看出,本服务器的初衷就是服务的安全性。
(6)vsftpd是RedHat Linux默认使用的ftp服务端软件。
(7)vsftpd不再依赖于xinetd服务
(8)vsftpd可同时允许匿名( anonymous )与本地用户(local)访问,还可以支持虚拟用户。



3.vsftpd连接类型

命令连接:TCP 21,用于发送FTP命令信息

数据连接:TCP 20,用于上传、下载数据



4.vsftpd工作模式
主动模式:(服务端通过20号端口主动向客户端进行连接,来进行数据传输)
1.命令连接:客户端(1025) -----> 服务端 (21)
客户端以一个随机端口(大于1023)来连接服务端的21号端口
2.数据连接:服务器端(20/tcp)-----> 客户端 (1025+1)
服务端以自己的20号端口去连接客户端创建命令连接时使用的随机端口+1的端口号

被动模式:(服务端启动随机端口,等待客户端进行连接,来进行数据传输)
1.命令连接:客户端(1110)----> 服务端(21)
客户端以一个随机端口来连成服务端的21号端口
2.数据连接:客户端(1110+1) ----> 服务端(随机端口)

5.vsftpd配置
/etc/pam.d/vsftpd //vsftpd用户认证配置文件
/etc/vsftpd/ //配置文件目录
/etc/vsftpd/vsftpd.conf //主配置文件

vsftpd常见的配置参数:

参数 作用
anonymous_enable=YES 启用匿名用户登入
anon_upload_enable=YES 允许匿名用户上传
anon_mkdir_write_enable=YES 允许匿名用户创建目录,但是不能删除
anon_other_write_enable=Y ES 允许匿名用户创建和删除目录
local_enable=YES 启用本地用户登入
write_enable=YES 允许本地用户有写权限
local_umask=022 通过ftp上传文件的默认遮罩码
chroot_local_user=YES 禁锢所有的ftp本地用户于其家目录中
chroot_list_enable=YES 开启禁锢文件列表 需要与chroot_list_file参数一起使用
chroot_list_file=/etc/vsftpd/ chroot_list 指定禁锢列表文件路径 在此文件里面的用户将禁锢在其家目录中
allow_writeable_chroot=YE S 允许被禁锢的用户家目录有写权限
xferlog_enable=YES 是否启用传输日志,记录ftp传输过程
xferlog_std_format=YES 传输日志是否使用标准格式
xferlog_file=/var/log/xferlog 指定传输日志存储的位置
chown_uploads=YES 是否启用改变上传文件属主的功能
chown_username=whoever 指定要将上传的文件的属主改为那个用户 此用户必须在系统中存在
pam_service_name=vsftpd 指定vsftpd使用/etc/pam.d下的哪个pam配置文件进行用户认证
userlist_enable=YES 是否启用控制用户登录的列表文件;默认为/etc/vsftpd/user_list文件
userlist_deny=YES 是否拒绝userlist指定的列表文件中存在的用户登录ftp
max_clients=# 最大并发连接数
max_per_ip=# 每个IP可同时发起的并发请求数
anon_max_rate 匿名用户的最大传输率,单位是“字节/秒”
local_max_rate 本地用户的最大传输率,单位是“字节/秒”
dirmessage_enable=YES 启用某目录下的.message描述信息 假设有一个目录为/upload,在其下创建一个文件名为.message, 在文件内写入一些描述信息,则当用户切换至/upload目录下时会自动显示.message文件中的内容
message_file 设置访问一个目录时获得的目录信息文件的文加名,默认是.message
idle_session_timeout=600 设置默认的断开不活跃session时间
data_connection_timeout=1 20 设置数据传输超时时间
ftpd_banner="Welcome to c henlf FTP service." 定制欢迎信息,登录ftp时会自动显示


6.用户认证
ftp的用户主要有三种:
虚拟用户:仅用于访问某特定服务中的资源
系统用户:可以登入系统的真实用户
匿名用户



7.vsftpd虚拟用户配置步骤如下(演示)

    关闭防火墙
         //安装依赖的程序
    [[email protected] ~]# cd /etc/yum.repos.d/
    [[email protected] ~]# yum install -y wget
    [[email protected] yum.repos.d]# wget  http://mirrors.163.com/.help/CentOS7-Base-163.repo
    [[email protected] ~]# yum clean all
    [[email protected] ~]# yum -y install epel-release
    [[email protected] ~]# yum install -y vsftpd db4*
            //创建文本格式的用户名,密码列表
    [[email protected] ~]# cat >> /etc/vsftpd/vu.list << EOF
    lan
   123
    zhi
   123
   EOF

         //将刚创建的文本格式的用户名和密码文件使用db4工具转换成数据库文件
   [[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db

         //给虚拟用户的文件权限为600,以免数据外泄
[[email protected] ~]# chmod 600 /etc/vsftpd/vu.*
[[email protected] ~]# ll /etc/vsftpd/vu.*
    -rw-------. 1 root root 12288 Aug 2 15:53 /etc/vsftpd/vu.db
    -rw-------. 1 root root 18 Aug 2 15:50 /etc/vsftpd/vu.list

    //给虚拟用户的映射账号,映射账号的名称为vftp
    [[email protected] ~]# useradd -d /var/ftproot -s /sbin/nologin vftp
    [[email protected] ~]# chmod 755 /var/ftproot/
    [[email protected] ~]# ll -d /var/ftproot/
    drwxr-xr-x. 2 vftp vftp 62 Aug 2 15:56 /var/ftproot/

    //为虚拟用户建立PAM认证
     [[email protected] ~]# mv /etc/pam.d/vsftpd{,.bak}
     [[email protected] ~]# vim /etc/pam.d/vsftpd
    #%PAM-1.0
    auth required pam_userdb.so db=/etc/vsftpd/vu
    account required pam_userdb.so db=/etc/vsftpd/vu

            //修改vsftpd配置文件,添加虚拟用户支持。为不同虚拟用户建立独立的配置文件
    [[email protected] ~]# cp /etc/vsftpd/vsftpd.conf .
    [[email protected] ~]# cat >> /etc/vsftpd/vsftpd.conf << EOF
    guest_enable=YES
    guest_username=vftp
    user_config_dir=/etc/vsftpd/vusers_dir
    allow_writeable_chroot=YES
    EOF

            //有了上述配置后,可以在/etc/vsftpd/vusers_dir目录中为每个虚拟用户分别建立配置文件了
    [[email protected] ~]# mkdir /etc/vsftpd/vusers_dir
    [[email protected]ng ~]# ll /etc/vsftpd/
    total 36
    -rw-------. 1 root root 125 Mar 23 2017 ftpusers
    -rw-------. 1 root root 361 Mar 23 2017 user_list
    -rw-------. 1 root root 5106 Aug 2 16:01 vsftpd.conf
    -rwxr--r--. 1 root root 338 Mar 23 2017 vsftpd_conf_migrate.sh     -rw-------. 1 root root 12288 Aug 2 15:53 vu.db
    -rw-------. 1 root root    18 Aug  2 15:50 vu.list
    drwxr-xr-x. 2 root root     6 Aug  2 16:03 vusers_dir

            //设置lan用户可以上传文件,创建目录,删除操作
    [[email protected] ~]# cat >> /etc/vsftpd/vusers_dir/lan << EOF
    >anon_umask=022
    >anon_upload_enable=YES
    >anon_mkdir_write_enable=YES
    >anon_other_write_enable=YES
    >EOF

            //设置zhi用户只要默认的下载权限,只需创建一个名为zhi的空文件即可
    [[email protected] ~]# touch /etc/vsftpd/vusers_dir/zhi

        //启动vftpd服务
    [[email protected] ~]# systemctl start vsftpd

8.通过脚本来实现虚拟用户配置以及实现文件共享功能

         [[email protected] ~]#vim ftp.sh
        #!/bin/bash
        #关闭防火墙
        systemctl disable firewalld
        systemctl stop firewalld
        sed -ri ‘s#^(SELINUX=).*#\1disabled#g‘ /etc/selinux/config
        setenforce 0

       #安装依赖的程序
      cd /etc/yum.repos.d/
      mv * /tmp/
      curl -o 163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo &>/dev/null
      sed -i ‘s/\$releasever/7/g‘ /etc/yum.repos.d/163.repo
      sed -i ‘s/enabled=0/enabled=1/g‘                   /etc/yum.repos.d/163.repo
      yum clean all && yum install -y epel-release && yum install -y vsftpd db4* &>/dev/null

     #添加两个用户lan、zhi 密码分别为123、123
     cat > /etc/vsftpd/vu.list << EOF
     lan
    123
     zhi
    123
    EOF
    #使用db4工具转换成数据库文件
    db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
    #给虚拟用户设置文件权限为600
    chmod 600 /etc/vsftpd/vu.*
    #给虚拟用户映射账号 创建ftp根目录     映射账号的名称为  vftp
   id vftp &>/dev/null
   if [ $? -ne 0 ];then
   useradd -d /var/fenxiang -s /sbin/nologin vftp
else
   userdel -r vftp
   useradd -d /var/fenxiang -s /sbin/nologin vftp
fi
  chmod 755 /var/fenxiang/
 #为虚拟用户建立PAM认证
 mv /etc/pam.d/vsftpd{,.bak}
 cat > /etc/pam.d/vsftpd << EOF
 #%PAM-1.0
 auth required pam_userdb.so db=/etc/vsftpd/vu
 account required pam_userdb.so db=/etc/vsftpd/vu
 EOF
 #修改Vsftpd主配置文件
 cp /etc/vsftpd/vsftpd.conf /root/
 cat >> /etc/vsftpd/vsftpd.conf << EOF
 guest_enable=YES
 guest_username=vftp
 user_config_dir=/etc/vsftpd/yonghu
 allow_writeable_chroot=YES
 EOF
#配置虚拟用户lan的权限 上传 下载 删除
if [ ! -d /etc/vsftpd/yonghu ];then
mkdir /etc/vsftpd/yonghu
fi
cat > /etc/vsftpd/yonghu/lan << EOF
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
touch /etc/vsftpd/yonghu/zhi
systemctl restart vsftpd

原文地址:http://blog.51cto.com/13833047/2158299

时间: 2025-01-09 00:07:26

Linux详细搭建 vsftpd 服务的相关文章

在Linux上搭建samba服务后,到Windos上访问不了共享目录的问题排障

今天在linux下搭建samba服务时,出现了几个问题,经过多次努力尝试,终于顺利解决问题:在linux上搭建samba服务,编译 vim /etc/samba/smb.conf完成后:1>在Windos上测试访问共享的目录时,错误提示如下 2>在浏览器上输入:file://192.168.1.103/sanshi,访问后还是同样的错误3>在linux上访问,如下提示[[email protected] ~]# smbclient //192.168.1.103/sanshiWARNIN

Linux下搭建VPN服务

转载需注明原文地址 http://mushapi.com/vpn-server-on-linux.html 最近google封锁的愈发严实了,所以不得不考虑弄个常备的VPN了.之前也用过买的vpn但是我用的那家vpn的官网也被封锁了,所以只能自己动手喽-本文是我安装完成后根据记忆写的,可能有不准确的地方,欢迎留言告诉我. 一.安装所需软件 在linux上搭建一个vpn server需要有iptables.ppp.pptpd.其中iptables和ppp可以直接通过yum安装. 1 yum ins

图文详解linux如何搭建lamp服务环境

企业网站建设必然离不开服务器运维,一个稳定高效的服务器环境是保证网站正常运行的重要前提.本文小编将会详细讲解Linux系统上如何搭建配置高效的lamp服务环境,并在lamp环境中搭建起企业自己的网站. 先简要概述下本文要点:(操作系统采用CentOS6.5 x64) 1.分别安装搭建lamp服务环境: 2.采用lamp一键安装包搭建环境: 3.在lamp环境中初步搭建起一个网站: 一.             分别安装搭建lamp服务环境 准备工作: 1.配置防火墙,开启80端口.3306端口

linux下搭建tomcat服务

从上节我们知道了tomcat并且由他引申出了java虚拟机JDK,今天我们来详细了解下,并学习搭建这个java服务. 我说下我对这个服务的看法,这个服务在实际生产中金融公司运用的比较多,为什么呢? Tomcat是Apache 软件基金会(Apache SoftwareFoundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.因为Tomcat 技术先进.性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为

linux下搭建ftp服务

操作系统:centos7.0 64位 使用vsftpd搭建ftp服务 1.yum install vsftpd 2.启动/重启/关闭vsftpd服务器[[email protected] ftp]# /sbin/service vsftpd restartShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]OK表示重启成功了.启动和关闭分别把restart改为start/stop即可.如果是源码安装的,到安装文件夹下找到st

Linux系统搭建Tactic服务

TACTIC是一个高度灵活的基于Web生产资产管理系统,用于解决复杂的数字内容创作.通过数字资产管理与项目管理,TACTIC保证数据安全,通过团队的进度.项目的日历表,创造更多的数字内容. TACTIC目前被用于不同类型与规模的内容创建团队,包括小队,工作室,大型组织的电影创作团队,视觉特效,后期制作,游戏开发,广告,市场营销,创新服务. 在linux搭建tactic服务,有两种方法第一种是http://community.southpawtech.com/tactic-sys-admin_sy

Linux下搭建DNS服务

Linux下搭建DNS服务器 注:本文主要侧重DNS的配置,原理的话会另发一篇文章~ 一.DNS(域名系统)作用和原理 1.  DNS的作用: 正向解析:根据域名查找对应的IP地址 反向解析:根据IP地址找对应的域名 2.  DNS的工作模式: 递归查询 迭代查询 3.  域名结构 分层式的结构,且上层只管理下层域名,便于管理维护. 二.BIND服务简介 1.Linux下常用的DNS服务是BIND(BerkeleyInternet Name Domain) 官方站点:https://www.is

JAVAEE——宜立方商城07:Linux上搭建Solr服务、数据库导入索引库、搜索功能的实现

1. 学习计划 1.Solr服务搭建 2.Solrj使用测试 3.把数据库中的数据导入索引库 4.搜索功能的实现 2. Solr服务搭建 2.1. Solr的环境 Solr是java开发. 需要安装jdk. 安装环境Linux. 需要安装Tomcat. 2.2. 搭建步骤 第一步:把solr 的压缩包上传到Linux系统 第二步:解压solr. 第三步:安装Tomcat,解压缩即可. 第四步:把solr部署到Tomcat下. 第五步:解压缩war包.启动Tomcat解压. tail -f ../

linux中搭建ftp服务配置

Liunx ftp搭建设置本地用户权限 查看用户列表发现root在里面,在里面的无法登陆FTP服务器,所以要删除查看vsftpd服务删除root管理用户因为匿名用户登录为root无法进行文件创建和删除 查看ftp服务是否启动,如果没有启动则要启动登录ftp服务器验证 原文地址:http://blog.51cto.com/13956368/2171857