• Vsftp安装配置(超详细版)


    目录

    1 FTP、Vsftp介绍

     1.1 FTP介绍

     1.2 Vsftp介绍

     1.3 Vsftp的登录类型

    2 Vsftp安装配置

     2.1 更换源

     2.2 安装epel源

     2.3 安装Vsftpd及相关依赖

     2.4 vsftpd配置文件说明

     2.5 vsftpd 配置详解

     2.6 备份配置文件

    3 vsftpd 配置匿名用户

     3.1 编辑配置文件

     3.2 常用的匿名FTP配置项

     3.3 启动vsftp服务 

     3.4 登录验证

     3.5 修改权限上传

      3.5.1 修改权限

      3.5.2 上传文件

    4 vsftp配置本地(系统)用户

     4.1 创建测试用户

     4.2 修改配置文件

     4.3 常用的本地用户FTP配置项

     4.4 添加用户到白名单

     4.5 登录测试

    5 vsftp配置虚拟用户

     5.1 建立虚拟FTP用户账号

     5.2 创建虚拟用户文件

     5.3 创建数据文件

     5.4 建立支持虚拟用户的PAM认证文件

     5.5 修改配置文件

     5.6 常用的全局配置项

     5.7 为用户建立独立的配置目录及文件

     5.8 创建虚拟用户数据存放位置

     5.9 重启vsftp服务

     5.10 登录测试


    1 FTP、Vsftp介绍

     1.1 FTP介绍

    FTP协议,即文件传输协议(File Transfer Protocol),是一种用于在网络上进行文件传输的协议。它是一种传输文件的标准方式,可以将文件在网络上的不同计算机之间进行传递和下载。FTP协议是TCP/IP协议族中的一个应用层协议。它利用客户端-服务器模型,通过两个不同的端口进行通信。FTP客户端通过21号端口连接到FTP服务器,然后在20号端口上进行数据传输。FTP协议支持多种认证方式,包括明文、口令、SSL/TLS等。FTP在文件传输方面已经得到广泛的应用,它被用于管理网站网页,进行软件升级和备份等。 

    FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之
    为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
    目前主流的FTP服务器端软件包括: Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd

     1.2 Vsftp介绍

    VSFTP,全称为Very Secure FTP,是一种高度安全的FTP服务器软件。它是一款针对安全和性能进行优化的FTP服务器,拥有速度快、稳定、易用和安全性高的特点。VSFTP是在GPL许可证下发布的自由软件,可以在大多数类UNIX系统中使用。VSFTP支持IPv6、SSL/TLS加密传输,同时还提供了多种认证方式,包括本地用户、PAM、LDAP等等。同时,VSFTP也支持虚拟用户和虚拟目录,便于管理员进行用户管理。总之,VSFTP是一款功能强大且安全性高的FTP服务器软件,深受系统管理员和开发者的欢迎。

     1.3 Vsftp的登录类型

    VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录,匿名用户也是虚拟用户,映射的系统用户为ftp详细信息可以通过man vsftpd.conf(手册)查看。

    2 Vsftp安装配置

     2.1 更换源

    将你这台机器的本地源换成国内的阿里的源。(在后面的安装过程相对较快)

    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

     2.2 安装epel源

    yum -y install epel-release

    如图即表示安装成功~

     2.3 安装Vsftpd及相关依赖

    yum -y install vsftpd* pam* db4*

    vsftpd: ftp软件

    pam: 认证模块

    db4: 支持文件数据库

    显示“完毕!”字样即表示安装成功!

     2.4 vsftpd配置文件说明

    配置文件

    作用

    /etc/vsftpd/vsftpd.conf

    vsftpd的核心配置文件

    /etc/vsftpd/ftpusers

    用于指定哪些用户不能访问FTP服务器

    /etc/vsftpd/user_list

    指定允许使用vsftpd的用户列表文件

    /etc/vsftpd/vsftpd_conf_migrate_sh

    是vsftpd操作的一些变量和设置脚本

    /etc/ftp/

    默认情况下匿名用户的根目录

     2.5 vsftpd 配置详解

    属性

    属性值

    含义

    anonymous_enable

    YES/NO

    是否允许匿名用户(anonymous)登录FTP,如果该设置被注释,则默认允许。

    local_enable

    YES/NO

    是否允许本地系统用户登录

    write_enable

    YES/NO

    是否开启任何形式的FTP写入命令,上传文件

    local_umask

    xxx

    本地用户的umask设置,如果注释该设置则默认为077,但一般都设置成022

    anon_upload_enable

    YES/NO

    是否允许匿名用户上传文件,如果要设置为允许,则需要先开启write_enable,否则无效,此外对应目录还要具有写权限

    anon_mkdir_write_enable

    YES/NO

    是否允许匿名用户创建新目录

    dirmessage_enable

    YES/NO

    当进入某个目录时,发送信息提示给远程用户

    xferlog_enable

    YES/NO

    是否开启上传/下载的日志记录

    connect_from_port_20

    YES/NO

    是否使用20端口来连接FTP

    chown_uploads

    YES/NO

    匿名上传的文件时是否由某一指定用户chown_username所有

    chown_username

    有效用户名

    匿名上传的文件由该设定用户所有

    xferlog_file

    有效路径

    设置日志文件的保存位置,默认为/var/log/xferlog

     2.6 备份配置文件

    vsftpd修改配置前备份配置文件。(如果不备份,配置错误后,要把文件、用户删除掉,非常麻烦)

    进入/etc/vsftpd/中

    cd /etc/vsftpd/

    ls命令查看

    清空/tmp/

    cd /tmp/
    rm -rf *

    cd -:返回进入此目录之前所在目录

    cd -

    开始备份

    cp vsftpd.conf{,.bak}

    ls命令查看,发现多出vsftpd.conf.bak

    3 vsftpd 配置匿名用户

     3.1 编辑配置文件

    vi vsftpd.conf

    进入后会发现很多注释(带#的),需要修改如下内容,但是很麻烦,建议直接全部删除,直接输入如下内容。

    1. write_enable=YES
    2. anon_umask=022
    3. anonymous_enable=YES
    4. anon_upload_enable=YES
    5. anon_mkdir_write_enable=YES
    6. anon_other_write_enable=YES
    7. dirmessage_enable=YES
    8. xferlog_enable=YES
    9. connect_from_port_20=YES
    10. xferlog_std_format=YES
    11. listen=YES
    12. pam_service_name=vsftpd
    13. userlist_enable=YES
    14. tcp_wrappers=YES

    拓展 

    如果使用vsftp的是本地用户,对应修改配置文件中的 local_umask 的值。
    如果使用vsftp的是匿名用户,对应修改配置文件中的 anon_umask 的值。

     3.2 常用的匿名FTP配置项

    anonymous_enable=YES                        # 是否允许匿名用户访问
    anon_umask=022                                    # 匿名用户所上传文件的权限掩码
    anon_root=/var/ftp                                   # 设置匿名用户的FTP根目录
    anon_upload_enable=YES                     # 是否允许匿名用户上传文件
    anon_mkdir_write_enable=YES              # 是否允许匿名用户创建目录

    anon_other_write_enable=YES          # 是否允许匿名用户有其他写入权 (改名,删除,覆盖)
    anon_max_rate=0                                    # 限制最大传输速率(字节/秒) 0为无限制

     3.3 启动vsftp服务 

    重新启动vsftpd服务

    systemctl restart vsftpd

    【如果此时报错一定是因为刚才配置文件内写错了,重新回去编辑。】

    查看是否有vsftpd进程。

    方法一:

    ps aux | grep vsftpd

     方法二:

    先下载好net工具

    yum -y install net-tools

    查看

    netstat -lnpt | grep vsftpd

     3.4 登录验证

    方法一:工具访问

    使用Xftp工具登录。(需要提前下载)

    进入Xftp后点击建立连接,主机输入IP地址,端口号改为21,点击连接。出现FTP用户身份验证窗口,点击匿名用户登录--确定。

    出现pub文件夹,说明我们成功啦~

    方法二:浏览器访问

    首先先关闭好防火墙。

    systemctl stop firewalld

    在浏览器中输入ftp://+IP地址访问。【每个人IP不一样,不知道IP地址的使用ip a命令查看】

    ftp://+IP地址

     3.5 修改权限上传

      3.5.1 修改权限

    进入/var/ftp/中

    cd /var/ftp/

    ls命令查看下

    查看pub文件夹的属主和属组

    ll -d pub/

    修改属主和属组

    chown -R ftp.ftp pub/ 

    修改完成后重新查看下,root变成ftp即表示修改成功。

    修改完成后,一定不要忘记重新启动vsftpd服务(不重启服务不生效)

    systemctl restart vsftpd

      3.5.2 上传文件

    方法一:Xftp工具

    关闭刚才打开的连接窗口,重新登录。(因为修改了属主和属组)

    还是使用匿名登录,登录成功后,进入到pub目录,右击桌面的“新建RTF文档”--传输,在pub目录下出现“新建RTF文档.rtf”文件,说明我们成功啦!

    这时候也可以使用ls命令查看。

    方法二:浏览器

    先创建个文件abc.txt

    touch /var/ftp/abc.txt

    还是使用ftp://+IP地址访问浏览器。

    出现abc.txt文件,说明我们成功啦~

    4 vsftp配置本地(系统)用户

     4.1 创建测试用户

    创建两个用户zhansan、lisi

    useradd zhansan
    useradd lisi

    设置密码

    passwd zhansan
    passwd lisi

     4.2 修改配置文件

    vi /etc/vsftpd/vsftpd.conf

    将原有内容删除,编辑如下内容:

    1. local_enable=YES
    2. local_umask=077
    3. chroot_local_user=YES
    4. allow_writeable_chroot=YES
    5. write_enable=YES
    6. dirmessage_enable=YES
    7. xferlog_enable=YES
    8. connect_from_port_20=YES
    9. xferlog_std_format=YES
    10. listen=YES
    11. pam_service_name=vsftpd
    12. userlist_enable=YES
    13. userlist_deny=NO
    14. tcp_wrappers=YES

     编辑完成后保存退出。

    重新启动vsftp服务

    systemctl restart vsftpd

    【如果遇到:Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.情况,请查看另一篇文章解决:http://t.csdnimg.cn/TXZhw

     4.3 常用的本地用户FTP配置项

    local_enable=YES                        # 是否允许本地系统用户访问

    local_umask=077                         #本地用户所上传文件的权限掩码

    local_root=/var/ftp                         # 设置本地用户的FTP根目录

    chroot_list_enable=YES                # 表示是否开启chroot的环境,默认没有开启

    chroot_list_file=/etc/vsftpd/chroot_list                 # 表示写在/etc/vsftpd/chroot_list文件里面的用户 是不可以出chroot环境的,默认是可以的。
    Chroot_local_user=YES                 # 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。

    local_max_rate=0                          # 限制最大传输建率(字节/秒) 0为无限制

     4.4 添加用户到白名单

    vi /etc/vsftpd/user_list

    在文件中最后添加zhangsan和lisi

    1. zhansan
    2. lisi

     添加完成后重新启动vsftp服务

    systemctl restart vsftpd

     4.5 登录测试

    方法一:使用Xftp工具

    再次使用匿名登录,发现登录不上去,显示“用户身份验证失败是否要重试”页面。

    点击否。

    在“FTP用户身份验证”页面用户名输入zhangsan或者lisi,输入密码登录。

    cd /home/lisi/

    创建zhangsan.txt文件 

    touch lisi.txt

     重新启动vsftp服务

    systemctl restart vsftpd

     重新启动后在Xftp工具中再重新登录一下。

    发现出现lisi.txt文件,成功!

    方法二:使用Xshell工具

    点击新建

    出现如下界面,名称随便起一个,主机输入IP地址。然后点击连接。

     在如下界面输入用户名lisi,并选择记住用户名。

    输入密码。选择记住密码并点击确认。 

     进入后我们ls命令查看,发现没有文件。

    我们跟方法一中一样在root用户下创建lisi.txt文件并重新启动vsftp服务,然后进行查看。

    root用户终端

    lisi用户终端

    发现本来没有,现在出现lisi.txt文件,说明我们成功啦~

    5 vsftp配置虚拟用户

     5.1 建立虚拟FTP用户账号

    useradd -s /sbin/nologin vu

     5.2 创建虚拟用户文件

    cd /etc/vsftpd/
    vi user

     添加如下内容:

    1. zhao
    2. 12345
    3. zhang
    4. 12345

    奇数行代表用户名,偶数行代表密码。【切记,如下账号和密码不能写在同一行中】

     5.3 创建数据文件

    通过 db_load工具创建出 Berkeley DB 格式的数据库文件。

    db_load -T -t hash -f user user.db

    -f                  指定数据原文件
    -T                 允许Berkeley DB的应用程序使用文本格式转换的DB数据文件
    -t hash          读取文件的基本方法

    ls命令查看。

    出现user.db,证明我们成功啦

     5.4 建立支持虚拟用户的PAM认证文件

    vi /etc/pam.d/vsftpd.vu

    编写配置文件,最后的路径不要写错!

    1. auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
    2. account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user

    【对应刚才生成user.db文件 】

     5.5 修改配置文件

    vi vsftpd.conf

    编写如下内容。 

    1. write_enable=YES
    2. dirmessage_enable=YES
    3. xferlog_enable=YES
    4. connect_from_port_20=YES
    5. xferlog_std_format=YES
    6. listen=YES
    7. userlist_enable=YES
    8. tcp_wrappers=YES
    9. allow_writeable_chroot=YES
    10. guest_enable=YES
    11. guest_username=vu
    12. pam_service_name=vsftpd.vu
    13. local_enable=YES
    14. local_umask=077
    15. chroot_local_user=YES
    16. virtual_use_local_privs=YES
    17. user_config_dir=/etc/vsftpd/user_dir

     5.6 常用的全局配置项

    listen=YES                                #是否以独立运行的方式监听服务

    listen_address=192.168.10.112               #设置监听FTP服务的IP地址

    listen_port=21                                 #设置监听FTP服务的端口号

    write_enable=YES                        #是否启动写入权限(上传、删除文件)

    download_enable=YES                   #是否允许下载文件

    dirmessage_enable=YES                #用户切换目录显示.message文件

    xferlog_enable=YES                        # 启用日志文件,记录到/var/log/xferlog

    xferlog_std_format=YES    # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式

    connect_from _port_20=YES        # 允许服务器主动模式 (从20端口建立数据连接)

    pasv_enabTe=YES                        # 允许服务器被动模式
    pasv_max_port=24600                   # 设置被动模式服务器的最大端口号
    pasv_min_port=24500                        # 设置黄动模式服务的最小端口
    pam_service_name=vsftpd                # 用户认证的PAM文件位置

    (/etc/pam.d/vsftpd.vu)

    userlist_enable=YES                        # 是否启用user_list列表文件
    userlist_deny=YES                        # 是否禁用user_list中的用户

    max_cIients=0                                #限制并发客户端连接数

    max_per_ip=0                                # 限制同一IP地址的井发连接数
    tcp_wrappers=YES                        #是否启用tcp_wrappers主机访问控制

    chown_username=root                #表示匿名用户上传的文件的拥有人是root,默认关闭

    ascii_upload_enable=YES           # 表示是否允许用户可以上传一个二进制文件,默认不允许

    ascii_download_enable=YES        #代表是否允许用户下载个一个二进制文件,默认不允许
    nopriv_user=vsftpd                        #设置支撑vsftpd服务的宿主用户为手动建立的vsftpd用户

    async_abor_enable=YES                # 设定支持异步传输功能
    ftpd_banner=welcome to Awei FTP servers          # 设定vsftpd的登录标语
    guest_enable=YES                        # 设置启用虚拟用户功能

    guest_username=ftpuser                 #指定虚拟用户的宿主用户

    virtual_use_local_privs=YES                # 设定虚拟用户的权限符合他们的宿主用户

    user_config_dir=/etc/vsftpd/vconf        # 设定虚拟用户个人vsftp的配置文件存放路径

     5.7 为用户建立独立的配置目录及文件

    mkdir /etc/vsftpd/user_dir

    ls命令查看

    进入刚创建的文件夹

    cd /etc/vsftpd/user_dir

     vi zhao用户

    vi zhao

    输入如下命令(虚拟用户数据的存放路径) 

    local_root=/etc/vsftpd/data

     5.8 创建虚拟用户数据存放位置

    cd ..返回上一目录

    cd ..

    创建data目录

    mkdir data

    授权

    chmod 777 data/

     5.9 重启vsftp服务

    systemctl restart vsftpd

     5.10 登录测试

    使用Xftp工具,用户名zhao,密码12345,进行登录。

    cd /etc/vsftpd/data

    创建一个zhao.txt文件夹。

    touch zhao.txt

    重点:

    本地用户和虚拟用户不能同时登录、因为认证方式只有一种

    本地是 pam_service_name =vsftpd

    虚拟是 pam_service_name =vsftpd.vu

    Xftp工具中重新登录一下,发现有zhao.txt文件,即说明成功啦~

    id zhao

    查看是否有zhao用户,没有得啦,O(∩_∩)O哈哈~

    创作不易,给个三连吧~

  • 相关阅读:
    国产开发板——香橙派Kunpeng Pro的上手初体验
    Istio服务网格进阶⑤:Istio服务网格的流量管理之服务熔断
    Java集合面试题&知识点总结(上篇)
    【计算机方向】通信、算法、自动化、机器人、电子电气、计算机工程、控制工程、计算机视觉~~~~~合集!!!
    Master JavaScript Coding
    golang入门笔记——pprof性能分析
    【Designing ML Systems】第 11 章 :机器学习的人性方面
    有色噪声干扰下Hammerstein非线性系统两阶段辨识
    Linux简单安装ffmpeg 实现用PHP压缩音频
    《计算机体系结构量化研究方法》1.7 可信任度
  • 原文地址:https://blog.csdn.net/m0_64304713/article/details/133790019