• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    FTP服务器的搭建及配置文件的使用详解

    发布者: 皮3591 | 发布时间: 2025-8-15 23:04| 查看数: 77| 评论数: 0|帖子模式

    FTP简介

    文件传输协议FTP(File Transfer FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。
    FTP协议
    FTP是TCP/IP的协议簇协议之一,其主要功能是借助网络实现远距离主机间的文件传输。

    1.使用Vsftpd服务器

    Vsftpd (Very Secure FTP)是linux系统的常用软件。

    1.1 Vsftpd的服务器的安装与启动

    Vsftpd在yum源中的名称就是叫做vsftpd
    1. yum install -y vsftpd* //*代表下载所有关于vsftpd的软件包
    复制代码

    1.2 Vsftpd服务器的用户类型

    Vsftpd的用户类型主要分为匿名用户、本地用户和虚拟用户。
    (1)匿名用户:如果Vsftpd服务器提供匿名访问功能,默认的匿名访问用户为anonymous或ftp,密码为空,匿名用户登录后进入到工作目录是/var/ftp
    (2)本地用户:本地用户信息存储在/etc/passwd文件中,本地用户输入用户名和密码后可登录vsftpd,并且直接进入该用户的宿主目录。
    (3)虚拟用户:旨在vsftpd服务器中拥有账号,并且该账号只能用于文件传输服务的专有用户,也称guest用户。该类用户可以通过输入用户名和密码进行授权登录。

    2. Vsftpd服务器的测试

    FTP服务器的运行模式基于服务器、客户端,服务器安装完Vsftpd软件包后,可以通过客户端进行测试。
    1.首先下载vsftpd与其相关的服务
    1. yum install -y vsftpd* ftp*
    复制代码
    2.然后打开ftp服务的端口,使防火墙放行ftp服务
    1. firewall-cmd --zone=public --add-port=21/tcp --per
    2. systemctl restart vsftpd firewalld
    复制代码
    3.在虚拟机上以匿名用户身份进行测试,使用ftp命令,后面输入本机的ip地址,用户名是ftp,密码是空,登录过程如下。
    1. [root@linux2 ~]# ftp 192.168.123.102
    2. Connected to 192.168.123.102 (192.168.123.102).
    3. 220 (vsFTPd 3.0.2)
    4. Name (192.168.123.102:root): ftp
    5. 331 Please specify the password.
    6. Password:
    7. 230 Login successful.
    8. Remote system type is UNIX.
    9. Using binary mode to transfer files.
    10. ftp>
    11. ftp> ls
    复制代码
    以上命令中的192.168.123.102是vsftpd服务器的ip地址
    终端打印信息“230 Login successful. ”说明登录成功

    3.FTP常用的命令

    命令说明ls查看服务器当前目录的文件mkdir 【目录名】在服务器新建目录put 文件名向服务器上传指定的一个文件mput 文件名列表向服务器上传多个文件chmod改变服务器中的文件权限?或help显示内部命令的帮助信息open 域名或IP地址建立于指定服务器的连接close终止远端的进程,返回命令状态bye或quit推出服务器
    4.Vsftp服务器的配置文件

    配置基本的Vsftpd服务器比较简单,只需要正确安装了Vsftpd软件,直接启动Vsftpd并放行端口就行了,但是如果想要更进一步的搭建Vsftpd服务,那就要掌握Vsftpd服务器的配置文件。
    文件说明/etc/vsftpd/vsftpd.confVsftpd服务器主配置文件/etc/vsftpd/ftpusers禁止访问Vsftp服务器的用户名单/etc/vsftpd/user_list指定用户能否访问FTP服务器取决于userlist_deny选项的设置/etc/vsftpd/chroot_list目录访问控制文件 下面对这几个文件进行详细说明

    1.vsftpd.conf文件

    vsftpd.conf位于/etc/vsftpd目录下,与大多数配置文件一样,vsftpd.conf文件中以符号”#“开始注释信息,我们可以用Vim等工具对它进行修改。在Vsftpd中去掉注释,显示该文件的配置内容如下:
    1. [root@linux2 ~]# grep -v "#" /etc/vsftpd/vsftpd.conf
    2. anonymous_enable=YES
    3. local_enable=YES
    4. write_enable=YES
    5. local_umask=022
    6. dirmessage_enable=YES
    7. xferlog_enable=YES
    8. connect_from_port_20=YES
    9. xferlog_std_format=YES
    10. listen=NO
    11. listen_ipv6=YESpam_service_name=vsftpd
    12. userlist_enable=YES
    13. tcp_wrappers=YES
    复制代码
    下面对该文件中的常用选项进行介绍,合理使用这些选项是保障FTP安全稳定的前提
    选项说明anonymous_enable设置是否允许匿名用户登录服务器local_enable设置是否允许本地用户登录服务器write_enable设置是否允许写操作local_umask设置本地用户创建文件的umask值anon*_upload_enable*设置是否允许匿名用户上传文件anon*_mkdir_write_enable*设置是否允许匿名用户建立目录xferlog_enable是否激活日志功能chown_uploads修改匿名用户上传文件的所有者chown_username=whoever启用chown_uploads=YES时,指定为主用户账户,whoever表示你的ftp用户chroot*_local_user*设置是否将所有用户限制在其主目录chroot*_list_enable*设置是否启用限制用户的名单chroot*_list_file*设置是否限制/排除主目录下的用户名单,限制/排除有chrootlocaluser值决定allow*_writeable_choot*设置chroot目录的写权限
    2.ftpusers文件

    /etc/vsftpd/ftpusers文件用于指定不能访问vsftp服务器的用户列表,此文件在格式中采用每个用户一行的形式,其中包含的用户通常是系统的超级用户和系统用户

    3.user_list文件

    /etc/vsftpd/userlist 文件也用于保留用户列表,指定的用户能否访问vsftp服务取决于userlistdeny选项的参数,当userlist_deny选项的参数=YES时,此文件中写入的所有用户都将无法登录vsftp服务,想都别想,但是当userlist_deny=No时,这些用户就起来了,那就表示只有这些用户能够访问vsftp服务,所以一定要注意这个选项的参数。非常重要。
    如果要限制一些指定的本地用户不能访问FTP服务,则可以添加以下内容来做到:
    1. 进入/etc/vaftpd/vsftpd.conf 末行添加
    2. userlist_enable=YES
    3. userlist_deny=YES
    4. userlistfile=/etc/vsftpd/user_list
    5. 进入/etc/vsftpd/user_list 添加你需要拒绝访问的本地用户
    6. toto (意为指定用户 每个指定用户单独占一行)
    复制代码
    如果需要指定几个本地用户才能访问FTP服务,则可以添加以下内容来做到:
    1. 进入/etc/vaftpd/vsftpd.conf 末行添加
    2. userlist_enable=YES
    3. userlist_deny=NO
    4. userlistfile=/etc/vsftpd/user_list
    5. 进入/etc/vsftpd/user_list 添加你需要拒绝访问的本地用户
    6. toto (意为指定用户 每个指定用户单独占一行)
    复制代码

    4.chroot_list文件

    默认情况下,匿名用户会被锁定在默认FTP目录中,而本地用户却可以访问自己主目录以外的内容,出于安全考虑,通过chroot_list文件可以限制用户只能访问其主目录,也可以实现使用不同哟ing胡不仅能访问自己的目录也可以访问主目录以外的内容。
    chrootlist文件设计chrootlocaluser和chroot*_list_enable两个选项*
    chroot*_list_file默认指向/etc/ sftpd/chroot_list*
    chroot_list文件的功能有两个


    • 是限制用户名单中的用户只能在其主目录中


    • 名单中的用户不仅能访问自己的主目录,还能跳出主目录,访问其它的目录。
    1. 当chroot*_list_enable=YES时,chroot_list中的用户只能在本目录中*
    2. 当chroot*_list_enable=NO时,chroot_list中的目录可以访问除主目录以外的内容*
    复制代码

    5.Vsftp服务器的使用

    前面介绍了Vsftpd服务器的安装,启动及主要的配置文件,下面通过具体的实例来介绍该服务器的具体应用。

    1.匿名用户访问Vsfto服务器

    本次实验环境为Centos7 服务器的IP地址为192.168.123.101 主机名为linux1
    第一步:安装Vsftp服务及开启该服务
    1. yum install -y vsftpd
    2. systemctl restart vsftpd
    复制代码
    使用ftp匿名用户登录,如下所示:
    1. [root@linux2 ~]# ftp 192.168.123.101
    2. Connected to 192.168.123.101 (192.168.123.101).
    3. 220 (vsFTPd 3.0.2)
    4. Name (192.168.123.101:root): ftp
    5. 331 Please specify the password.
    6. Password:
    7. 230 Login successful.
    8. Remote system type is UNIX.
    9. Using binary mode to transfer files.
    10. ftp>
    11. ftp> ls
    12. 227 Entering Passive Mode (192,168,123,101,101,29).
    13. 150 Here comes the directory listing.
    14. drwxr-xr-x    2 0        0               6 Oct 13  2020 pub
    15. 226 Directory send OK.
    复制代码
    登录成功,使用ls命令浏览默认的FTP目录 (/var/ftp)
    1、首先在FTP默认目录/var/pub中创建两个文本文件1.txt和2.txt
    1. [root@ayaka ~]# cd /var/ftp/pub/
    2. [root@ayaka pub]# touch 1.txt
    3. [root@ayaka pub]# touch 2.txt
    4. [root@ayaka pub]# ls
    5. 1.txt 2.txt
    复制代码
    2、在客户端上进入/pub目录
    1. ftp> ls
    2. 227 Entering Passive Mode (192,168,123,101,75,103).
    3. 150 Here comes the directory listing.
    4. -rw-r–r-- 1 0 0 0 May 09 10:37 1.txt
    5. -rw-r–r-- 1 0 0 0 May 09 10:37 2.txt
    复制代码
    将Vsftpd服务器上文件下载到客户端
    进入pub目录 使用get命令将文件1.txt与2.txt下载到当前目录下,下载成功的过程如下
    1. 220 (vsFTPd 3.0.2)
    2. Name (192.168.123.101:root): ftp
    3. 331 Please specify the password.
    4. Password:
    5. 230 Login successful.
    6. Remote system type is UNIX.
    7. Using binary mode to transfer files.
    8. ftp> cd pub
    9. 250 Directory successfully changed.
    10. ftp> ls
    11. 227 Entering Passive Mode (192,168,123,101,25,132).
    12. 150 Here comes the directory listing.
    13. -rw-r--r--    1 0        0              50 May 09 10:54 1.txt
    14. -rw-r--r--    1 0        0               0 May 09 10:37 2.txt
    15. 226 Directory send OK.
    16. ftp> !pwd
    17. /root
    18. ftp> get 1.txt
    19. local: 1.txt remote: 1.txt
    20. 227 Entering Passive Mode (192,168,123,101,145,74).
    21. 150 Opening BINARY mode data connection for 1.txt (50 bytes).
    22. 226 Transfer complete.
    23. 50 bytes received in 0.000134 secs (373.13 Kbytes/sec)
    24. ftp> !ls
    25. 1  1.txt  anaconda-ks.cfg
    26. ftp>
    复制代码
    测试在Vsftp服务器创建目录
    1. ftp> mkdir toto
    2. 550 Permission denied.
    3. ftp
    复制代码
    通过以上操作可以得出:在默认情况下,匿名用户一般只有从服务器服务器下载文件的权限,不能上传文件或进行其它操作
    那如何让他变得有权限呢,接下来我们来配置vsftpd使得有上传文件或进行其它操作
    更改vsftpd.conf文件,开启匿名用户上传,创建目录权限
    将如下两个参数取消注释
    1. 29 #anon_upload_enable=YES //允许匿名文件上传文件
    2. 34 #anon_mkdir_write_enable=YES //允许匿名用户建立目录
    复制代码
    取消注释后保存并退出 重启vsftpd服务让它生效
    1. systemctl restart vsftpd
    复制代码
    创建匿名用户上传目录
    需要在/var/ftp目录下创建一个目录,修改目录的权限,让匿名用户具有写权限
    1. [root@ayaka pub]# mkdir /var/ftp/hub
    2. [root@ayaka pub]# chmod o+w /var/ftp/hub
    复制代码
    上传目录
    使用put命令把本地文件上传到FTP服务器上,具体过程如下。
    1. [root@linux2 ~]# ftp 192.168.123.101
    2. Connected to 192.168.123.101 (192.168.123.101).
    3. 220 (vsFTPd 3.0.2)
    4. Name (192.168.123.101:root): ftp
    5. 331 Please specify the password.
    6. Password:
    7. 230 Login successful.
    8. Remote system type is UNIX.
    9. Using binary mode to transfer files.
    10. ftp> cd hub                          //进入目录hub
    11. 250 Directory successfully changed.
    12. ftp> !ls                        //执行本机Shell命令,显示当前内容
    13. 1  1.txt  anaconda-ks.cfg  file1.txt
    14. ftp> put 1                   //上传文件1
    15. local: 1 remote: 1
    16. 227 Entering Passive Mode (192,168,123,101,176,227).
    17. 150 Ok to send data.
    18. 226 Transfer complete.
    19. 1664 bytes sent in 0.000814 secs (2044.23 Kbytes/sec)
    20. ftp> ls -l          //查看hub目录中的文件列表
    21. 227 Entering Passive Mode (192,168,123,101,85,50).
    22. 150 Here comes the directory listing.
    23. -rw-------    1 14       50           1664 May 09 11:26 1
    24. 226 Directory send OK.
    25. ftp> mkdir tomato                        //创建目录
    26. 257 "/hub/tomato" created                                //创建目录成功
    27. ftp> ls
    28. 227 Entering Passive Mode (192,168,123,101,99,18).
    29. 150 Here comes the directory listing.
    30. -rw-------    1 14       50           1664 May 09 11:26 1
    31. drwx------    2 14       50              6 May 09 11:35 tomato
    32. 226 Directory send OK.
    33. ftp>
    复制代码

    2.本地用户访问Vsftp服务器

    本地用户是在FTP服务器上拥有用户账户的用户,相当于FTP服务器中的真实实际用户,其通过输入自己的账号和口令来进行授权登录,当用户成功登录服务器后,其登录目录为用户的主目录,用户的权限对该主目录的操作权限,可以下载也可以上传文件。
    下面我们将用实例来介绍本地用户登录服务器下载,上传文件的过程。
    本地用户访问Vsftp服务器,本例Vsftp服务器的ip地址为192.168.123.101 客户端主机名为Client
    Vsftp服务器建立用户ftpuser,并在用户的家目录建立文件toto和yoyo 命令如下
    1. [root@ayaka pub]# useradd ftpuser
    2. [root@ayaka pub]# echo “123” | passwd --stdin ftpuser //设置ftpuser的密码为123
    3. [root@ayaka pub]# su - ftpuser //登录用户ftpuser
    4. [ftpuser@ayaka ~]$ touch toto.txt
    5. [ftpuser@ayaka ~]$ touch yoyo.txt
    复制代码
    使用本地用户登录Vsftpd服务器后,其登录目录为用户的主目录/home/ftpuser,具体过程如下
    1. [root@linux2 ~]# ftp 192.168.123.102
    2. Connected to 192.168.123.102 (192.168.123.102).
    3. 220 (vsFTPd 3.0.2)
    4. Name (192.168.123.102:root): ftpuser
    5. 331 Please specify the password.
    6. Password:
    7. 530 Login incorrect.
    8. Login failed.
    9. ftp> ^Z
    10. [2]+  已停止               ftp 192.168.123.102
    11. [root@linux2 ~]#
    12. [root@linux2 ~]# ftp 192.168.123.101
    13. Connected to 192.168.123.101 (192.168.123.101).
    14. 220 (vsFTPd 3.0.2)
    15. Name (192.168.123.101:root): ftpuser
    16. 331 Please specify the password.
    17. Password:
    18. 230 Login successful.
    19. Remote system type is UNIX.
    20. Using binary mode to transfer files.
    21. ftp> ls
    22. 227 Entering Passive Mode (192,168,123,101,56,176).
    23. 150 Here comes the directory listing.
    24. -rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt
    25. -rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt
    26. 226 Directory send OK.
    27. ftp> pwd
    28. 257 "/home/ftpuser"
    29. ftp>
    复制代码
    创建目录
    用户ftpuser创建目录tomato,具体操作如下
    1. ftp> mkdir tomato
    2. 257 "/home/ftpuser/tomato" created
    3. ftp> ls
    4. 227 Entering Passive Mode (192,168,123,101,244,9).
    5. 150 Here comes the directory listing.
    6. drwxr-xr-x    2 1000     1000            6 May 09 11:52 tomato
    7. -rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt
    8. -rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt
    9. 226 Directory send OK.
    10. ftp>
    复制代码
    上传本地文件
    用户ftpuser上传本地文件到服务器指定目录,具体操作如下:
    1. ftp> !ls -l
    2. 总用量 16
    3. -rw-r--r--. 1 root root 1664 10月 23 2020 1
    4. -rw-r--r--. 1 root root   50 5月   9 18:56 1.txt
    5. -rw-------. 1 root root 1295 5月   7 19:16 anaconda-ks.cfg
    6. -rw-r--r--. 1 root root    7 5月   9 19:20 file1.txt
    7. ftp> !pwd
    8. /root
    9. ftp> put anaconda-ks.cfg                                //上传本地文件
    10. local: anaconda-ks.cfg remote: anaconda-ks.cfg
    11. 227 Entering Passive Mode (192,168,123,101,101,125).
    12. 150 Ok to send data.
    13. 226 Transfer complete.
    14. 1295 bytes sent in 0.00108 secs (1194.65 Kbytes/sec)
    15. ftp> ls -l                                //浏览远程目录,验证上传文件是否为本地文件
    16. 227 Entering Passive Mode (192,168,123,101,149,213).
    17. 150 Here comes the directory listing.
    18. -rw-r--r--    1 1000     1000         1295 May 09 11:55 anaconda-ks.cfg
    19. drwxr-xr-x    2 1000     1000            6 May 09 11:52 tomato
    20. -rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt
    21. -rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt
    22. 226 Directory send OK.
    23. ftp>
    复制代码
    下载服务器文件到本地
    用ftpuser下载文件toto到本地当前目录下,下载文件yoyo到本地目录/tmp下,并且重命名为toto.bak 具体操作如下
    1. ftp> get toto
    2. local: toto remote: toto
    3. 227 Entering Passive Mode (192,168,123,101,206,168).
    4. 550 Failed to open file.
    5. ftp> ls
    6. 227 Entering Passive Mode (192,168,123,101,98,221).
    7. 150 Here comes the directory listing.
    8. -rw-r--r--    1 1000     1000         1295 May 09 11:55 anaconda-ks.cfg
    9. drwxr-xr-x    2 1000     1000            6 May 09 11:52 tomato
    10. -rw-rw-r--    1 1000     1000            0 May 09 11:44 toto.txt
    11. -rw-rw-r--    1 1000     1000            0 May 09 11:44 yoyo.txt
    12. 226 Directory send OK.
    13. ftp> get toto.txt           //下载文件到本地目录
    14. local: toto.txt remote: toto.txt
    15. 227 Entering Passive Mode (192,168,123,101,46,209).
    16. 150 Opening BINARY mode data connection for toto.txt (0 bytes).
    17. 226 Transfer complete.
    18. ftp> !ls -l                                        //浏览本地目录,验证下载文件操作是否成功
    19. 总用量 16
    20. -rw-r--r--. 1 root root 1664 10月 23 2020 1
    21. -rw-r--r--. 1 root root   50 5月   9 18:56 1.txt
    22. -rw-------. 1 root root 1295 5月   7 19:16 anaconda-ks.cfg
    23. -rw-r--r--. 1 root root    7 5月   9 19:20 file1.txt
    24. -rw-r--r--. 1 root root    0 5月   9 19:59 toto.txt
    25. // 下载文件yoyo.txt 到 本地目录/tmp下 并重命名为yoyo.bak
    26. tp> get yoyo.txt /tmp/yoyo.bak
    27. local: /tmp/yoyo.bak remote: yoyo.txt
    28. 227 Entering Passive Mode (192,168,123,101,46,136).
    29. 150 Opening BINARY mode data connection for yoyo.txt (0 bytes).
    30. 226 Transfer complete.
    31. ftp> lcd /tmp   进入本地目录/tmp
    32. Local directory now /tmp
    33. ftp> !ls   //浏览验证本地目录是否有yoyo.bak
    34. ks-script-e7_otA                                                         yoyo.bak
    35. systemd-private-7da9c4fa89d64f18a66b1cf3053c3ff6-chronyd.service-JoFutU  yum.log
    36. vmware-root_797-4257069498
    37. ftp>
    复制代码
    到此这篇关于FTP服务器的搭建与文件目录的使用详解的文章就介绍到这了,更多相关FTP服务器搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表