linux(centos7)-----安装 FTP 服务

[复制链接]
发表于 2026-2-22 00:16:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
linux 安装 FTP 服务

目次


  • 一、先容
  • 二、工作模式
  • 三、体系设置
  • 四、安装方式
  • 五、认证模式
  • 六、小结和排查思绪
一、先容

文件传输协议(File Transfer Protocol,FTP),是一种在互联网中举行文件传输的协议,基于客户端/服务器模式,默认使用 20、21 号端口,此中 20 端口是数据端口用于举行数据传输,21 端口为下令端口,用于吸取客户端发出的干系 FTP 下令和参数。FTP 是 C/S 架构,也就是基于客户端/服务器的模式,FTP 服务器是按照 FTP 协议在互联网上提供文件存储和访问服务的主机,FTP 客户端则是向服务器发送毗连哀求,以创建数据传输链路的主机。
二、工作模式

FTP 协议工作模式有两种:主动模式和被动模式,此中被动模式是默认的工作模式。


  • 主动模式:FTP 服务器主动向客户端发起毗连哀求。
  • 被动模式:FTP 服务器等待客户端发起毗连哀求。
文件名称作用vsftpd.conf主设置文件ftpusers黑名单vsftpd_conf_migrate.sh迁移脚本user_list用户列表,与 userlist_enable 和 userlist_deny 选项干系三、体系设置

1、体系底子设置

  1. # 修改主机名为dopele
  2. hostnamectl set-hostname dopele
  3. # 关闭防火墙
  4. systemctl stop firewalld
  5. systemctl disable firewalld
  6. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  7. setenforce 0
  8. # 关闭25端口邮件
  9. systemctl stop postfix
  10. systemctl disable postfix
  11. # 解决ssh连接缓慢问题
  12. sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
  13. sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config
  14. sed -i -e '$a ClientAliveInterval 60' /etc/ssh/sshd_config
  15. sed -i -e '$a ClientAliveCountMax 5' /etc/ssh/sshd_config
  16. systemctl restart sshd
  17. # 安装vim telnet 等命令
  18. yum install -y vim net-tools telnet wget
复制代码
2、关闭 selinux 和防火墙

  1. # 临时关闭selinux
  2. setenforce 0
  3. # 永久关闭selinux
  4. vim /etc/selinux/config
  5. #将SELINUX=enforcing改为SELINUX=disabled,然后保存退出
  6. # 关闭firewalld
  7. systemctl stop firewalld
复制代码
3、检察 linux 用户

  1. # 1.查看/etc/passwd文件
  2. cat /etc/passwd
  3. # 2.使用getent命令
  4. getent passwd
  5. # 3.使用compgen命令  compgen -u 查询所有linux用户
  6. compgen -u
复制代码
四、安装方式

1、yum 在线安装方式

  1. # 查询是有安装ftp
  2. rpm -qa|grep vsftpd
  3. # 卸载 vsftpd
  4. yum remove vsftpd
  5. # yum安装ftp
  6. yum install -y vsftpd
复制代码

2、rpm离线安装方式

  1. # 查询是有安装ftp
  2. rpm -qa|grep vsftpd
  3. # 卸载 vsftpd
  4. yum remove vsftpd
  5. # 下载地址 http://www.rpmfind.net/linux/rpm2html/search.php?query=vsftpd
  6. wget http://www.rpmfind.net/linux/opensuse/distribution/leap/15.5/repo/oss/x86_64/vsftpd-3.0.5-150400.3.3.1.x86_64.rpm
  7. # rpm安装
  8. rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm
  9. # ftp下载地址 https://developer.aliyun.com/packageSearch
  10. wget https://mirrors.aliyun.com/centos-vault/6.8/os/x86_64/Packages/ftp-0.17-54.el6.x86_64.rpm?spm=a2c6h.13651111.0.0.3f2d2f70Jv3QSP&file=ftp-0.17-54.el6.x86_64.rpm
  11. rpm -ivh ftp-0.17-54.el6.x86_64.rpm
复制代码
3、启动查抄

  1. # 查看版本号信息
  2. vsftpd -v
  3. # 查看ftp状态
  4. systemctl status vsftpd.service
  5. # 启动ftp
  6. systemctl start vsftpd.service
  7. # 关闭ftp
  8. systemctl stop vsftpd.service
  9. # 查询端口
  10. ss -anp | grep 21
  11. # 不关闭设置SELinux
  12. getenforce
  13. # 临时关闭开启
  14. setenforce 0/1
  15. # 查看与ftp域相关的策略
  16. getsebool -a | grep ftp
  17. setsebool -P ftpd_full_access on
  18. # 不关闭防火墙的情况下
  19. firewall-cmd --permanent --zone=public --add-service=ftp
  20. firewall-cmd --reload
复制代码
五、认证模式

1、匿名用户访问设置

参数作用anonymous_enable=YES答应匿名访问模式anon_umask=002匿名用户上传文件的 umask 值anon_upload_enable=YES答应匿名用户上传文件anon_mkdir_write_enable=YES答应匿名用户创建目次anon_mkdir_write_enable=YES答应匿名用户修改目次名称或删除目次5.1.1 编辑设置文件
  1. vim /etc/vsftpd/vsftpd.conf
  2. # 编辑内容如下 其余可以删除
  3. # 允许匿名访问模式
  4. anonymous_enable=YES
  5. # 匿名用户上传文件的umask值
  6. anon_umask=002
  7. # 欢迎语设置
  8. dirmessage_enable=YES
  9. # 日志日志文件设置
  10. xferlog_enable=YES
  11. # 日志日志文件路径
  12. xferlog_file=/var/log/vsftpd.log
  13. # 指定FTP使用20端口进行数据传输,默认值为YES。
  14. connect_from_port_20=YES
  15. # 将日志日志文件写成xferlog的标准格式
  16. xferlog_std_format=YES
  17. # 与连接相关的设置设 置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为YES,此为默 认值。建议不要更改,有很多与服务器运行相关的配置命令,需要在此模式下才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受到xinetd 服务的管控,功能上会受到限制。
  18. listen=NO
  19. listen_ipv6=YES
  20. #使用tcp wrapper来控制主机访问
  21. tcp_wrappers=YES
  22. # 保存配置
  23. # 允许本地访问模式
  24. local_enable=YES
  25. # 允许本地用户写入访问模式
  26. write_enable=YES
  27. # 本地用户上传文件的umask值
  28. local_umask=022
  29. :wq!
复制代码
  1. 原有配置文件注释文件较多grep命令匹配出非注释的参数
  2. grep -v "^#" /etc/vsftpd/vsftpd.conf
  3. 原有配置文件注释文件较多grep去掉空格输出
  4. egrep -v "^#|^$" /etc/vsftpd/vsftpd.conf
复制代码
5.1.2 重启服务
  1. systemctl restart vsftpd.service
  2. systemctl enable vsftpd.service
复制代码
5.1.3 登录测试 账户名称为 anonymous 暗码空


2、当地访问设置

参数作用local_enable=YES答应当地用户模式write_enable=YES设置可写权限local_umask=022当地用户模式创建文件的 umask 值userlist_enable=YES启动"克制用户名单",名单文件为 ftpuser 和 user_listchroot_local_user=YES用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目次的上级目次。chroot_list_enable=YES在/etc/vsftpd.chroot_list 文件中列出的用户,可以切换到其他目次;未在文件中列出的用户,不能切换到其他目次。chroot_list_file=/etc/vsftpd/chroot_list设置是否启用 chroot_list_file 设置项指定的用户列表文件。默认值为 NO。5.2.1 条件设置创建当地用户和 目次
  1. # 创建ftp访问的目录
  2. mkdir -p /home/dopele
  3. # 为目录添加权限
  4. chmod -R 757 /home/dopele
  5. # 增加用户dopele
  6. useradd dopele -s /bin/bash
  7. # 为用户添加密码
  8. echo 123456 | passwd --stdin dopele
  9. # 修改该目录下的所属者为dopele
  10. chown -R dopele /home/dopele
  11. # 创建一个文件测试 地用户访问123.txt
  12. echo "this is ftp" > /home/dopele
复制代码
5.2.2 编辑设置文件
  1. vim /etc/vsftpd/vsftpd.conf
  2. 配置文件修改如下
  3. # 不允许匿名用户登录
  4. anonymous_enable=NO
  5. # 允许本地用户登录
  6. local_enable=YES
  7. # 允许写入
  8. write_enable=YES
  9. # 设置本地用户登录后的根目录
  10. local_root=/home/dopele/
  11. connect_from_port_20=YES
  12. # 是否将所有用户限制在登录根目录内
  13. chroot_local_user=YES
  14. # 是否锁定用户的chroot功能
  15. chroot_list_enable=YES
  16. # 设置锁定用户的列表文件
  17. chroot_list_file=/etc/vsftpd/chroot_list
  18. # 保存配置
  19. :wq!
复制代码
5.2.3 进入文件,将被锁定的用户 dopele 参加此中
  1. vim /etc/vsftpd/chroot_list
  2. 配置文件添加用户
  3. dopele
  4. # 保存配置
  5. :wq!
复制代码
5.2.4 重启服务
  1. systemctl restart vsftpd.service
复制代码
5.2.5 当地用户访问测试
3、假造用户访问的设置

参数作用guest_enable=YES开启假造用户guest_username=virtual指定假造用户账户allow_writeable_chroot=YES答应对禁固的 ftp 根目次实行写入操纵,而且不拒绝用户的登录哀求pam_service_name=vsftpd.vu指定 PAM 文件,存放在/etc/pam.d/目次下,默认的是 vsftpd 文件5.3.1 条件设置创建假造用户和目次
  1. # 创建用户并不允许shell登陆
  2. useradd user2 -s /sbin/nologin
  3. # 创建ftp访问的目录(这边测试创建了两个)
  4. mkdir -p /home/dopele /var/dopele1
  5. # 创建一个文件测试
  6. echo "this is dopele ftp" > /home/dopele/1.txt
  7. echo "this is dopele1 ftp" > /var/dopele1/2.txt
  8. # 修改该目录下的所属者为dopele
  9. chown dopele /home/dopele /var/dopele1
  10. # 为目录添加权限
  11. chmod  -R 755 /home/dopele /var/dopele1
复制代码
5.3.2 创建假造用户的文件
  1. vim /etc/vsftpd/vuser.list
  2. 修改内容如下 账户一行 密码一行
  3. dopele
  4. 123456
  5. dopele1
  6. 123456
复制代码
5.3.3 转化假造用户文件
  1. db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
  2. # 若提示没有命令安装即可
  3. yum -y install db4
  4. # 添加文件权限
  5. chmod 600 /etc/vsftpd/vuser.*
复制代码
5.3.4 创建用于用户登录时的 PAM 文件
  1. cd /etc/pam.d/
  2. # 复制一份系统自带的配置
  3. cp -p vsftpd vuser.vu
  4. # 编辑配置添加内容
  5. vim vuser.vu
  6. auth       sufficient   pam_userdb.so   db=/etc/vsftpd/vuser
  7. account    sufficient   pam_userdb.so   db=/etc/vsftpd/vuser
复制代码
5.3.5 修改设置文件
  1. vim /etc/vsftpd/vsftpd.conf
  2. 配置文件修改如下
  3. local_enable=YES
  4. # 虚拟用户登录PAM文件
  5. pam_service_name=vuser.vu
  6. guest_enable=YES
  7. # 虚拟用户名
  8. guest_username=dopele
  9. # 虚拟用户配置专用文件路径
  10. user_config_dir=/etc/vsftpd/vconfig
  11. virtual_use_local_privs=YES
复制代码
5.3.6 编辑假造用户设置专用文件
  1. # 创建文件路径
  2. mkdir /etc/vsftpd/vconfig
  3. # 编辑第一个用户文件dopele
  4. vim /etc/vsftpd/vconfig/dopele
  5. # ftp用户目录
  6. local_root=/home/dopel
  7. anon_world_readable_only=YES
  8. write_enable=NO
  9. anon_max_rate=500000
  10. # 编辑第二个用户文件dopele1
  11. # ftp用户目录
  12. local_root=/var/dopele2/
  13. write_enable=YES
  14. anon_upload_enable=YES
  15. anon_mkdir_write_enable=YES
  16. anon_other_write_enable=YES
  17. anon_max_rate=1000000
复制代码
5.3.7 重启服务
  1. systemctl restart vsftpd.service
复制代码
5.3.8 假造用户访问测试
六、小结和排查思绪

6.1 windows 使用工具大概当地 cmd 下令运行
6.2 linux 必要安装 ftp 下令才华实行
下令资助信息put上传文件get下载文件binary使用二进制举行传输ascii使用 ASCII 码举行传输timeout设置超时时间quit/bye退出verbose体现详细的处置处罚信息mget从远端主机吸取一批文件至本田主机。mput从远端主机上传一批文件至本田主机。6.3 排查思绪
从用户权限、目次权限、网络防火墙、SELinux 服务逐个排查
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表